Assembly Diffs

linux arm64

Diffs are based on 2,496,508 contexts (1,011,240 MinOpts, 1,485,268 FullOpts).

MISSED contexts: base: 6,580 (0.26%), diff: 8,842 (0.35%)

Overall (+83,870,420 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,871,176 +1,853,104
benchmarks.run_pgo.linux.arm64.checked.mch 78,212,264 +9,478,376
benchmarks.run_tiered.linux.arm64.checked.mch 29,580,048 +1,053,584
coreclr_tests.run.linux.arm64.checked.mch 508,462,256 +8,571,516
libraries.crossgen2.linux.arm64.checked.mch 55,593,716 +4,881,684
libraries.pmi.linux.arm64.checked.mch 74,364,484 +7,112,432
libraries_tests.run.linux.arm64.Release.mch 382,265,760 +38,543,372
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 162,857,060 +10,214,900
realworld.run.linux.arm64.checked.mch 15,282,328 +1,884,512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,924,168 +276,940

FullOpts (+83,870,420 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,524,920 +1,853,104
benchmarks.run_pgo.linux.arm64.checked.mch 54,230,224 +9,478,376
benchmarks.run_tiered.linux.arm64.checked.mch 4,958,828 +1,053,584
coreclr_tests.run.linux.arm64.checked.mch 159,633,064 +8,571,516
libraries.crossgen2.linux.arm64.checked.mch 55,592,080 +4,881,684
libraries.pmi.linux.arm64.checked.mch 74,244,500 +7,112,432
libraries_tests.run.linux.arm64.Release.mch 166,844,084 +38,543,372
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 149,377,064 +10,214,900
realworld.run.linux.arm64.checked.mch 14,708,176 +1,884,512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,923,180 +276,940

Example diffs

benchmarks.run.linux.arm64.checked.mch

-16 (-5.33%) : 29244.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)

@@ -17,9 +17,9 @@ ; V06 tmp4 [V06,T07] ( 4, 2.50) ref -> x0 ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> x4 class-hnd exact single-def "Inlining Arg" <System.Type[]>
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> x0 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V11 cse0 [V11,T04] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -33,30 +33,20 @@ G_M13201_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M13201_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M13201_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x4, [x0] ; gcrRegs +[x4] ldrsb wzr, [x19]
- mov w0, wzr - add x1, x4, #16 - ; byrRegs +[x1] - ;; size=28 bbWeight=1 PerfScore 8.50 -G_M13201_IG03: ; bbWeight=4, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M13201_IG11 - add w0, w0, #1 - cmp w0, #0 - ble G_M13201_IG03 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M13201_IG04: ; bbWeight=1, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - ; byrRegs -[x1] - mov x0, x19
+ add x0, x4, #16 + ; byrRegs +[x0] + ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + cbz x0, G_M13201_IG09 + mov x0, x19
mov w1, #20 mov x2, xzr mov w3, #3 @@ -69,17 +59,17 @@ G_M13201_IG04: ; bbWeight=1, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=000 ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- cbnz x21, G_M13201_IG09 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbnz x21, G_M13201_IG07 + ;; size=76 bbWeight=1 PerfScore 26.00 +G_M13201_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20-x21] mov x0, xzr ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13201_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - cbnz x0, G_M13201_IG10
+G_M13201_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbnz x0, G_M13201_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M13201_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -90,14 +80,14 @@ G_M13201_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M13201_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M13201_IG06: ; bbWeight=0.50, 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.50 PerfScore 2.50
-G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M13201_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20-x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -126,16 +116,16 @@ G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380 blr x5 ; gcrRegs -[x3 x21] ; gcr arg pop 0
- b G_M13201_IG06
+ b G_M13201_IG04
;; size=72 bbWeight=0.50 PerfScore 9.25
-G_M13201_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13201_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13201_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -154,7 +144,7 @@ G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 24, PerfScore 69.50, instruction count 75, allocated bytes for code 300 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
+; Total bytes of code 284, prolog size 24, PerfScore 49.00, instruction count 71, allocated bytes for code 284 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
; ============================================================ Unwind Info: @@ -165,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.41%) : 6564.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,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

-16 (-3.54%) : 4583.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)

@@ -16,10 +16,10 @@ ; V05 tmp2 [V05,T03] ( 3, 6 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.String> ; V06 tmp3 [V06,T09] ( 2, 4 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Type> ; V07 tmp4 [V07,T04] ( 3, 6 ) ref -> x5 class-hnd "Inlining Arg" <System.Type[]>
-; V08 tmp5 [V08,T00] ( 5, 17 ) int -> x0 "Inline stloc first use temp"
+;* V08 tmp5 [V08,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; V10 tmp7 [V10,T10] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; V12 cse1 [V12,T08] ( 4, 4 ) long -> x20 "CSE - aggressive" ; ; Lcl frame size = 8 @@ -89,25 +89,14 @@ G_M50779_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov x5, x23 ; gcrRegs +[x5] ldrsb wzr, [x21]
- cbz x22, G_M50779_IG10 - mov w0, wzr - add x1, x5, #16 - ; byrRegs +[x1] - ;; size=152 bbWeight=1 PerfScore 45.00 -G_M50779_IG03: ; bbWeight=4, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x23] - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M50779_IG11 - add w0, w0, #1 - cmp w0, #0 - ble G_M50779_IG03 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M50779_IG04: ; bbWeight=1, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - ; byrRegs -[x1] - mov x0, x21
+ cbz x22, G_M50779_IG08 + add x0, x5, #16 + ; byrRegs +[x0] + ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + cbz x0, G_M50779_IG09 + mov x0, x21
mov x1, x22 ; gcrRegs +[x1] mov w2, #52 @@ -118,13 +107,13 @@ G_M50779_IG04: ; bbWeight=1, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=000 ldr x7, [x7, #0x90] ldr x7, [x7, #0x38] blr x7
- ; gcrRegs -[x1 x5 x21-x22]
+ ; gcrRegs -[x1 x5 x21-x23]
; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M50779_IG06 - ;; size=48 bbWeight=1 PerfScore 14.50 -G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M50779_IG04 + ;; size=204 bbWeight=1 PerfScore 63.00 +G_M50779_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -136,7 +125,7 @@ G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 and w0, w0, #7 cmp w0, #6
- bne G_M50779_IG06
+ bne G_M50779_IG04
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -148,12 +137,24 @@ G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M50779_IG08
+ beq G_M50779_IG06
;; size=72 bbWeight=0.50 PerfScore 13.00
-G_M50779_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50779_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] mov x0, xzr ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50779_IG05: ; 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=20 bbWeight=0.50 PerfScore 3.00 +G_M50779_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M50779_IG07: ; bbWeight=0.50, epilog, nogc, extend ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -161,19 +162,7 @@ G_M50779_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M50779_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M50779_IG09: ; 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=20 bbWeight=0.50 PerfScore 3.00 -G_M50779_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50779_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -191,7 +180,7 @@ G_M50779_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M50779_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50779_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -209,7 +198,7 @@ G_M50779_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 24, PerfScore 108.00, instruction count 113, allocated bytes for code 452 (MethodHash=33a639a4) for method ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 436, prolog size 24, PerfScore 87.50, instruction count 109, allocated bytes for code 436 (MethodHash=33a639a4) for method ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -220,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 22854.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M39152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M39152_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M39152_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M39152_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M39152_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M39152_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M39152_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M39152_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M39152_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M39152_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M39152_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M39152_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M39152_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M39152_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M39152_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M39152_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M39152_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M39152_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M39152_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M39152_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M39152_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M39152_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M39152_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M39152_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M39152_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M39152_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M39152_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 31671.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 28604.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M57541_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57541_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M57541_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x1C] cmp w1, w3 bge G_M57541_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M57541_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M57541_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M57541_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M57541_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M57541_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57541_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M57541_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M57541_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M57541_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M57541_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M57541_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M57541_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x1C] + cmp w1, w3 + bge G_M57541_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M57541_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M57541_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M57541_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M57541_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M57541_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M57541_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M57541_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M57541_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #24 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M57541_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M57541_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- 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 (-6.62%) : 95626.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,56 +9,57 @@ ; 4 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 8.11) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 7, 6 ) byref -> x20 single-def
+; V00 this [V00,T00] ( 9, 8.03) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 7, 6 ) byref -> x20 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T06] ( 4, 4 ) int -> x22 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> x23 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T11] ( 4, 2 ) ref -> x21 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T01] ( 7, 10.87) int -> x22 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T12] ( 3, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T10] ( 5, 2.05) int -> x23 "Inline stloc first use temp" -; V14 tmp10 [V14,T16] ( 4, 1.21) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T05] ( 4, 4.09) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T10] ( 4, 2.02) int -> x22 "Inline stloc first use temp" +; V14 tmp10 [V14,T16] ( 4, 1.19) ref -> x23 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.94) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T21] ( 4, 0.24) ref -> x0 "guarded devirt return temp"
+; V17 tmp13 [V17,T21] ( 4, 0.21) ref -> x0 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V22 tmp18 [V22,T09] ( 4, 2.19) int -> x23 "Inline stloc first use temp"
+; V22 tmp18 [V22,T09] ( 4, 2.19) int -> x22 "Inline stloc first use temp"
;* V23 tmp19 [V23,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp20 [V24,T04] ( 4, 4.70) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V24 tmp20 [V24,T03] ( 4, 4.70) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> ; V26 tmp22 [V26,T19] ( 7, 0.88) ref -> x0 "guarded devirt return temp" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V28 tmp24 [V28,T22] ( 4, 0.04) int -> x23 "Inline stloc first use temp"
+; V28 tmp24 [V28,T24] ( 4, 0.04) int -> x22 "Inline stloc first use temp"
;* V29 tmp25 [V29,T17] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP ; V30 tmp26 [V30,T13] ( 2, 2 ) ref -> x21 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T14] ( 2, 2 ) int -> x23 single-def "field V07._index (fldOffset=0x10)" P-INDEP -; V32 tmp28 [V32,T15] ( 2, 2 ) int -> x22 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP -; V33 cse0 [V33,T08] ( 3, 2.19) long -> x2 "CSE - conservative" -; V34 cse1 [V34,T20] ( 3, 0.26) long -> x25 "CSE - conservative"
+; V31 tmp27 [V31,T14] ( 2, 2 ) int -> x22 single-def "field V07._index (fldOffset=0x10)" P-INDEP +; V32 tmp28 [V32,T15] ( 2, 2 ) int -> x23 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP +; V33 cse0 [V33,T22] ( 2, 0.09) long -> x2 "CSE - conservative" +; V34 cse1 [V34,T20] ( 3, 0.23) long -> x24 "CSE - conservative" +; V35 cse2 [V35,T08] ( 3, 2.19) long -> x24 "CSE - conservative" +; V36 cse3 [V36,T23] ( 2, 0.05) int -> x22 "CSE - conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M57630_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x8 ; byrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M57630_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x18] ; gcrRegs +[x0] @@ -67,14 +68,13 @@ G_M57630_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M57630_IG25
+ bne G_M57630_IG21
ldr x21, [x0, #0x18] ; gcrRegs +[x21]
- cbz x21, G_M57630_IG26
+ cbz x21, G_M57630_IG22
;; size=36 bbWeight=1 PerfScore 13.00 G_M57630_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- mov w22, #1
mov x0, x19 ; gcrRegs +[x0] mov w1, #1 @@ -83,82 +83,50 @@ G_M57630_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M57630_IG28 - mov w23, wzr - ldr x24, [x19, #0x18] - ; gcrRegs +[x24] - ;; size=44 bbWeight=1 PerfScore 11.50 -G_M57630_IG04: ; bbWeight=1.07, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - sub w22, w22, #1
+ cbnz x0, G_M57630_IG24 + mov w22, wzr + ldr x23, [x19, #0x18] + ; gcrRegs +[x23]
mov x0, x19
- ; gcrRegs +[x0] - mov w1, w22
+ mov w1, wzr
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- cbz x0, G_M57630_IG08 - ;; size=36 bbWeight=1.07 PerfScore 8.60 -G_M57630_IG05: ; bbWeight=0.97, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24]
+ cbz x0, G_M57630_IG13 + ;; size=72 bbWeight=1 PerfScore 18.50 +G_M57630_IG04: ; bbWeight=0.97, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x23]
ldr w1, [x0, #0x20] ldr x0, [x0, #0x18] ldr w0, [x0, #0x08] ; gcrRegs -[x0] add w0, w1, w0
- add w22, w0, w23
+ add w23, w0, w22
;; size=20 bbWeight=0.97 PerfScore 9.69
-G_M57630_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz - mov w23, wzr
+G_M57630_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz + mov w22, wzr
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- ldr x2, [x0]
+ ldr x24, [x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- cmp x2, x1 - bne G_M57630_IG16
+ cmp x24, x1 + beq G_M57630_IG12
;; size=32 bbWeight=1 PerfScore 9.50
-G_M57630_IG07: ; bbWeight=0.16, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - b G_M57630_IG21 - ;; size=4 bbWeight=0.16 PerfScore 0.16 -G_M57630_IG08: ; bbWeight=0.11, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] +[x24] - ldr x25, [x24] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x25, x0 - beq G_M57630_IG22 - ;; size=24 bbWeight=0.11 PerfScore 0.63 -G_M57630_IG09: ; bbWeight=0.05, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w22 - ldr x2, [x25, #0x50]
+G_M57630_IG06: ; bbWeight=0.19, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + mov w1, wzr + ldr x2, [x24, #0x50]
ldr x2, [x2, #0x20] blr x2
- ;; size=20 bbWeight=0.05 PerfScore 0.38 -G_M57630_IG10: ; bbWeight=0.11, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - cbnz x0, G_M57630_IG20 - ;; size=4 bbWeight=0.11 PerfScore 0.11 -G_M57630_IG11: ; bbWeight=1.11, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=16 bbWeight=0.19 PerfScore 1.44 +G_M57630_IG07: ; bbWeight=0.35, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz + cbnz x0, G_M57630_IG10 + ;; size=4 bbWeight=0.35 PerfScore 0.35 +G_M57630_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- cmp w22, #0 - bgt G_M57630_IG04 - ;; size=8 bbWeight=1.11 PerfScore 1.66 -G_M57630_IG12: ; bbWeight=0.03, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] - ldr w0, [x19, #0x20] - add w22, w0, w23 - b G_M57630_IG06 - ;; size=12 bbWeight=0.03 PerfScore 0.14 -G_M57630_IG13: ; bbWeight=0.17, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - mov w23, #1 - ;; size=4 bbWeight=0.17 PerfScore 0.09 -G_M57630_IG14: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
mov x14, x20 ; byrRegs +[x14] mov x15, x19 @@ -173,74 +141,90 @@ G_M57630_IG14: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15 x21] ; byrRegs -[x14]
- stp w23, w22, [x20, #0x10]
+ stp w22, w23, [x20, #0x10]
;; size=28 bbWeight=1 PerfScore 5.00
-G_M57630_IG15: ; 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
+G_M57630_IG09: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M57630_IG16: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 5.00 +G_M57630_IG10: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, gcvars, byref, isz
; gcrRegs +[x0 x19 x21]
- mov w1, wzr - ldr x2, [x2, #0x50] - ldr x2, [x2, #0x20] - blr x2 - ;; size=16 bbWeight=0.19 PerfScore 1.44 -G_M57630_IG17: ; bbWeight=0.35, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz - cbz x0, G_M57630_IG14 - ;; size=4 bbWeight=0.35 PerfScore 0.35 -G_M57630_IG18: ; bbWeight=0.17, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz
ldrh w14, [x0, #0x0C] cmp w14, #1
- bne G_M57630_IG13
+ beq G_M57630_IG19
;; size=12 bbWeight=0.17 PerfScore 0.76
-G_M57630_IG19: ; bbWeight=0.01, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - b G_M57630_IG23 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M57630_IG20: ; bbWeight=0.03, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs +[x24] - ldr w0, [x0, #0x08]
+G_M57630_IG11: ; bbWeight=0.17, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0] ...

-20 (-3.82%) : 84592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,38 +9,41 @@ ; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 8.42) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 7, 6 ) byref -> x20 single-def
+; V00 this [V00,T00] ( 9, 8.35) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 7, 6 ) byref -> x20 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T05] ( 4, 4 ) int -> x22 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> x23 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T10] ( 4, 2 ) ref -> x21 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 12.12) int -> x22 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T11] ( 3, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T09] ( 5, 2.09) int -> x23 "Inline stloc first use temp" -; V14 tmp10 [V14,T15] ( 5, 1.91) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T06] ( 4, 3.43) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T09] ( 4, 2.03) int -> x22 "Inline stloc first use temp" +; V14 tmp10 [V14,T15] ( 4, 1.59) ref -> x23 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.29) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T18] ( 4, 0.89) ref -> x0 "guarded devirt return temp"
+; V17 tmp13 [V17,T20] ( 4, 0.62) ref -> x0 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V22 tmp18 [V22,T08] ( 4, 2.17) int -> x23 "Inline stloc first use temp"
+; V22 tmp18 [V22,T08] ( 4, 2.17) int -> x22 "Inline stloc first use temp"
;* V23 tmp19 [V23,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp20 [V24,T04] ( 5, 4.59) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V24 tmp20 [V24,T03] ( 5, 4.59) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V26 tmp22 [V26,T19] ( 5, 0.76) ref -> x0 "guarded devirt return temp"
+; V26 tmp22 [V26,T18] ( 5, 0.76) ref -> x0 "guarded devirt return temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V28 tmp24 [V28,T16] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP ; V29 tmp25 [V29,T12] ( 2, 2 ) ref -> x21 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP
-; V30 tmp26 [V30,T13] ( 2, 2 ) int -> x23 single-def "field V07._index (fldOffset=0x10)" P-INDEP -; V31 tmp27 [V31,T14] ( 2, 2 ) int -> x22 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP
+; V30 tmp26 [V30,T13] ( 2, 2 ) int -> x22 single-def "field V07._index (fldOffset=0x10)" P-INDEP +; V31 tmp27 [V31,T14] ( 2, 2 ) int -> x23 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP +; V32 cse0 [V32,T21] ( 2, 0.09) long -> x2 "CSE - conservative" +; V33 cse1 [V33,T19] ( 3, 0.63) long -> x24 "CSE - moderate" +; V34 cse2 [V34,T22] ( 2, 0.06) int -> x22 "CSE - conservative"
; ; Lcl frame size = 0 @@ -63,14 +66,13 @@ G_M23983_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M23983_IG22
+ bne G_M23983_IG21
ldr x21, [x0, #0x18] ; gcrRegs +[x21]
- cbz x21, G_M23983_IG23
+ cbz x21, G_M23983_IG22
;; size=36 bbWeight=1 PerfScore 13.00 G_M23983_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- mov w22, #1
mov x0, x19 ; gcrRegs +[x0] mov w1, #1 @@ -79,75 +81,30 @@ G_M23983_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M23983_IG25 - mov w23, wzr - ldr x24, [x19, #0x18] - ; gcrRegs +[x24] - ;; size=44 bbWeight=1 PerfScore 11.50 -G_M23983_IG04: ; bbWeight=1.07, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - sub w22, w22, #1
+ cbnz x0, G_M23983_IG24 + mov w22, wzr + ldr x23, [x19, #0x18] + ; gcrRegs +[x23]
mov x0, x19
- ; gcrRegs +[x0] - mov w1, w22
+ mov w1, wzr
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M23983_IG11 - ;; size=36 bbWeight=1.07 PerfScore 8.56 -G_M23983_IG05: ; bbWeight=0.42, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - ldr x0, [x24] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - bne G_M23983_IG14 - ;; size=24 bbWeight=0.42 PerfScore 2.55 -G_M23983_IG06: ; bbWeight=0.36, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w22 - movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ;; size=28 bbWeight=0.36 PerfScore 2.35 -G_M23983_IG07: ; bbWeight=0.42, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - cbnz x0, G_M23983_IG10 - ;; size=4 bbWeight=0.42 PerfScore 0.42 -G_M23983_IG08: ; bbWeight=1.42, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - cmp w22, #0 - bgt G_M23983_IG04 - ;; size=8 bbWeight=1.42 PerfScore 2.14 -G_M23983_IG09: ; bbWeight=0.35, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] - ldr w0, [x19, #0x20] - add w22, w0, w23 - b G_M23983_IG12 - ;; size=12 bbWeight=0.35 PerfScore 1.59 -G_M23983_IG10: ; bbWeight=0.04, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs +[x0 x24] - ldr w0, [x0, #0x08] - ; gcrRegs -[x0] - add w23, w23, w0 - b G_M23983_IG08 - ;; size=12 bbWeight=0.04 PerfScore 0.20 -G_M23983_IG11: ; bbWeight=0.65, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] +[x0]
+ cbz x0, G_M23983_IG09 + ;; size=72 bbWeight=1 PerfScore 18.50 +G_M23983_IG04: ; bbWeight=0.65, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x23]
ldr w1, [x0, #0x20] ldr x0, [x0, #0x18] ldr w0, [x0, #0x08] ; gcrRegs -[x0] add w0, w1, w0
- add w22, w0, w23
+ add w23, w0, w22
;; size=20 bbWeight=0.65 PerfScore 6.46
-G_M23983_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz - mov w23, wzr
+G_M23983_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz + mov w22, wzr
ldr x0, [x19, #0x18] ; gcrRegs +[x0] ldr x1, [x0] @@ -155,27 +112,55 @@ G_M23983_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M23983_IG26
+ bne G_M23983_IG25
;; size=32 bbWeight=1 PerfScore 9.50
-G_M23983_IG13: ; bbWeight=0.30, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - b G_M23983_IG18 - ;; size=4 bbWeight=0.30 PerfScore 0.30 -G_M23983_IG14: ; bbWeight=0.06, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0] +[x24] - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w22 - ldr x2, [x24] - ldr x2, [x2, #0x50] - ldr x2, [x2, #0x20]
+G_M23983_IG06: ; bbWeight=0.30, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + mov w1, wzr + movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
blr x2
- b G_M23983_IG07 - ;; size=28 bbWeight=0.06 PerfScore 0.76 -G_M23983_IG15: ; bbWeight=0.17, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0 x24] - mov w23, #1
+ ;; size=24 bbWeight=0.30 PerfScore 1.78 +G_M23983_IG07: ; bbWeight=0.30, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz + cbz x0, G_M23983_IG14 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M23983_IG08: ; bbWeight=0.17, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + b G_M23983_IG16 + ;; size=4 bbWeight=0.17 PerfScore 0.17 +G_M23983_IG09: ; bbWeight=0.29, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs -[x0] +[x23] + ldr x24, [x23] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x24, x0 + bne G_M23983_IG19 + ;; size=24 bbWeight=0.29 PerfScore 1.76 +G_M23983_IG10: ; bbWeight=0.25, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref + mov x0, x23 + ; gcrRegs +[x0] + mov w1, wzr + movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x23] + ;; size=28 bbWeight=0.25 PerfScore 1.62 +G_M23983_IG11: ; bbWeight=0.29, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz + cbnz x0, G_M23983_IG18 + ;; size=4 bbWeight=0.29 PerfScore 0.29 +G_M23983_IG12: ; bbWeight=0.35, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x0] + ldr w0, [x19, #0x20] + add w23, w0, w22 + b G_M23983_IG05 + ;; size=12 bbWeight=0.35 PerfScore 1.59 +G_M23983_IG13: ; bbWeight=0.17, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + mov w22, #1
;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M23983_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
+G_M23983_IG14: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
mov x14, x20 ; byrRegs +[x14] mov x15, x19 @@ -190,43 +175,50 @@ G_M23983_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15 x21] ; byrRegs -[x14]
- stp w23, w22, [x20, #0x10]
+ stp w22, w23, [x20, #0x10]
;; size=28 bbWeight=1 PerfScore 5.00
-G_M23983_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M23983_IG15: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=1 PerfScore 5.00 ...

-16 (-3.23%) : 47595.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -19,28 +19,28 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport> ; V09 tmp2 [V09,T13] ( 2, 4 ) int -> x1 "impImportAndPushBox"
-; V10 tmp3 [V10,T14] ( 4, 2 ) int -> x28
+; V10 tmp3 [V10,T16] ( 4, 2 ) int -> x28
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T17] ( 2, 2 ) int -> x14
+; V13 tmp6 [V13,T18] ( 2, 2 ) int -> x14
; V14 tmp7 [V14,T04] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T18] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V17 tmp10 [V17,T19] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
; V18 tmp11 [V18,T11] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T15] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5 ) int -> x1 "Inline stloc first use temp"
+; V21 tmp14 [V21,T17] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> x26 single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T09] ( 3, 3 ) long -> x25 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T19] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T20] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; V29 cse0 [V29,T10] ( 4, 4 ) int -> x27 "CSE - aggressive"
-; V30 cse1 [V30,T16] ( 2, 2 ) byref -> x0 hoist "CSE - moderate" -; V31 cse2 [V31,T20] ( 2, 2 ) int -> x2 hoist "CSE - moderate"
+; V30 cse1 [V30,T14] ( 2, 2 ) byref -> x14 "CSE - aggressive" +; V31 cse2 [V31,T15] ( 2, 2 ) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=60 bbWeight=1 PerfScore 10.50 G_M43134_IG02: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M43134_IG10
+ cbz x21, G_M43134_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -96,11 +96,11 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe cmp x0, x25 cset x0, eq cmp w1, w0
- bne G_M43134_IG11
+ bne G_M43134_IG10
;; size=84 bbWeight=1 PerfScore 20.00 G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x13-x14]
- cbz w27, G_M43134_IG13
+ cbz w27, G_M43134_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -110,30 +110,24 @@ G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 mov w14, #0xD1FFAB1E str w14, [x0, #0x10]
- mov w1, wzr - add x0, x0, #16
+ add x14, x0, #16 + ; byrRegs +[x14] + ldr w14, [x14] + ; byrRegs -[x14] + and w15, w20, #0xD1FFAB1E + cmp w14, w15 + beq G_M43134_IG05 + b G_M43134_IG11 + ;; size=56 bbWeight=1 PerfScore 12.00 +G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs +[x0] - and w2, w20, #0xD1FFAB1E - ;; size=44 bbWeight=1 PerfScore 7.00 -G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0001 {x0}, byref, isz - ldr w14, [x0, w1, UXTW #2] - cmp w14, w2 - beq G_M43134_IG06 - add w1, w1, #1 - cmp w1, #1 - bge G_M43134_IG12 - b G_M43134_IG05 - ;; size=28 bbWeight=1 PerfScore 7.50 -G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref - ; byrRegs -[x0]
mov w28, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
tst w28, #255
- beq G_M43134_IG14
+ beq G_M43134_IG13
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
str w23, [x19, #0x2C] add x14, x19, #24 ; byrRegs +[x14] @@ -165,7 +159,7 @@ G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe str xzr, [x19, #0x08] str xzr, [x19, #0x20] ;; size=72 bbWeight=1 PerfScore 13.50
-G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -174,7 +168,7 @@ G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22 x26] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -190,7 +184,7 @@ G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=468000 ; gcr arg pop 0 b G_M43134_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG10: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -205,16 +199,16 @@ G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 b G_M43134_IG04 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
- b G_M43134_IG07
+ b G_M43134_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
mov w28, #1 tst w28, #255
- bne G_M43134_IG08
+ bne G_M43134_IG07
;; size=12 bbWeight=0 PerfScore 0.00
-G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -227,10 +221,10 @@ G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M43134_IG08
+ b G_M43134_IG07
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 60, PerfScore 68.50, instruction count 124, allocated bytes for code 496 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 480, prolog size 60, PerfScore 66.00, instruction count 120, allocated bytes for code 480 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info: @@ -241,7 +235,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+50.00%) : 95582.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)

@@ -8,10 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20 ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 3.90) byref -> x0 single-def -; V01 arg1 [V01,T01] ( 3, 3 ) int -> x1 single-def -; V02 loc0 [V02,T02] ( 5, 4.80) int -> x2 -; V03 loc1 [V03,T03] ( 3, 2.90) int -> x3
+; V00 arg0 [V00,T01] ( 6, 5.80) byref -> x0 single-def +; V01 arg1 [V01,T02] ( 4, 4 ) int -> x1 single-def +; V02 loc0 [V02,T00] ( 10, 9.60) int -> x2 +; V03 loc1 [V03,T03] ( 6, 5.80) int -> x3
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -25,29 +25,43 @@ G_M19701_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ldr w2, [x0] orr w3, w2, w1 cmp w3, w2
- beq G_M19701_IG05
+ beq G_M19701_IG08
;; size=16 bbWeight=1 PerfScore 5.00 G_M19701_IG03: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M19701_IG02 - mov w0, #1
+ beq G_M19701_IG06 + ;; size=16 bbWeight=0.90 PerfScore 4.50 +G_M19701_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w2, [x0] + orr w3, w2, w1 + cmp w3, w2 + beq G_M19701_IG08 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M19701_IG05: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M19701_IG04 + ;; size=16 bbWeight=0.90 PerfScore 4.50 +G_M19701_IG06: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
- ;; size=20 bbWeight=0.90 PerfScore 4.95 -G_M19701_IG04: ; bbWeight=0.90, epilog, nogc, extend
+ mov w0, #1 + ;; size=4 bbWeight=0.90 PerfScore 0.45 +G_M19701_IG07: ; bbWeight=0.90, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.90 PerfScore 1.80
-G_M19701_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19701_IG08: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M19701_IG06: ; bbWeight=0.10, epilog, nogc, extend
+G_M19701_IG09: ; bbWeight=0.10, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.10 PerfScore 0.20
-; Total bytes of code 64, prolog size 8, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 23.00, instruction count 24, allocated bytes for code 96 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+54.55%) : 52611.dasm - IfStatements.IfStatements:OrArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20087_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.04 G_M20087_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M20087_IG04
+ cmp w19, w1 + bge G_M20087_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M20087_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M20087_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M20087_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M20087_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M20087_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M20087_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M20087_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.91 +G_M20087_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.98, instruction count 22, allocated bytes for code 88 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

+48 (+54.55%) : 47228.dasm - IfStatements.IfStatements:AndArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M1409_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.05 G_M1409_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M1409_IG04
+ cmp w19, w1 + bge G_M1409_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M1409_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M1409_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M1409_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M1409_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M1409_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M1409_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M1409_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.90 +G_M1409_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.97, instruction count 22, allocated bytes for code 88 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

benchmarks.run_tiered.linux.arm64.checked.mch

-12 (-4.41%) : 52716.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

-4 (-2.17%) : 39335.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)

@@ -7,11 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def -; V01 loc0 [V01,T03] ( 3, 4.50) byref -> x1 -; V02 loc1 [V02,T02] ( 4, 8 ) int -> x2
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def +; V01 loc0 [V01,T03] ( 3, 1 ) byref -> x1 +; V02 loc1 [V02,T02] ( 4, 1 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 1.50) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>> +; V05 cse0 [V05,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -29,7 +30,7 @@ G_M21922_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w1, w2 bne G_M21922_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M21922_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M21922_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0, #0x0C] ldr x2, [x0] ; gcrRegs +[x2] @@ -37,27 +38,25 @@ G_M21922_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x2] cmp w1, w2 blo G_M21922_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M21922_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x1, [x0] - ; gcrRegs +[x1] - ldr w1, [x1, #0x28] - ; gcrRegs -[x1] - add w1, w1, #1
+ add w1, w2, #1
stp w1, wzr, [x0, #0x0C] mov w0, wzr ; byrRegs -[x0]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M21922_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M21922_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M21922_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x1, [x0]
+ ldr x2, [x0] + ; gcrRegs +[x2] + ldr x1, [x2, #0x10]
; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
ldr w2, [x0, #0x0C]
+ ; gcrRegs -[x2]
add w3, w2, #1 str w3, [x0, #0x0C] ldr w3, [x1, #0x08] @@ -71,8 +70,9 @@ G_M21922_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x1] ldr w2, [x1, #0x04] cmn w2, #1
- blt G_M21922_IG03 - ;; size=60 bbWeight=2 PerfScore 52.00
+ bge G_M21922_IG07 + b G_M21922_IG03 + ;; size=64 bbWeight=0.25 PerfScore 6.75
G_M21922_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref ldr w1, [x1, #0x08] ; byrRegs -[x1] @@ -98,7 +98,7 @@ G_M21922_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 156.25, instruction count 46, allocated bytes for code 184 (MethodHash=7a0aaa5d) for method System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 180, prolog size 8, PerfScore 34.50, instruction count 45, allocated bytes for code 180 (MethodHash=7a0aaa5d) for method System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -109,7 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.13%) : 47687.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> x14 -; V03 loc1 [V03,T02] ( 4, 8 ) int -> x15
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> x14 +; V03 loc1 [V03,T02] ( 4, 1 ) int -> x15
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -30,7 +31,7 @@ G_M27287_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w14, w15 bne G_M27287_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M27287_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w14, [x0, #0x14] ldr x15, [x0] ; gcrRegs +[x15] @@ -38,28 +39,26 @@ G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x15] cmp w14, w15 blo G_M27287_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x14, [x0] - ; gcrRegs +[x14] - ldr w14, [x14, #0x28] - ; gcrRegs -[x14] - add w14, w14, #1
+ add w14, w15, #1
str w14, [x0, #0x14] str xzr, [x0, #0x08] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M27287_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M27287_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x14, [x0]
+ ldr x15, [x0] + ; gcrRegs +[x15] + ldr x14, [x15, #0x10]
; gcrRegs +[x14]
- ldr x14, [x14, #0x10]
ldr w15, [x0, #0x14]
+ ; gcrRegs -[x15]
add w12, w15, #1 str w12, [x0, #0x14] ldr w12, [x14, #0x08] @@ -72,8 +71,9 @@ G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x14] ldr w15, [x14, #0x0C] cmn w15, #1
- blt G_M27287_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M27287_IG07 + b G_M27287_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M27287_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4001 {x0 x14}, byref ldr x15, [x14] ; gcrRegs +[x15] @@ -101,7 +101,7 @@ G_M27287_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 148.00, instruction count 47, allocated bytes for code 188 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 184, prolog size 8, PerfScore 34.12, instruction count 46, allocated bytes for code 184 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -112,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+57.14%) : 29127.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T04] ( 4, 4 ) int -> x2 single-def -; V02 arg2 [V02,T02] ( 3, 6 ) ushort -> x3 single-def -; V03 loc0 [V03,T00] ( 6, 18 ) int -> x4
+; V01 arg1 [V01,T03] ( 4, 4 ) int -> x2 single-def +; V02 arg2 [V02,T05] ( 3, 2.50) ushort -> x3 single-def +; V03 loc0 [V03,T00] ( 10, 20 ) int -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp2 [V06,T01] ( 2, 9 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp1 [V05,T02] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp2 [V06,T01] ( 3, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 3, 5 ) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,29 +27,47 @@ G_M43086_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre add w4, w2, #1 b G_M43086_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43086_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M43086_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + add w4, w4, #1 + b G_M43086_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M43086_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w4, w1 + bhs G_M43086_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M43086_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldrh w5, [x0, w4, UXTW #2] + uxth w3, w3 + cmp w5, w3 + beq G_M43086_IG03 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M43086_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M43086_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M43086_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ; byrRegs +[x0]
add w4, w4, #1 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M43086_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, w1
- bhs G_M43086_IG06
+ bhs G_M43086_IG10
;; size=8 bbWeight=8 PerfScore 12.00
-G_M43086_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrh w5, [x0, w4, UXTW #2]
- uxth w6, w3 - cmp w5, w6 - beq G_M43086_IG03 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M43086_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w5, w3 + beq G_M43086_IG07 + ;; size=12 bbWeight=4 PerfScore 18.00 +G_M43086_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] sub w0, w4, w2 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43086_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M43086_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 38.50, instruction count 14, allocated bytes for code 56 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
+; Total bytes of code 88, prolog size 8, PerfScore 41.00, instruction count 22, allocated bytes for code 88 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
; ============================================================ Unwind Info: @@ -59,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+61.54%) : 47873.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> x1 "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> x2 "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> x1 "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> x2 "Inline stloc first use temp"
; ; Lcl frame size = 0 @@ -21,29 +21,39 @@ G_M11989_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldrsb wzr, [x0]
- ;; size=4 bbWeight=1 PerfScore 3.00 -G_M11989_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0] orr w2, w1, #0xD1FFAB1E cmp w2, w1
- beq G_M11989_IG05 - ;; size=16 bbWeight=8 PerfScore 40.00 -G_M11989_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M11989_IG06 + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M11989_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
mov w3, w1 casal w3, w2, [x0] cmp w3, w1
- bne G_M11989_IG03
+ beq G_M11989_IG06 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M11989_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w1, [x0] + orr w2, w1, #0xD1FFAB1E + cmp w2, w1 + beq G_M11989_IG06 + ;; size=16 bbWeight=8 PerfScore 40.00 +G_M11989_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w3, w1 + casal w3, w2, [x0] + cmp w3, w1 + bne G_M11989_IG04
;; size=16 bbWeight=4 PerfScore 20.00
-G_M11989_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M11989_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 66.50, instruction count 13, allocated bytes for code 52 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 74.00, instruction count 21, allocated bytes for code 84 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ 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)

+32 (+61.54%) : 47867.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> x1 "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> x2 "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> x1 "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> x2 "Inline stloc first use temp"
; ; Lcl frame size = 0 @@ -21,29 +21,39 @@ G_M48426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldrsb wzr, [x0]
- ;; size=4 bbWeight=1 PerfScore 3.00 -G_M48426_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0] orr w2, w1, #0xD1FFAB1E cmp w2, w1
- beq G_M48426_IG05 - ;; size=16 bbWeight=8 PerfScore 40.00 -G_M48426_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M48426_IG06 + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M48426_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
mov w3, w1 casal w3, w2, [x0] cmp w3, w1
- bne G_M48426_IG03
+ beq G_M48426_IG06 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M48426_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w1, [x0] + orr w2, w1, #0xD1FFAB1E + cmp w2, w1 + beq G_M48426_IG06 + ;; size=16 bbWeight=8 PerfScore 40.00 +G_M48426_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w3, w1 + casal w3, w2, [x0] + cmp w3, w1 + bne G_M48426_IG04
;; size=16 bbWeight=4 PerfScore 20.00
-G_M48426_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M48426_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 66.50, instruction count 13, allocated bytes for code 52 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 74.00, instruction count 21, allocated bytes for code 84 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ 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)

coreclr_tests.run.linux.arm64.checked.mch

-36 (-17.65%) : 528797.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)

@@ -7,24 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T06] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> -; V01 loc1 [V01,T00] ( 12, 65.84) int -> x19 -; V02 loc2 [V02,T01] ( 8, 43 ) int -> x1 -;* V03 loc3 [V03,T07] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T03] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> +; V01 loc1 [V01,T00] ( 5, 16.84) int -> x0 +; V02 loc2 [V02,T04] ( 3, 3 ) int -> x1 +;* V03 loc3 [V03,T05] ( 0, 0 ) int -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 6, 32.92) byref -> x20 hoist "CSE - aggressive" -; V06 cse1 [V06,T03] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V07 cse2 [V07,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V08 cse3 [V08,T05] ( 3, 11.88) int -> x19 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 8, 13.92) byref -> x19 "CSE - aggressive" +; V06 cse1 [V06,T02] ( 3, 11.88) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42106_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -32,32 +30,16 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
+ add x19, x0, #16 + ; byrRegs +[x19] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x04] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x08] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x0C]
movz w1, #0xD1FFAB1E
- movk w1, #1 LSL #16 - mov w19, #1 - add x20, x0, #16 - ; byrRegs +[x20] - ;; size=36 bbWeight=1 PerfScore 5.00 -G_M42106_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref, isz - and w2, w1, #0xD1FFAB1E - str w2, [x20, w19, UXTW #2] - add w2, w19, #1 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - add w2, w19, #2 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - mov w2, #0xD1FFAB1E - add w1, w1, w2 - add w19, w19, #3 - cmp w19, #3 - ble G_M42106_IG03 - ;; size=68 bbWeight=8 PerfScore 84.00 -G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref
+ movk w1, #2 LSL #16
stp w1, w1, [x0, #0x20] movz x1, #0xD1FFAB1E // code for Benchstone.BenchI.BubbleSort2:Inner(int[]) movk x1, #0xD1FFAB1E LSL #16 @@ -66,36 +48,39 @@ G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov w19, wzr - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [x20, w19, UXTW #2] - add w19, w19, #1 - ldr w1, [x20, w19, UXTW #2]
+ ldp w0, w1, [x19]
cmp w0, w1
- bgt G_M42106_IG08 - cmp w19, #4 - blt G_M42106_IG05
+ bgt G_M42106_IG06 + mov w0, #1 + ;; size=96 bbWeight=1 PerfScore 20.50 +G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldr w1, [x19, w0, UXTW #2] + add w0, w0, #1 + ldr w2, [x19, w0, UXTW #2] + cmp w1, w2 + bgt G_M42106_IG06 + cmp w0, #4 + blt G_M42106_IG03
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x20]
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19]
mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M42106_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M42106_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 204, prolog size 12, PerfScore 139.87, instruction count 51, allocated bytes for code 204 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 168, prolog size 12, PerfScore 65.37, instruction count 42, allocated bytes for code 168 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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,7 +102,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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

-12 (-15.79%) : 572977.dasm - ILGEN_0xa2afe952:Main():int (FullOpts)

@@ -9,53 +9,46 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 tmp2 [V02,T01] ( 4, 25 ) int -> x0 -; V03 tmp3 [V03,T00] ( 2, 32 ) int -> x0 "dup spill"
+;* V02 tmp2 [V02,T01] ( 0, 0 ) int -> zero-ref +;* V03 tmp3 [V03,T02] ( 0, 0 ) int -> zero-ref "dup spill"
;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V05 PSPSym [V05,T02] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V05 PSPSym [V05,T00] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; ; Lcl frame size = 16
-G_M9138_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M9138_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp add x0, sp, #32 str x0, [fp, #0x18] // [V05 PSPSym]
- ;; size=16 bbWeight=1 PerfScore 3.00 -G_M9138_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M9138_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - sub w0, w0, #1 - cbnz w0, G_M9138_IG03 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M9138_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M9138_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9138_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #100 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M9138_IG04: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-G_M9138_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x20]! add x3, fp, #32 str x3, [sp, #0x18] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M9138_IG05]
+G_M9138_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M9138_IG03]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG09: ; bbWeight=0, funclet epilog, nogc, extend
+G_M9138_IG07: ; bbWeight=0, funclet epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 16, PerfScore 15.50, instruction count 19, allocated bytes for code 76 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 0.00, instruction count 16, allocated bytes for code 64 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -97,4 +90,4 @@ Unwind Info: *************** EH table for ILGEN_0xa2afe952:Main():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M9138_IG02..G_M9138_IG05) handled by [G_M9138_IG07..END) (class: 1000003)
+EH#0: try [G_M9138_IG02..G_M9138_IG03) handled by [G_M9138_IG05..END) (class: 1000003)
-40 (-14.49%) : 227681.dasm - BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
@@ -7,39 +7,37 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T01] ( 3, 10 ) long -> x19 single-def -; V01 loc1 [V01,T00] ( 7, 42 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live ptr
+; V00 loc0 [V00,T01] ( 3, 3 ) long -> x0 single-def +; V01 loc1 [V01,T00] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[Z] EH-live ptr
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref ptr ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie" -; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie" +; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M42836_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - str x19, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- str xzr, [fp, #0x20] // [V04 tmp1] - add x0, sp, #64 - str x0, [fp, #0x30] // [V07 PSPSym]
+ str xzr, [fp, #0x18] // [V04 tmp1] + add x0, sp, #48 + str x0, [fp, #0x28] // [V07 PSPSym]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #0x28] // [V06 GsCookie] - ;; size=44 bbWeight=1 PerfScore 8.00
+ str x0, [fp, #0x20] // [V06 GsCookie] + ;; size=40 bbWeight=1 PerfScore 7.00
G_M42836_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x19, fp, #32 // [V04 tmp1] - strb wzr, [x19] - str wzr, [fp, #0x1C] // [V01 loc1]
+ add x0, fp, #24 // [V04 tmp1] + strb wzr, [x0] + str wzr, [fp, #0x14] // [V01 loc1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr w0, [fp, #0x1C] // [V01 loc1] - ldrb w0, [x19, w0, SXTW #2] - ldrb w1, [fp, #0x1C] // [V01 loc1]
+G_M42836_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x0] + mov w1, wzr
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -47,53 +45,46 @@ G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcr arg pop 0 cbz w0, G_M42836_IG06
- ldr w0, [fp, #0x1C] // [V01 loc1] - add w0, w0, #1 - str w0, [fp, #0x1C] // [V01 loc1] - ldr w0, [fp, #0x1C] // [V01 loc1] - cmp w0, #0 - ble G_M42836_IG03 - ;; size=60 bbWeight=8 PerfScore 164.00
+ mov w0, #1 + str w0, [fp, #0x14] // [V01 loc1] + ;; size=40 bbWeight=1 PerfScore 11.50
G_M42836_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movn w0, #0 movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG05 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 7.00 G_M42836_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr w0, [fp, #0x1C] // [V01 loc1]
+ ldr w0, [fp, #0x14] // [V01 loc1]
movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG07 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 8.50 G_M42836_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18] - add x3, fp, #64 - str x3, [sp, #0x10] - ;; size=16 bbWeight=0 PerfScore 0.00
+ add x3, fp, #48 + str x3, [sp, #0x18] + ;; size=12 bbWeight=0 PerfScore 0.00
G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -107,23 +98,22 @@ G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { adr x0, [G_M42836_IG06] ;; size=36 bbWeight=0 PerfScore 0.00 G_M42836_IG10: ; bbWeight=0, funclet epilog, nogc, extend
- ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 44, PerfScore 198.00, instruction count 69, allocated bytes for code 276 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
+; Total bytes of code 236, prolog size 40, PerfScore 40.50, instruction count 59, allocated bytes for code 236 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,10 +124,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end - E4 end
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end @@ -149,13 +136,14 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 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 + E4 end
*************** EH table for BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM

+24 (+60.00%) : 417518.dasm - Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 55376 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def -; V01 arg1 [V01,T01] ( 3, 3 ) int -> x1 single-def -; V02 loc0 [V02,T02] ( 4, 4 ) int -> x2
+; V00 this [V00,T01] ( 6, 6 ) byref -> x0 this single-def +; V01 arg1 [V01,T02] ( 4, 4 ) int -> x1 single-def +; V02 loc0 [V02,T00] ( 8, 8 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -26,14 +26,23 @@ G_M63594_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M63594_IG02
+ beq G_M63594_IG04
;; size=24 bbWeight=1 PerfScore 8.50
-G_M63594_IG03: ; bbWeight=1, epilog, nogc, extend
+G_M63594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldapr w2, [x0] + orr w3, w2, w1 + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M63594_IG03 + ;; size=24 bbWeight=1 PerfScore 8.50 +G_M63594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[x0]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 8, PerfScore 12.00, instruction count 10, allocated bytes for code 40 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 20.50, instruction count 16, allocated bytes for code 64 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
; ============================================================ Unwind Info: @@ -44,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ 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)

+36 (+64.29%) : 621841.dasm - OVFTest:Test_short(short):short (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) short -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) short -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M33961_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M33961_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxth w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #8, LSL #12
- bge G_M33961_IG03
+ bge G_M33961_IG04
cmn w0, #8, LSL #12
- blt G_M33961_IG03 - b G_M33961_IG02
+ blt G_M33961_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M33961_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxth w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #8, LSL #12 + bge G_M33961_IG04 + cmn w0, #8, LSL #12 + blt G_M33961_IG04 + b G_M33961_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M33961_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33961_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+36 (+64.29%) : 621840.dasm - OVFTest:Test_sbyte(byte):byte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) byte -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) byte -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M25186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25186_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtb w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #127
- bgt G_M25186_IG03
+ bgt G_M25186_IG04
cmn w0, #128
- blt G_M25186_IG03 - b G_M25186_IG02
+ blt G_M25186_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M25186_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtb w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #127 + bgt G_M25186_IG04 + cmn w0, #128 + blt G_M25186_IG04 + b G_M25186_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M25186_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25186_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

libraries.crossgen2.linux.arm64.checked.mch

-20 (-12.20%) : 215775.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M45834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M45834_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M45834_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M45834_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45834_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M45834_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M45834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M45834_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M45834_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M45834_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M45834_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M45834_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M45834_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M45834_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M45834_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M45834_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M45834_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45834_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M45834_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M45834_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-12.20%) : 10548.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M24270_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M24270_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M24270_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M24270_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M24270_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M24270_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M24270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M24270_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M24270_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M24270_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M24270_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M24270_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M24270_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M24270_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M24270_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M24270_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M24270_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M24270_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24270_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M24270_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-10.42%) : 226948.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)

@@ -9,45 +9,35 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 17 ) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> -; V01 loc0 [V01,T04] ( 4, 6 ) ubyte -> x20
+; V00 this [V00,T00] ( 7, 4.75) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> +; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 16 ) ref -> x1 "argument with side effect" -; V04 tmp2 [V04,T02] ( 2, 16 ) ref -> x1 "argument with side effect" -; V05 cse0 [V05,T03] ( 3, 7 ) long -> x21 hoist "CSE - aggressive" -; V06 cse1 [V06,T05] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V07 cse2 [V07,T06] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" -; V08 cse3 [V08,T07] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> x1 "argument with side effect" +; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x1 "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 1.75) long -> x21 hoist "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M42349_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w20, #1 ldrsb wzr, [x19] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x21, [x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - adrp x23, [HIGH RELOC #0xD1FFAB1E] - add x23, x23, [LOW RELOC #0xD1FFAB1E] - adrp x24, [HIGH RELOC #0xD1FFAB1E] - add x24, x24, [LOW RELOC #0xD1FFAB1E]
b G_M42349_IG04
- ;; size=48 bbWeight=1 PerfScore 11.50 -G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 8.50 +G_M42349_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr wzr, [x0] ldr x1, [x11] @@ -55,43 +45,45 @@ G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] sxtw w20, w0 cbz w20, G_M42349_IG05
- ;; size=32 bbWeight=2 PerfScore 25.00 -G_M42349_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.25 PerfScore 3.12 +G_M42349_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x1] mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x24
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M42349_IG03
- ;; size=64 bbWeight=4 PerfScore 90.00
+ ;; size=76 bbWeight=0.50 PerfScore 12.00
G_M42349_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50 G_M42349_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 20, PerfScore 137.00, instruction count 48, allocated bytes for code 192 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
+; Total bytes of code 172, prolog size 16, PerfScore 33.12, instruction count 43, allocated bytes for code 172 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -102,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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) @@ -110,10 +102,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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 (+64.71%) : 185867.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -8,14 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,42 +25,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+66.67%) : 178041.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

+32 (+66.67%) : 33570.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

libraries.pmi.linux.arm64.checked.mch

-44 (-15.71%) : 157895.dasm - Roslyn.Utilities.OneOrMany1[System.__Canon]:Any[System.Numerics.Vector1[float]](System.Func3[System.__Canon,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,59 +8,64 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 3 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T05] ( 5, 4.36) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> -; V03 arg2 [V03,T11] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V04 loc0 [V04 ] ( 4, 12 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V00 this [V00,T12] ( 3, 3 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T04] ( 5, 4.36) long -> x1 single-def +; V02 arg1 [V02,T09] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> +; V03 arg2 [V03,T17] ( 3, 2.25) simd16 -> [fp+0x40] HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V04 loc0 [V04 ] ( 4, 3.25) struct (24) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp4 [V10,T10] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V10 tmp4 [V10,T15] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[System.__Canon]> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref "field V12._one (fldOffset=0x0)" P-INDEP ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref "field V12._many (fldOffset=0x8)" P-INDEP ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "V10.[000..004)"
-; V16 tmp10 [V16,T00] ( 2, 32 ) long -> x1 "argument with side effect" -; V17 tmp11 [V17,T04] ( 2, 8 ) long -> x1 "argument with side effect" -; V18 tmp12 [V18,T03] ( 2, 8 ) ref -> x1 "argument with side effect" -; V19 cse0 [V19,T01] ( 3, 11 ) long -> x20 hoist "CSE - aggressive" -; V20 rat0 [V20,T09] ( 3, 4 ) long -> x20 "runtime lookup" -; V21 rat1 [V21,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V22 rat2 [V22,T08] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable"
+; V16 tmp10 [V16,T01] ( 2, 4 ) long -> x1 "argument with side effect" +; V17 tmp11 [V17,T07] ( 2, 1 ) long -> x1 "argument with side effect" +; V18 tmp12 [V18,T06] ( 2, 1 ) ref -> x1 "argument with side effect" +; V19 cse0 [V19,T16] ( 3, 2.25) long -> x20 hoist "CSE - aggressive" +; V20 rat0 [V20,T14] ( 3, 4 ) long -> x20 "runtime lookup" +; V21 rat1 [V21,T11] ( 3, 5.60) long -> x0 "spilling expr" +; V22 rat2 [V22,T13] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable" +;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V24 rat4 [V24,T05] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V25 rat5 [V25,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V26 rat6 [V26,T03] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V27 rat7 [V27,T00] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V28 rat8 [V28,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M19422_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp d8, d9, [sp, #0x50]
stp x19, x20, [sp, #0x60] mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V10 tmp4], [V10 tmp4+0x08] - str xzr, [fp, #0x28] // [V10 tmp4+0x10] - str x1, [fp, #0x48] - mov v8.16b, v0.16b
+ stp xzr, xzr, [fp, #0x10] // [V10 tmp4], [V10 tmp4+0x08] + str xzr, [fp, #0x20] // [V10 tmp4+0x10] + str x1, [fp, #0x58] + str q0, [fp, #0x40] // [V03 arg2]
mov x19, x2 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M19422_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc ; byrRegs +[x0] ldp x2, x3, [x0]
- stp x2, x3, [fp, #0x20]
+ stp x2, x3, [fp, #0x18]
;; size=8 bbWeight=1 PerfScore 5.00 G_M19422_IG03: ; bbWeight=1, nogc, extend
- ldp x0, x2, [fp, #0x18]
+ ldp x0, x2, [fp, #0x10]
; byrRegs -[x0]
- stp x0, x2, [fp, #0x30] - ldr x0, [fp, #0x28] - str x0, [fp, #0x40]
+ stp x0, x2, [fp, #0x28] + ldr x0, [fp, #0x20] + str x0, [fp, #0x38]
;; size=16 bbWeight=1 PerfScore 7.00 G_M19422_IG04: ; bbWeight=1, isz, extend movn w0, #0
- str w0, [fp, #0x30] // [V04 loc0]
+ str w0, [fp, #0x28] // [V04 loc0]
ldr x0, [x1, #0x38] ldr x2, [x0, #0x08] cmp x2, #24 @@ -78,69 +83,59 @@ G_M19422_IG07: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov v9.d[0], v8.d[1]
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD mov x20, x0
- mov v8.d[1], v9.d[0] - ;; size=32 bbWeight=0.36 PerfScore 1.98
+ ;; size=24 bbWeight=0.36 PerfScore 1.26
G_M19422_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M19422_IG10 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M19422_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M19422_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov v8.d[1], v9.d[0] - mov v0.16b, v8.16b
+ ldr q0, [fp, #0x40] // [V03 arg2]
ldr x0, [x19, #0x08] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0-x1]
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG13
- ;; size=68 bbWeight=2 PerfScore 39.00 -G_M19422_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0.25 PerfScore 4.25 +G_M19422_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG09
- ;; size=40 bbWeight=8 PerfScore 76.00 -G_M19422_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M19422_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M19422_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M19422_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M19422_IG14: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 280, prolog size 28, PerfScore 154.82, instruction count 70, allocated bytes for code 280 (MethodHash=fb73b421) for method 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)
+; Total bytes of code 236, prolog size 24, PerfScore 49.13, instruction count 59, allocated bytes for code 236 (MethodHash=fb73b421) for method 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)
; ============================================================ Unwind Info: @@ -151,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -163,8 +158,9 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]! E4 end E4 end
+ E4 end + E4 end

-16 (-8.51%) : 274172.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -12,9 +12,9 @@ ; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]> ;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 20.91) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 2.98) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,7 +22,7 @@ G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -37,23 +37,15 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=1.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG07 - ;; size=8 bbWeight=1.98 PerfScore 7.91 -G_M2572_IG04: ; bbWeight=5.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x2] - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=12 bbWeight=5.98 PerfScore 11.95 -G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG05 + ;; size=52 bbWeight=1 PerfScore 10.50 +G_M2572_IG03: ; bbWeight=3.02, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -69,13 +61,13 @@ G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #0xD1FFAB1E LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=3.02 PerfScore 30.24 +G_M2572_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -94,7 +86,7 @@ G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 40.36, instruction count 47, allocated bytes for code 188 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 172, prolog size 8, PerfScore 44.24, instruction count 43, allocated bytes for code 172 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ 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)

-20 (-8.33%) : 157928.dasm - Roslyn.Utilities.OneOrMany1[ubyte]:Any[System.Numerics.Vector1[float]](System.Func3[ubyte,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,40 +8,38 @@ ; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 4 ) byref -> x0 this single-def -; V01 arg1 [V01,T03] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> -; V02 arg2 [V02,T09] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T05] ( 4, 4 ) byref -> x0 this single-def +; V01 arg1 [V01,T03] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> +; V02 arg2 [V02,T09] ( 3, 2.25) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V04 loc1 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[ubyte]>
-; V08 tmp3 [V08,T05] ( 3, 6 ) ubyte -> x1 "Inline return value spill temp"
+; V08 tmp3 [V08,T04] ( 3, 0.75) ubyte -> x1 "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T10] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V12 tmp7 [V12,T02] ( 3, 12 ) int -> x1 "Inline return value spill temp"
+; V12 tmp7 [V12,T02] ( 3, 1.50) int -> x1 "Inline return value spill temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "field V07._one (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref "field V07._many (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15,T00] ( 7, 31 ) int -> x22 "V03.[000..004)" -; V16 tmp11 [V16,T06] ( 2, 3 ) ubyte -> x20 single-def "V03.[008..009)" -; V17 tmp12 [V17,T01] ( 6, 17 ) ref -> x21 single-def "V03.[016..024)"
+; V15 tmp10 [V15,T00] ( 7, 4.75) int -> x22 "V03.[000..004)" +; V16 tmp11 [V16,T06] ( 2, 1.25) ubyte -> x20 single-def "V03.[008..009)" +; V17 tmp12 [V17,T01] ( 6, 3 ) ref -> x21 single-def "V03.[016..024)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[000..004)" ; V19 tmp14 [V19,T08] ( 2, 2 ) ubyte -> x20 single-def "V06.[008..009)" ; V20 tmp15 [V20,T07] ( 2, 2 ) ref -> x21 single-def "V06.[016..024)" ;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M17406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp d8, d9, [sp, #0x10]
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] mov fp, sp
- mov v8.16b, v0.16b
mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] ldrb w20, [x0] @@ -50,14 +48,14 @@ G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, movn w22, #0 b G_M17406_IG06 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M17406_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M17406_IG03: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz x21, G_M17406_IG04 cbnz w22, G_M17406_IG15 sxtw w1, w20 b G_M17406_IG05
- ;; size=16 bbWeight=2 PerfScore 7.00 -G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.25 PerfScore 0.88 +G_M17406_IG04: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w1, [x21, #0x08] cmp w22, w1 bhs G_M17406_IG14 @@ -65,54 +63,51 @@ G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs +[x1] ldrb w1, [x1, w22, UXTW #2] ; byrRegs -[x1]
- ;; size=20 bbWeight=2 PerfScore 16.00 -G_M17406_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - mov v0.16b, v8.16b
+ ;; size=20 bbWeight=0.25 PerfScore 2.00 +G_M17406_IG05: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str q0, [fp, #0x10] // [V02 arg2]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0]
- mov v8.d[1], v9.d[0]
+ ldr q0, [fp, #0x10] // [V02 arg2]
cbnz w0, G_M17406_IG12
- ;; size=28 bbWeight=2 PerfScore 21.00 -G_M17406_IG06: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0.25 PerfScore 2.75 +G_M17406_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 cbz x21, G_M17406_IG08
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG07: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
ldr w1, [x21, #0x08] b G_M17406_IG09
- ;; size=8 bbWeight=2 PerfScore 8.00 -G_M17406_IG08: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M17406_IG08: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov w1, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M17406_IG09: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M17406_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
cmp w22, w1 blt G_M17406_IG03
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M17406_IG11: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17406_IG13: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00 @@ -137,7 +132,7 @@ G_M17406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 95.50, instruction count 60, allocated bytes for code 240 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
+; Total bytes of code 220, prolog size 16, PerfScore 25.53, instruction count 55, allocated bytes for code 220 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -148,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -161,7 +156,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
+ E4 end + E4 end

+32 (+66.67%) : 173611.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -23,26 +23,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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 (+69.23%) : 264783.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 23 ) ref -> x0 class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> -; V01 loc0 [V01,T01] ( 4, 10 ) ref -> x15 class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> -; V02 loc1 [V02,T02] ( 2, 8 ) ref -> x1 class-hnd exact <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec>
+; V00 arg0 [V00,T00] ( 13, 28 ) ref -> registers class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> +; V01 loc0 [V01,T01] ( 5, 11 ) ref -> registers class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> +; V02 loc1 [V02,T02] ( 4, 10 ) ref -> x1 class-hnd exact <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -22,9 +22,16 @@ G_M15149_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] mov x15, xzr ; gcrRegs +[x15]
- cbz x0, G_M15149_IG04 - ;; size=8 bbWeight=1 PerfScore 1.50
+ cbz x0, G_M15149_IG07 + ldr x1, [x0, #0x08] + ; gcrRegs +[x1] + str xzr, [x0, #0x08] + mov x15, x0 + mov x0, x1 + cbz x0, G_M15149_IG06 + ;; size=28 bbWeight=1 PerfScore 7.50
G_M15149_IG03: ; bbWeight=4, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1]
ldr x1, [x0, #0x08] ; gcrRegs +[x1] add x14, x0, #8 @@ -32,22 +39,34 @@ G_M15149_IG03: ; bbWeight=4, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {}, bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov x15, x0 - ; gcrRegs +[x15] - mov x0, x1 - cbnz x0, G_M15149_IG03 - ;; size=24 bbWeight=4 PerfScore 26.00 -G_M15149_IG04: ; bbWeight=1, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0-x1] - mov x0, x15 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M15149_IG05: ; bbWeight=1, epilog, nogc, extend
+ cbnz x1, G_M15149_IG05 + ;; size=16 bbWeight=4 PerfScore 22.00 +G_M15149_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M15149_IG05: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x1] + mov x15, x0 + ; gcrRegs +[x15] + mov x0, x1 + b G_M15149_IG03 + ;; size=12 bbWeight=2 PerfScore 4.00 +G_M15149_IG06: ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1] + mov x0, x15 + ; gcrRegs +[x0] + b G_M15149_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M15149_IG07: ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x15 + ; gcrRegs +[x0] + b G_M15149_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 52, prolog size 8, PerfScore 31.50, instruction count 13, allocated bytes for code 52 (MethodHash=8c6bc4d2) for method System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 38.50, instruction count 22, allocated bytes for code 88 (MethodHash=8c6bc4d2) for method System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+70.59%) : 229367.dasm - System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)

@@ -8,13 +8,15 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T02] ( 4, 12 ) byref -> x2 single-def
+; V01 arg1 [V01,T02] ( 6, 13.25) byref -> x2 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) int -> x4 "Span.get_Item index" -; V04 tmp2 [V04,T04] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V05 tmp3 [V05,T05] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T00] ( 6, 27 ) int -> x4 "Span.get_Item index" +; V04 tmp2 [V04,T04] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T05] ( 3, 5.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 cse0 [V06,T03] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T01] ( 3, 20 ) int -> x3 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 3, 1.25) int -> x3 "CSE - moderate" +; V08 cse2 [V08,T01] ( 3, 20 ) int -> x3 "CSE - aggressive" +; V09 cse3 [V09,T06] ( 3, 2.50) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,34 +28,56 @@ G_M33876_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ; byrRegs +[x0 x2] b G_M33876_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M33876_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
+G_M33876_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
str w3, [x2]
- ;; size=4 bbWeight=2 PerfScore 2.00 -G_M33876_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ b G_M33876_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.50 +G_M33876_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
ldr w3, [x2] cmp w3, #1
- ble G_M33876_IG06 - ;; size=12 bbWeight=8 PerfScore 36.00 -G_M33876_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ ble G_M33876_IG10 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M33876_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
sub w3, w3, #1 sxtw w4, w3 cmp w4, w1
- bhs G_M33876_IG07
+ bhs G_M33876_IG11
ldr w4, [x0, w4, UXTW #2] cbz w4, G_M33876_IG03
+ ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M33876_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0 x2] + b G_M33876_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M33876_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref + ; byrRegs +[x0 x2] + str w3, [x2] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M33876_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + ldr w3, [x2] + cmp w3, #1 + ble G_M33876_IG10 + ;; size=12 bbWeight=8 PerfScore 36.00 +G_M33876_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + sub w3, w3, #1 + sxtw w4, w3 + cmp w4, w1 + bhs G_M33876_IG11 + ldr w4, [x0, w4, UXTW #2] + cbz w4, G_M33876_IG07
;; size=24 bbWeight=4 PerfScore 26.00
-G_M33876_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M33876_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M33876_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33876_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 68.50, instruction count 17, allocated bytes for code 68 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 76.88, instruction count 29, allocated bytes for code 116 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm64.Release.mch

-36 (-15.00%) : 413723.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
; V01 loc0 [V01 ] ( 2, 2 ) ubyte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M4386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M4386_IG08
+ bne G_M4386_IG07
;; size=56 bbWeight=1 PerfScore 15.50 G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M4386_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M4386_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M4386_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M4386_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M4386_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M4386_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrb w0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4386_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M4386_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M4386_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M4386_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-36 (-15.00%) : 421388.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
; V01 loc0 [V01 ] ( 2, 2.00) byte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[byte]>
-; V04 tmp2 [V04,T02] ( 5, 5.00) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5.00) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2.00) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2.00) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M24034_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1.00 PerfScore 4.50
+ ;; size=16 bbWeight=1.00 PerfScore 3.50
G_M24034_IG02: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M24034_IG02: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M24034_IG08
+ bne G_M24034_IG07
;; size=56 bbWeight=1.00 PerfScore 15.50 G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M24034_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M24034_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M24034_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M24034_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M24034_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M24034_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrsb x0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M24034_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M24034_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M24034_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M24034_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-48 (-8.89%) : 173956.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)

@@ -9,11 +9,11 @@ ; 2 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 11, 13.30) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule> -; V01 loc0 [V01 ] ( 9, 56.99) struct (16) [fp+0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator> -; V02 loc1 [V02 ] ( 4, 0.04) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection>
+; V00 this [V00,T04] ( 10, 4.03) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule> +; V01 loc0 [V01 ] ( 9, 0.07) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator> +; V02 loc1 [V02 ] ( 4, 0.04) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.CustomAttributeHandle>
-; V04 loc3 [V04,T01] ( 5, 18.56) int -> x20
+; V04 loc3 [V04,T02] ( 3, 0.02) int -> x20
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle> ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Reflection.Metadata.CustomAttribute> ;* V07 loc6 [V07,T17] ( 0, 0 ) ubyte -> zero-ref @@ -29,13 +29,13 @@ ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.CustomAttributeHandle> ;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.CustomAttributeHandle>
-;* V20 tmp12 [V20,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V21 tmp13 [V21 ] ( 3, 9.29) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V01._reader (fldOffset=0x0)" P-DEP -; V22 tmp14 [V22 ] ( 3, 9.30) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V01._lastRowId (fldOffset=0x8)" P-DEP -; V23 tmp15 [V23 ] ( 7, 38.42) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V01._currentRowId (fldOffset=0xc)" P-DEP -; V24 tmp16 [V24 ] ( 2, 0.02) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reader (fldOffset=0x0)" P-DEP -; V25 tmp17 [V25 ] ( 2, 0.02) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._firstRowId (fldOffset=0x8)" P-DEP -; V26 tmp18 [V26 ] ( 2, 0.02) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._lastRowId (fldOffset=0xc)" P-DEP
+;* V20 tmp12 [V20,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V21 tmp13 [V21 ] ( 3, 0.02) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V01._reader (fldOffset=0x0)" P-DEP +; V22 tmp14 [V22 ] ( 3, 0.02) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V01._lastRowId (fldOffset=0x8)" P-DEP +; V23 tmp15 [V23 ] ( 7, 0.05) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V01._currentRowId (fldOffset=0xc)" P-DEP +; V24 tmp16 [V24 ] ( 2, 0.02) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._reader (fldOffset=0x0)" P-DEP +; V25 tmp17 [V25 ] ( 2, 0.02) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._firstRowId (fldOffset=0x8)" P-DEP +; V26 tmp18 [V26 ] ( 2, 0.02) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._lastRowId (fldOffset=0xc)" P-DEP
;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref "field V03._rowId (fldOffset=0x0)" P-INDEP ; V28 tmp20 [V28,T13] ( 2, 0 ) int -> x1 "field V05._rowId (fldOffset=0x0)" P-INDEP ; V29 tmp21 [V29,T10] ( 3, 0 ) ref -> x0 "field V06._reader (fldOffset=0x0)" P-INDEP @@ -44,28 +44,27 @@ ; V32 tmp24 [V32,T07] ( 3, 0.03) ref -> x0 single-def "field V12._reader (fldOffset=0x0)" P-INDEP ;* V33 tmp25 [V33,T09] ( 0, 0 ) int -> zero-ref single-def "field V12._firstRowId (fldOffset=0x8)" P-INDEP ; V34 tmp26 [V34,T08] ( 2, 0.02) int -> x1 single-def "field V12._lastRowId (fldOffset=0xc)" P-INDEP
-; V35 tmp27 [V35,T00] ( 6, 18.56) int -> x19 "field V13._rowId (fldOffset=0x0)" P-INDEP -; V36 tmp28 [V36,T02] ( 2, 18.56) int -> x19 "field V15._rowId (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T01] ( 5, 0.02) int -> x19 "field V13._rowId (fldOffset=0x0)" P-INDEP +; V36 tmp28 [V36,T03] ( 2, 0.02) int -> x19 "field V15._rowId (fldOffset=0x0)" P-INDEP
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._rowId (fldOffset=0x0)" P-INDEP ; V38 tmp30 [V38,T16] ( 2, 0 ) int -> x1 "field V19._rowId (fldOffset=0x0)" P-INDEP ; V39 tmp31 [V39,T12] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V40 PSPSym [V40,T05] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V40 PSPSym [V40,T05] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M13056_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x48] - str x21, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x40]
mov fp, sp
- stp xzr, xzr, [fp, #0x30] // [V01 loc0], [V01 loc0+0x08] - stp xzr, xzr, [fp, #0x20] // [V02 loc1], [V02 loc1+0x08] - add x1, sp, #96 - str x1, [fp, #0x40] // [V40 PSPSym] - str x0, [fp, #0x18] // [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V01 loc0], [V01 loc0+0x08] + stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08] + add x1, sp, #80 + str x1, [fp, #0x38] // [V40 PSPSym] + str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00 -G_M13056_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M13056_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] ldrb w1, [x0, #0x6D] cbz w1, G_M13056_IG06 @@ -77,22 +76,21 @@ G_M13056_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cset x0, eq ;; size=12 bbWeight=1 PerfScore 4.00 G_M13056_IG04: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M13056_IG05: ; bbWeight=0.01, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M13056_IG05: ; bbWeight=0.01, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - strb w0, [x20, #0x6D] - mov x0, x20
+ ldr x1, [fp, #0x10] // [V00 this] + ; gcrRegs +[x1] + strb w0, [x1, #0x6D] + ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] b G_M13056_IG03
- ;; size=20 bbWeight=0.01 PerfScore 0.05
+ ;; size=20 bbWeight=0.01 PerfScore 0.06
G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
+ ; gcrRegs -[x1]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -100,11 +98,11 @@ G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x1 ; gcr arg pop 0 ldr w1, [x0, #0xD1FFAB1E]
- str x0, [fp, #0x20] // [V24 tmp16]
+ str x0, [fp, #0x18] // [V24 tmp16]
mov w0, #1 ; gcrRegs -[x0]
- stp w0, w1, [fp, #0x28] // [V25 tmp17], [V26 tmp18] - add x0, fp, #32 // [V02 loc1]
+ stp w0, w1, [fp, #0x20] // [V25 tmp17], [V26 tmp18] + add x0, fp, #24 // [V02 loc1]
movz x1, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection:GetEnumerator():System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -112,81 +110,30 @@ G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x30] // [V01 loc0], [V01 loc0+0x08] - b G_M13056_IG08 - ;; size=68 bbWeight=0.01 PerfScore 0.19 -G_M13056_IG07: ; bbWeight=9.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ stp x0, x1, [fp, #0x28] // [V01 loc0], [V01 loc0+0x08] + ;; size=64 bbWeight=0.01 PerfScore 0.18 +G_M13056_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x30] // [V21 tmp13] - ; gcrRegs +[x0] - ldr x0, [x0, #0xD1FFAB1E] - cbnz x0, G_M13056_IG10 - ldr w0, [fp, #0x3C] // [V23 tmp15] - ; gcrRegs -[x0] - and w19, w0, #0xD1FFAB1E - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0] - mov w1, w19 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ; gcr arg pop 0 - sxtw w20, w0 - cmn w20, #1 - bne G_M13056_IG11 - ;; size=60 bbWeight=9.28 PerfScore 171.68 -G_M13056_IG08: ; bbWeight=9.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldp w1, w0, [fp, #0x38] // [V22 tmp14], [V23 tmp15]
+ ldp w1, w0, [fp, #0x30] // [V22 tmp14], [V23 tmp15]
cmp w0, w1
- bge G_M13056_IG09 - ldr w0, [fp, #0x3C] // [V23 tmp15] - add w0, w0, #1 - str w0, [fp, #0x3C] // [V23 tmp15] - b G_M13056_IG07 - ;; size=28 bbWeight=9.29 PerfScore 74.32 -G_M13056_IG09: ; bbWeight=1.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #0xD1FFAB1E - str w0, [fp, #0x3C] // [V23 tmp15] - b G_M13056_IG05 - ;; size=12 bbWeight=1.26 PerfScore 3.14 -G_M13056_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add x0, fp, #48 // [V01 loc0] - movz x1, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:GetCurrentCustomAttributeIndirect():System.Reflection.Metadata.CustomAttributeHandle:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - sxtw w19, w0 - ldr x0, [fp, #0x18] // [V00 this]
+ blt G_M13056_IG14 + ;; size=12 bbWeight=0.01 PerfScore 0.03 +G_M13056_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M13056_IG13 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M13056_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #2 + ldr x1, [fp, #0x10] // [V00 this] + ; gcrRegs +[x1] + strb w0, [x1, #0x6D] + mov x0, x1
; gcrRegs +[x0]
- mov w1, w19 - movz x2, #0xD1FFAB1E // code for <unknown method>
+ movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this
movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ; gcr arg pop 0 - sxtw w20, w0 - cmn w20, #1 - beq G_M13056_IG08 - ;; size=68 bbWeight=0 PerfScore 0.00 -G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #2 - ldr x21, [fp, #0x18] // [V00 this] - ; gcrRegs +[x21] - strb w0, [x21, #0x6D] - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ ; gcrRegs -[x1]
; gcr arg pop 0 mov w1, w19 movz x2, #0xD1FFAB1E // code for System.Reflection.Metadata.MetadataReader:GetCustomAttribute(System.Reflection.Metadata.CustomAttributeHandle):System.Reflection.Metadata.CustomAttribute:this @@ -215,7 +162,7 @@ G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x1 ; gcr arg pop 0 sxtw w1, w0
- mov x0, x21
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] mov w2, w19 mov w3, w20 @@ -226,37 +173,81 @@ G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x4 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=152 bbWeight=0 PerfScore 0.00 -G_M13056_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x21]
+ b G_M13056_IG15 + ;; size=156 bbWeight=0 PerfScore 0.00 +G_M13056_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #40 // [V01 loc0] + movz x2, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:GetCurrentCustomAttributeIndirect():System.Reflection.Metadata.CustomAttributeHandle:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
...

+48 (+66.67%) : 417704.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2230System.Int128,System.Numerics.Tensors.TensorPrimitives+IdentityOperator1[System.Int128],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator1[System.Int128] (Tier1)

@@ -9,11 +9,11 @@ ; 0 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T12] ( 3,131.12) byref -> x0 single-def
+; V00 arg0 [V00,T12] ( 4,132.11) byref -> x0 single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Int128>
-; V02 arg2 [V02,T13] ( 3,131.12) byref -> x3 single-def -; V03 arg3 [V03,T11] ( 4,132.12) long -> x4 single-def -; V04 loc0 [V04,T02] ( 5,517.48) long -> x5
+; V02 arg2 [V02,T13] ( 4,132.11) byref -> x3 single-def +; V03 arg3 [V03,T11] ( 5,133.11) long -> x4 single-def +; V04 loc0 [V04,T03] ( 5,517.47) long -> x9
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Int128> @@ -26,8 +26,8 @@ ;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V15 tmp10 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V17 tmp12 [V17,T06] ( 2,258.24) long -> x9 ld-addr-op "Inline ldloca(s) first use temp" -; V18 tmp13 [V18,T07] ( 2,258.24) long -> x7 "Inline stloc first use temp"
+; V17 tmp12 [V17,T06] ( 4,260.23) long -> registers ld-addr-op "Inline ldloca(s) first use temp" +; V18 tmp13 [V18,T07] ( 4,260.23) long -> registers "Inline stloc first use temp"
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" ;* V21 tmp16 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" @@ -36,10 +36,10 @@ ;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128> ;* V25 tmp20 [V25 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V27 tmp22 [V27,T04] ( 4,388.36) long -> x1 single-def "field V01._lower (fldOffset=0x0)" P-INDEP -; V28 tmp23 [V28,T14] ( 2,130.12) long -> x2 single-def "field V01._upper (fldOffset=0x8)" P-INDEP -; V29 tmp24 [V29,T03] ( 4,516.48) long -> x8 "field V06._lower (fldOffset=0x0)" P-INDEP -; V30 tmp25 [V30,T08] ( 2,258.24) long -> x7 "field V06._upper (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T04] ( 7,391.34) long -> x1 single-def "field V01._lower (fldOffset=0x0)" P-INDEP +; V28 tmp23 [V28,T14] ( 3,131.11) long -> x2 single-def "field V01._upper (fldOffset=0x8)" P-INDEP +; V29 tmp24 [V29,T02] ( 8,520.45) long -> x6 "field V06._lower (fldOffset=0x0)" P-INDEP +; V30 tmp25 [V30,T08] ( 4,260.23) long -> registers "field V06._upper (fldOffset=0x8)" P-INDEP
;* V31 tmp26 [V31 ] ( 0, 0 ) long -> zero-ref "field V07._lower (fldOffset=0x0)" P-INDEP ;* V32 tmp27 [V32 ] ( 0, 0 ) long -> zero-ref "field V07._upper (fldOffset=0x8)" P-INDEP ;* V33 tmp28 [V33 ] ( 0, 0 ) long -> zero-ref "field V08._lower (fldOffset=0x0)" P-INDEP @@ -54,11 +54,11 @@ ;* V42 tmp37 [V42 ] ( 0, 0 ) long -> zero-ref "field V14._upper (fldOffset=0x8)" P-INDEP ;* V43 tmp38 [V43 ] ( 0, 0 ) long -> zero-ref "field V19._lower (fldOffset=0x0)" P-INDEP ;* V44 tmp39 [V44 ] ( 0, 0 ) long -> zero-ref "field V19._upper (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T09] ( 2,258.24) long -> x9 "field V24._lower (fldOffset=0x0)" P-INDEP -; V46 tmp41 [V46,T10] ( 2,258.24) long -> x7 "field V24._upper (fldOffset=0x8)" P-INDEP -; V47 tmp42 [V47,T00] ( 3,774.72) byref -> x7 "BlockOp address local" -; V48 tmp43 [V48,T01] ( 3,774.72) byref -> x6 "BlockOp address local" -; V49 cse0 [V49,T05] ( 3,387.36) long -> x6 "CSE - aggressive"
+; V45 tmp40 [V45,T09] ( 4,260.23) long -> x8 "field V24._lower (fldOffset=0x0)" P-INDEP +; V46 tmp41 [V46,T10] ( 4,260.23) long -> x5 "field V24._upper (fldOffset=0x8)" P-INDEP +; V47 tmp42 [V47,T00] ( 6,780.68) byref -> x5 "BlockOp address local" +; V48 tmp43 [V48,T01] ( 6,780.68) byref -> x7 "BlockOp address local" +; V49 cse0 [V49,T05] ( 3,387.36) long -> x7 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -68,33 +68,51 @@ G_M46552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz ; byrRegs +[x0 x3]
- mov x5, xzr - cbz x4, G_M46552_IG04 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M46552_IG03: ; bbWeight=129.12, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz - lsl x6, x5, #4 - add x7, x0, x6
+ cbz x4, G_M46552_IG05 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M46552_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz + mov x5, x0 + ; byrRegs +[x5] + ldp x6, x7, [x5] + mul x8, x6, x1 + umulh x5, x6, x1 + ; byrRegs -[x5] + madd x7, x7, x1, x5 + madd x5, x6, x2, x7 + mov x7, x3
; byrRegs +[x7]
- ldp x8, x7, [x7]
+ stp x8, x5, [x7] + mov x9, #1 + cmp x4, #1 + bls G_M46552_IG05 + ;; size=44 bbWeight=0.99 PerfScore 24.81 +G_M46552_IG04: ; bbWeight=129.12, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- mul x9, x8, x1 - umulh x10, x8, x1 - madd x7, x7, x1, x10 - madd x7, x8, x2, x7 - add x6, x3, x6 - ; byrRegs +[x6] - stp x9, x7, [x6] - add x5, x5, #1 - cmp x5, x4 - blo G_M46552_IG03 - ;; size=48 bbWeight=129.12 PerfScore 3357.14 -G_M46552_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x0 x3 x6]
+ lsl x7, x9, #4 + add x5, x0, x7 + ; byrRegs +[x5] + ldp x6, x8, [x5] + mul x5, x6, x1 + ; byrRegs -[x5] + umulh x10, x6, x1 + madd x8, x8, x1, x10 + madd x6, x6, x2, x8 + mov x8, x5 + mov x5, x6 + add x7, x3, x7 + ; byrRegs +[x7] + stp x8, x5, [x7] + add x9, x9, #1 + cmp x9, x4 + blo G_M46552_IG04 + ;; size=56 bbWeight=129.12 PerfScore 3486.26 +G_M46552_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[x0 x3 x7]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 8, PerfScore 3362.14, instruction count 18, allocated bytes for code 72 (MethodHash=deb04a27) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__SoftwareFallback|223_0[System.Int128,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[System.Int128],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[System.Int128]](byref,System.Int128,byref,ulong) (Tier1)
+; Total bytes of code 120, prolog size 8, PerfScore 3515.56, instruction count 30, allocated bytes for code 120 (MethodHash=deb04a27) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__SoftwareFallback|223_0[System.Int128,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[System.Int128],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[System.Int128]](byref,System.Int128,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -105,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ 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)

+24 (+75.00%) : 175893.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+75.00%) : 673244.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 28012 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- 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

-40 (-9.17%) : 214890.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)

@@ -8,36 +8,34 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
+; V00 this [V00,T04] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
; V01 arg1 [V01,T02] ( 6, 6 ) ref -> x19 class-hnd single-def <ubyte[]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V05 tmp3 [V05,T01] ( 2, 10 ) int -> x21 "Inlining Arg"
+; V05 tmp3 [V05,T01] ( 2, 4 ) int -> x0 "Inlining Arg"
; V06 tmp4 [V06,T05] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 1 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> x22 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 cse0 [V14,T04] ( 2, 5 ) byref -> x23 hoist "CSE - aggressive"
+; V14 cse0 [V14,T03] ( 2, 2 ) byref -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M39649_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x20]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50 -G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=1 PerfScore 3.50 +G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E @@ -50,36 +48,26 @@ G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0] ldr w1, [x19, #0x08]
- lsl w21, w1, #3
+ lsl w0, w1, #3
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w22, wzr - add x23, x1, #16 - ; byrRegs +[x23] - ;; size=68 bbWeight=1 PerfScore 17.00 -G_M39649_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x23, w22, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
- add x2, fp, #16 // [V07 tmp5] - mov w0, w21
+ ; byrRegs -[x1] + add x2, fp, #24 // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M39649_IG04 - add w22, w22, #1 - cmp w22, #0 - bgt G_M39649_IG06 - b G_M39649_IG03 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x23]
+ cbz w0, G_M39649_IG04
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.TripleDES:IsWeakKey(ubyte[]):ubyte @@ -88,7 +76,7 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x1] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M39649_IG07
+ cbnz w0, G_M39649_IG05
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -99,16 +87,14 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 13.50 -G_M39649_IG05: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ;; size=152 bbWeight=1 PerfScore 40.00 +G_M39649_IG03: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - strb wzr, [fp, #0x10] // [V07 tmp5]
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M39649_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + strb wzr, [fp, #0x18] // [V07 tmp5]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +123,7 @@ G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=80 bbWeight=0 PerfScore 0.00
-G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -186,7 +172,7 @@ G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=132 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 20, PerfScore 96.00, instruction count 109, allocated bytes for code 436 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
+; Total bytes of code 396, prolog size 12, PerfScore 46.50, instruction count 99, allocated bytes for code 396 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -197,7 +183,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -205,9 +191,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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
E4 end

-16 (-8.51%) : 177460.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -12,9 +12,9 @@ ; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]> ;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 20.91) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 2.98) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,7 +22,7 @@ G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -37,23 +37,15 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=1.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG07 - ;; size=8 bbWeight=1.98 PerfScore 7.91 -G_M2572_IG04: ; bbWeight=5.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x2] - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=12 bbWeight=5.98 PerfScore 11.95 -G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG05 + ;; size=52 bbWeight=1 PerfScore 10.50 +G_M2572_IG03: ; bbWeight=3.02, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -69,13 +61,13 @@ G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #0xD1FFAB1E LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=3.02 PerfScore 30.24 +G_M2572_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -94,7 +86,7 @@ G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 40.36, instruction count 47, allocated bytes for code 188 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 172, prolog size 8, PerfScore 44.24, instruction count 43, allocated bytes for code 172 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ 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)

-32 (-8.00%) : 225231.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)

@@ -9,62 +9,58 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.RC2>
-; V01 arg1 [V01,T01] ( 7, 9 ) int -> x19 single-def
+; V01 arg1 [V01,T01] ( 7, 5.50) int -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V06 tmp4 [V06,T04] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 0.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V13 cse0 [V13,T03] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
+; V13 cse0 [V13,T03] ( 2, 1 ) byref -> x1 "CSE - aggressive"
; ; Lcl frame size = 16 G_M43684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov w19, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M43684_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x38] cmp w19, w1
- bgt G_M43684_IG09
+ bgt G_M43684_IG07
cbnz w19, G_M43684_IG05 ;; size=16 bbWeight=1 PerfScore 5.50 G_M43684_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref str wzr, [x20, #0x3C] ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M43684_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M43684_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz cmp w19, #40
- blt G_M43684_IG10
+ blt G_M43684_IG08
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w21, wzr - add x22, x1, #16 - ; byrRegs +[x22] - ;; size=32 bbWeight=0.50 PerfScore 3.50 -G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x22, w21, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
+ ; byrRegs -[x1]
add x2, fp, #24 // [V07 tmp5] mov w0, w19 movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte @@ -73,23 +69,15 @@ G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M43684_IG07 - add w21, w21, #1 - cmp w21, #0 - bgt G_M43684_IG11 - b G_M43684_IG06 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M43684_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+ cbz w0, G_M43684_IG09
str w19, [x20, #0x3C]
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M43684_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+ ;; size=68 bbWeight=0.50 PerfScore 9.00 +G_M43684_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M43684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -119,7 +107,7 @@ G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -148,7 +136,7 @@ G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb wzr, [fp, #0x18] // [V07 tmp5] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +168,7 @@ G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 16, PerfScore 72.50, instruction count 100, allocated bytes for code 400 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
+; Total bytes of code 368, prolog size 12, PerfScore 21.50, instruction count 92, allocated bytes for code 368 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -191,7 +179,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -202,9 +190,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

+44 (+64.71%) : 69262.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+68.75%) : 204571.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)

@@ -8,28 +8,40 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
-; V01 loc0 [V01,T00] ( 3, 24 ) int -> x0
+; V01 loc0 [V01,T00] ( 6, 27 ) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3, 17 ) byref -> x19 hoist "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 5, 19 ) byref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] add x19, x0, #16 ; byrRegs +[x19]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x0]
ldapr w0, [x19]
- add w0, w0, #1 - stlr w0, [x19] - tst w0, #0xD1FFAB1E
+ ; gcrRegs -[x0] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E + bne G_M38489_IG03 + mov w0, wzr + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + ;; size=48 bbWeight=1 PerfScore 12.50 +G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldapr w0, [x19] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E
bne G_M38489_IG03 mov w0, wzr movz x1, #0xD1FFAB1E // code for <unknown method> @@ -41,7 +53,7 @@ G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by b G_M38489_IG03 ;; size=48 bbWeight=8 PerfScore 104.00
-; Total bytes of code 64, prolog size 12, PerfScore 107.00, instruction count 16, allocated bytes for code 64 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 119.00, instruction count 27, allocated bytes for code 108 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
; ============================================================ Unwind Info: @@ -52,12 +64,12 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ---- E1 set_fp; mov fp, sp
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end E4 end

+48 (+75.00%) : 300106.dasm - System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:b_00():this (FullOpts)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.CESchedulerPairTests+<>c>
-; V01 loc0 [V01 ] ( 2, 10 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
+; V01 loc0 [V01 ] ( 4, 11.25) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04 ] ( 2, 10 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
+; V04 tmp2 [V04 ] ( 4, 11.25) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
; ; Lcl frame size = 16 @@ -24,7 +24,25 @@ G_M31209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M31209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref b G_M31209_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31209_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V01 loc0] + mov w1, #20 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + b G_M31209_IG07 + ;; size=32 bbWeight=0.25 PerfScore 1.88 +G_M31209_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr w0, [fp, #0x18] // [V04 tmp2] + cmp w0, #10 + bge G_M31209_IG08 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M31209_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M31209_IG03 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M31209_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] mov w1, #20 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -33,17 +51,17 @@ G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M31209_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31209_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x18] // [V04 tmp2] cmp w0, #10
- blt G_M31209_IG03
+ blt G_M31209_IG06
;; size=12 bbWeight=8 PerfScore 28.00
-G_M31209_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M31209_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=4 PerfScore 8.00
-; Total bytes of code 64, prolog size 12, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 58.38, instruction count 28, allocated bytes for code 112 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.linux.arm64.checked.mch

-44 (-33.33%) : 2046.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)

@@ -8,18 +8,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) byref -> x0 single-def -; V01 arg1 [V01,T05] ( 4, 4 ) byref -> x1 single-def -; V02 arg2 [V02,T06] ( 4, 4 ) byref -> x2 single-def -;* V03 loc0 [V03,T10] ( 0, 0 ) int -> zero-ref -; V04 loc1 [V04,T07] ( 2, 5 ) byref -> x2 single-def -; V05 loc2 [V05,T08] ( 2, 5 ) byref -> x1 single-def -; V06 loc3 [V06,T00] ( 5, 17 ) int -> x3 -; V07 loc4 [V07,T01] ( 4, 16 ) byref -> x5 -; V08 loc5 [V08,T03] ( 3, 12 ) byref -> x6
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> x0 single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> x1 single-def +; V02 arg2 [V02,T02] ( 4, 4 ) byref -> x2 single-def +;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref +; V04 loc1 [V04,T05] ( 2, 2 ) byref -> x2 single-def +; V05 loc2 [V05,T06] ( 2, 2 ) byref -> x1 single-def +;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref +; V07 loc4 [V07,T03] ( 4, 4 ) byref -> x0 +; V08 loc5 [V08,T04] ( 3, 3 ) byref -> x2
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T09] ( 2, 5 ) byref -> x0 hoist "CSE - aggressive" -; V11 cse1 [V11,T02] ( 4, 16 ) long -> x4 "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,41 +34,26 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2} stp xzr, xzr, [x2, #0x20] str xzr, [x2, #0x30] add x1, x1, #4
- mov w3, wzr
ldrsb wzr, [x0] add x0, x0, #28
- ;; size=36 bbWeight=1 PerfScore 9.50 -G_M31235_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2}, byref, isz - sxtw x4, w3 - mov x5, #20 - mul x5, x4, x5 - add x5, x0, x5 - ; byrRegs +[x5] - lsl x6, x4, #4 - add x6, x2, x6 - ; byrRegs +[x6] - ldr w7, [x5, #0x10] - lsl x4, x4, #2 - str w7, [x1, x4] - ldr d16, [x5] - ldr w4, [x5, #0x08] - mov v16.s[2], w4 - str d16, [x6] - mov w4, v16.s[2] - str w4, [x6, #0x08] - ldr s16, [x5, #0x0C] - str s16, [x6, #0x0C] - add w3, w3, #1 - cmp w3, #0 - ble G_M31235_IG03 - ;; size=80 bbWeight=4 PerfScore 104.00 -G_M31235_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x0-x2 x5-x6]
+ ldr w3, [x0, #0x10] + str w3, [x1] + ldr d16, [x0] + ldr w1, [x0, #0x08] + ; byrRegs -[x1] + mov v16.s[2], w1 + str d16, [x2] + mov w1, v16.s[2] + str w1, [x2, #0x08] + ldr s16, [x0, #0x0C] + str s16, [x2, #0x0C] + ;; size=72 bbWeight=1 PerfScore 27.00 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 132, prolog size 8, PerfScore 117.00, instruction count 33, allocated bytes for code 132 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 30.50, instruction count 22, allocated bytes for code 88 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.90%) : 32926.dasm - System.Linq.Expressions.CachedReflectionInfo:getMethodBaseGetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)

@@ -15,9 +15,9 @@ ;* V04 tmp4 [V04,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V06 tmp6 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Reflection.MethodInfo>
-; V07 tmp7 [V07,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp"
+;* V07 tmp7 [V07,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V09 cse0 [V09,T01] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
+; V09 cse0 [V09,T01] ( 2, 1 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -31,9 +31,9 @@ G_M10374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- cbnz x0, G_M10374_IG06
+ cbnz x0, G_M10374_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -49,22 +49,14 @@ G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=0.50 PerfScore 3.50 -G_M10374_IG04: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M10374_IG07 - add w0, w0, #1 - cmp w0, #1 - blt G_M10374_IG04 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M10374_IG05
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E @@ -89,12 +81,12 @@ G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=84 bbWeight=0.50 PerfScore 7.00 -G_M10374_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=136 bbWeight=0.50 PerfScore 12.25 +G_M10374_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10374_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -113,7 +105,7 @@ G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 43.50, instruction count 58, allocated bytes for code 232 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 21.25, instruction count 54, allocated bytes for code 216 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -124,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-3.70%) : 10131.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)

@@ -11,11 +11,13 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.NameResolution+MakeCtorGroup@243> ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <FSharp.Compiler.Infos+MethInfo> ; V02 loc0 [V02,T04] ( 3, 2.50) ref -> x0 class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[int]>
-; V03 loc1 [V03,T02] ( 4, 9 ) int -> x1 -; V04 loc2 [V04,T00] ( 4, 12.50) ref -> x0 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]> -; V05 loc3 [V05,T01] ( 3, 12 ) ref -> x2 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
+; V03 loc1 [V03,T02] ( 4, 9 ) int -> x0 +; V04 loc2 [V04,T00] ( 6, 13.50) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]> +; V05 loc3 [V05,T01] ( 5, 13 ) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V08 cse0 [V08,T05] ( 3, 2.50) ref -> x1 "CSE - aggressive" +; V09 cse1 [V09,T06] ( 2, 1 ) int -> x0 "CSE - moderate"
; ; Lcl frame size = 0 @@ -47,37 +49,35 @@ G_M3240_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0] - mov w1, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3240_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0, #0x08] - ; gcrRegs +[x2] - cbz x2, G_M3240_IG07
+G_M3240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0-x1]
ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- adds w1, w1, w0 - bvs G_M3240_IG09 - mov x0, x2 - ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M3240_IG06: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M3240_IG07 + ldr w1, [x1, #0x10] + ; gcrRegs -[x1] + adds w0, w0, w1 + bvs G_M3240_IG08 + mov x1, x2 + ; gcrRegs +[x1]
b G_M3240_IG06 ;; size=28 bbWeight=4 PerfScore 40.00
-G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x2] - mov w0, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3240_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1-x2]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3240_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3240_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 8, PerfScore 57.25, instruction count 27, allocated bytes for code 108 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 58.25, instruction count 26, allocated bytes for code 104 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+62.50%) : 24562.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 22 ) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> -; V01 loc0 [V01,T01] ( 3, 13 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
+; V00 arg0 [V00,T00] ( 10, 24.50) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> +; V01 loc0 [V01,T01] ( 5, 14.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -24,10 +24,11 @@ G_M1427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M1427_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M1427_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M1427_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M1427_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x19, [x19, #0x10]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ b G_M1427_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M1427_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -36,19 +37,41 @@ G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x19, G_M1427_IG06 - ;; size=24 bbWeight=8 PerfScore 32.00 -G_M1427_IG05: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=1 PerfScore 4.00 +G_M1427_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cbz x0, G_M1427_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M1427_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + b G_M1427_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M1427_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] +[x19] + ldr x19, [x19, #0x10] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M1427_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=8 PerfScore 32.00 +G_M1427_IG09: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M1427_IG07
;; size=4 bbWeight=4 PerfScore 4.00
-G_M1427_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1427_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 64, prolog size 16, PerfScore 50.00, instruction count 16, allocated bytes for code 64 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
+; Total bytes of code 104, prolog size 16, PerfScore 55.62, instruction count 26, allocated bytes for code 104 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 24662.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M15847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M15847_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M15847_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x18] cmp w1, w3 bge G_M15847_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M15847_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M15847_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M15847_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M15847_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M15847_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M15847_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M15847_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M15847_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M15847_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M15847_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M15847_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M15847_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x18] + cmp w1, w3 + bge G_M15847_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M15847_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M15847_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M15847_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M15847_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M15847_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M15847_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M15847_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M15847_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #32 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M15847_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M15847_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+70.59%) : 31434.dasm - System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)

@@ -8,67 +8,93 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
+; V00 this [V00,T04] ( 7, 17 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 17 ) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T04] ( 3, 17 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 4, 25 ) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
+; V02 tmp1 [V02,T02] ( 6, 19.12) ref -> x1 "CASTCLASS eval op1" +; V03 tmp2 [V03,T03] ( 6, 19.12) long -> x3 "fgMakeTemp is creating a new local variable" +; V04 tmp3 [V04,T00] ( 8, 29.12) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
; V05 cse0 [V05,T01] ( 3, 20 ) ref -> x1 "CSE - aggressive"
+; V06 cse1 [V06,T06] ( 3, 2.50) ref -> x1 "CSE - aggressive" +; V07 cse2 [V07,T05] ( 3, 5 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40934_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M40934_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x1, [x0, #0x20] ; gcrRegs +[x1]
- cbz x1, G_M40934_IG06 - ;; size=8 bbWeight=8 PerfScore 32.00 -G_M40934_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M40934_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x1 ; gcrRegs +[x0] ldr x2, [x0]
- movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + mov x3, x19
cmp x2, x3 beq G_M40934_IG05
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.50 +G_M40934_IG04: ; bbWeight=0.06, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x3 + bl CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + ;; size=8 bbWeight=0.06 PerfScore 0.09 +G_M40934_IG05: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x20] + ; gcrRegs +[x1] + cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=8 PerfScore 32.00 +G_M40934_IG06: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x1 + ; gcrRegs +[x0] + ldr x2, [x0] + mov x3, x19 + cmp x2, x3 + beq G_M40934_IG08 + ;; size=20 bbWeight=4 PerfScore 22.00 +G_M40934_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x3 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M40934_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - b G_M40934_IG02
+G_M40934_IG08: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + b G_M40934_IG05
;; size=4 bbWeight=4 PerfScore 4.00
-G_M40934_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M40934_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w0, [x0, #0x64] ; gcrRegs -[x0] ;; size=4 bbWeight=1 PerfScore 3.00
-G_M40934_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M40934_IG10: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 68, prolog size 8, PerfScore 69.25, instruction count 17, allocated bytes for code 68 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 75.84, instruction count 29, allocated bytes for code 116 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -76,7 +102,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 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
E4 end E4 end

smoke_tests.nativeaot.linux.arm64.checked.mch

-24 (-11.11%) : 1712.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)

@@ -7,33 +7,33 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 18 ) ref -> x19 this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> -; V01 arg1 [V01,T03] ( 7, 9 ) ref -> x20 class-hnd single-def <System.Linq.Expressions.InvocationExpression> -; V02 loc0 [V02,T06] ( 2, 5 ) ref -> x21 class-hnd exact single-def <System.String> -; V03 loc1 [V03,T02] ( 5, 17 ) int -> x22 -;* V04 loc2 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V00 this [V00,T00] ( 9, 9 ) ref -> x19 this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> +; V01 arg1 [V01,T01] ( 7, 6 ) ref -> x20 class-hnd single-def <System.Linq.Expressions.InvocationExpression> +; V02 loc0 [V02,T04] ( 2, 2 ) ref -> x1 class-hnd exact single-def <System.String> +;* V03 loc1 [V03,T07] ( 0, 0 ) int -> zero-ref +;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V09 tmp4 [V09,T04] ( 2, 8 ) ref -> x1 "guarded devirt return temp"
+; V09 tmp4 [V09,T05] ( 2, 2 ) ref -> x1 "guarded devirt return temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V12 tmp7 [V12,T05] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> -; V13 tmp8 [V13,T00] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
+; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> +; V13 tmp8 [V13,T03] ( 3, 6 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Text.StringBuilder> +; V14 cse0 [V14,T06] ( 2, 2 ) byref -> x1 "CSE - aggressive"
; ; Lcl frame size = 0 G_M18080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M18080_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -56,30 +56,28 @@ G_M18080_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2, #0x30] blr x2 ; gcrRegs -[x1]
- adrp x21, [HIGH RELOC #0xD1FFAB1E] - add x21, x21, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x21] - mov w22, wzr - ldr x2, [x20]
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E]
- cmp x2, x1 - beq G_M18080_IG06 - ;; size=80 bbWeight=1 PerfScore 26.50 -G_M18080_IG03: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x1] + ldr x2, [x20] + adrp x0, [HIGH RELOC #0xD1FFAB1E]
; gcrRegs -[x0]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E] + cmp x2, x0 + beq G_M18080_IG04
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldrsb wzr, [x0] mov w2, #2
- add x1, x21, #12
+ add x1, x1, #12 + ; gcrRegs -[x1]
; byrRegs +[x1] bl <unknown method> ; gcrRegs -[x0] ; byrRegs -[x1] mov x0, x20 ; gcrRegs +[x0]
- mov w1, w22
+ mov w1, wzr
bl System.Linq.Expressions.InvocationExpression1:GetArgument(int):System.Linq.Expressions.Expression:this mov x1, x0 ; gcrRegs +[x1] @@ -88,27 +86,19 @@ G_M18080_IG03: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldr x2, [x2, #0x30] blr x2 ; gcrRegs -[x1]
- add w22, w22, #1 - cmp w22, #0 - ble G_M18080_IG03 - ;; size=64 bbWeight=4 PerfScore 80.00 -G_M18080_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x21]
ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
mov w1, #41 ldr wzr, [x0] bl System.Text.StringBuilder:Append(ushort):System.Text.StringBuilder:this ; gcrRegs -[x19] mov x0, x20
- ;; size=20 bbWeight=1 PerfScore 8.00 -G_M18080_IG05: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+ ;; size=148 bbWeight=1 PerfScore 52.00 +G_M18080_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M18080_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x20 ; gcrRegs +[x0] @@ -117,17 +107,15 @@ G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 216, prolog size 16, PerfScore 123.00, instruction count 54, allocated bytes for code 216 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 58.50, instruction count 48, allocated bytes for code 192 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x30
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8 CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x10 CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x18
- CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x20 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x16 Offset:0x28 - CodeOffset: 0x10 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D

-4 (-2.94%) : 6423.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -8,21 +8,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd exact single-def <Internal.TypeSystem.NoMetadata.NoMetadataType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> x19 single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> x19 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> x20 single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> x20 single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> x0 "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> x22 hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> x0 "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,10 +41,10 @@ G_M3627_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ldr w22, [x20, #0x08] b G_M3627_IG04 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M3627_IG03: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] cmp w21, w22
- bhs G_M3627_IG10
+ bhs G_M3627_IG09
add x0, x20, #16 ; byrRegs +[x0] ldr x0, [x0, w21, UXTW #3] @@ -55,41 +55,38 @@ G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by ldr x2, [x2, #0x40] blr x2 ; gcrRegs -[x0]
- cbnz w0, G_M3627_IG06 - ;; size=36 bbWeight=2 PerfScore 27.00 -G_M3627_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M3627_IG07 + ;; size=36 bbWeight=0.25 PerfScore 3.38 +G_M3627_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w22, w21 bgt G_M3627_IG03
- ;; size=12 bbWeight=8 PerfScore 16.00 -G_M3627_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M3627_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M3627_IG08 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M3627_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3627_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M3627_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3627_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M3627_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3627_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M3627_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M3627_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 63.00, instruction count 34, allocated bytes for code 136 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 21.38, instruction count 33, allocated bytes for code 132 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Cfi Info:

-4 (-2.38%) : 6808.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)

@@ -7,16 +7,17 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 14, 28.50) byref -> x0 this single-def -; V01 loc0 [V01,T03] ( 4, 5 ) byref -> x1 -; V02 loc1 [V02,T02] ( 4, 8 ) int -> x2
+; V00 this [V00,T00] ( 13, 8.75) byref -> x0 this single-def +; V01 loc0 [V01,T03] ( 4, 1.50) byref -> x1 +; V02 loc1 [V02,T02] ( 4, 1 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 1.50) ref -> x1 class-hnd exact "impAppendStmt" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
-; V06 tmp3 [V06,T04] ( 2, 2 ) int -> x2 "Inlining Arg" -; V07 tmp4 [V07,T05] ( 2, 2 ) int -> x1 "Inlining Arg" -; V08 tmp5 [V08,T06] ( 2, 1 ) int -> x2 "field V05.key (fldOffset=0x0)" P-INDEP -; V09 tmp6 [V09,T07] ( 2, 1 ) int -> x1 "field V05.value (fldOffset=0x4)" P-INDEP
+; V06 tmp3 [V06,T05] ( 2, 2 ) int -> x2 "Inlining Arg" +; V07 tmp4 [V07,T06] ( 2, 2 ) int -> x1 "Inlining Arg" +; V08 tmp5 [V08,T07] ( 2, 1 ) int -> x2 "field V05.key (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T08] ( 2, 1 ) int -> x1 "field V05.value (fldOffset=0x4)" P-INDEP +; V10 cse0 [V10,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,7 +35,7 @@ G_M20310_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w1, w2 bne G_M20310_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M20310_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M20310_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0, #0x0C] ldr x2, [x0] ; gcrRegs +[x2] @@ -42,28 +43,26 @@ G_M20310_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x2] cmp w1, w2 blo G_M20310_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M20310_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x1, [x0] - ; gcrRegs +[x1] - ldr w1, [x1, #0x38] - ; gcrRegs -[x1] - add w1, w1, #1
+ add w1, w2, #1
str w1, [x0, #0x0C] str xzr, [x0, #0x14] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M20310_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M20310_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M20310_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x1, [x0]
+ ldr x2, [x0] + ; gcrRegs +[x2] + ldr x1, [x2, #0x10]
; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
ldr w2, [x0, #0x0C]
+ ; gcrRegs -[x2]
add w3, w2, #1 str w3, [x0, #0x0C] ldr w3, [x1, #0x08] @@ -76,8 +75,9 @@ G_M20310_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x1] ldr w2, [x1, #0x04] cmn w2, #1
- blt G_M20310_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M20310_IG07 + b G_M20310_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M20310_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref ldp w2, w1, [x1, #0x08] ; byrRegs -[x1] @@ -99,7 +99,7 @@ G_M20310_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 8, PerfScore 147.75, instruction count 42, allocated bytes for code 168 (MethodHash=5c1ab0a9) for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 164, prolog size 8, PerfScore 33.88, instruction count 41, allocated bytes for code 164 (MethodHash=5c1ab0a9) for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Cfi Info:

+24 (+54.55%) : 15583.dasm - System.Threading.Interlocked:ExchangeAdd(byref,int):int (FullOpts)

@@ -7,36 +7,44 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) byref -> x0 single-def -; V01 arg1 [V01,T02] ( 3, 10 ) int -> x1 single-def -; V02 loc0 [V02,T00] ( 5, 33 ) int -> x2
+; V00 arg0 [V00,T01] ( 6, 20 ) byref -> x0 single-def +; V01 arg1 [V01,T02] ( 4, 11 ) int -> x1 single-def +; V02 loc0 [V02,T00] ( 9, 37 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0
-G_M59266_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M59266_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M59266_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M59266_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldr w2, [x0] add w3, w2, w1 mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M59266_IG02
+ beq G_M59266_IG04 + ;; size=24 bbWeight=1 PerfScore 8.50 +G_M59266_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w2, [x0] + add w3, w2, w1 + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M59266_IG03
;; size=24 bbWeight=8 PerfScore 68.00
-G_M59266_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59266_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] mov w0, w2 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M59266_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M59266_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 44, prolog size 8, PerfScore 82.50, instruction count 11, allocated bytes for code 44 (MethodHash=ba1c187d) for method System.Threading.Interlocked:ExchangeAdd(byref,int):int (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 80.50, instruction count 17, allocated bytes for code 68 (MethodHash=ba1c187d) for method System.Threading.Interlocked:ExchangeAdd(byref,int):int (FullOpts)
; ============================================================ Cfi Info:

+32 (+57.14%) : 14155.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T04] ( 4, 4 ) int -> x2 single-def -; V02 arg2 [V02,T02] ( 3, 6 ) ushort -> x3 single-def -; V03 loc0 [V03,T00] ( 6, 18 ) int -> x4
+; V01 arg1 [V01,T03] ( 4, 4 ) int -> x2 single-def +; V02 arg2 [V02,T05] ( 3, 2.50) ushort -> x3 single-def +; V03 loc0 [V03,T00] ( 10, 20 ) int -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp2 [V06,T01] ( 2, 9 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp1 [V05,T02] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp2 [V06,T01] ( 3, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 3, 5 ) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,29 +27,47 @@ G_M43086_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre add w4, w2, #1 b G_M43086_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43086_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M43086_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + add w4, w4, #1 + b G_M43086_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M43086_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w4, w1 + bhs G_M43086_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M43086_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldrh w5, [x0, w4, UXTW #2] + uxth w3, w3 + cmp w5, w3 + beq G_M43086_IG03 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M43086_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M43086_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M43086_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ; byrRegs +[x0]
add w4, w4, #1 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M43086_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, w1
- bhs G_M43086_IG06
+ bhs G_M43086_IG10
;; size=8 bbWeight=8 PerfScore 12.00
-G_M43086_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrh w5, [x0, w4, UXTW #2]
- uxth w6, w3 - cmp w5, w6 - beq G_M43086_IG03 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M43086_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w5, w3 + beq G_M43086_IG07 + ;; size=12 bbWeight=4 PerfScore 18.00 +G_M43086_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] sub w0, w4, w2 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43086_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M43086_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 38.50, instruction count 14, allocated bytes for code 56 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 41.00, instruction count 22, allocated bytes for code 88 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
; ============================================================ Cfi Info:

+48 (+57.14%) : 5112.dasm - System.Type:GetRootElementType():System.Type:this (FullOpts)

@@ -7,60 +7,80 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> x0 this class-hnd single-def <System.Type> -; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x19 class-hnd <System.Type>
+; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.Type> +; V01 loc0 [V01,T00] ( 10, 25 ) ref -> x20 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 G_M1457_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
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M1457_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0]
mov x19, x0 ; gcrRegs +[x19]
- ldr x1, [x0]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M1457_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x20, x19 + ; gcrRegs +[x20] + mov x0, x19 + ; gcrRegs +[x0] + ldr x21, [x19] + ldr x1, [x21, #0xD1FFAB1E] + blr x1 + ; gcrRegs -[x0] + cbz w0, G_M1457_IG04 + mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x21, #0xD1FFAB1E] + blr x1 + ; gcrRegs -[x19-x20] + mov x20, x0 + ; gcrRegs +[x20] + ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1 ; gcrRegs -[x0] cbz w0, G_M1457_IG04
- ;; size=20 bbWeight=1 PerfScore 8.50 -G_M1457_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ ;; size=56 bbWeight=1 PerfScore 22.00 +G_M1457_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
+ ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1
- ; gcrRegs -[x19] - mov x19, x0 - ; gcrRegs +[x19] - ldr x1, [x19]
+ ; gcrRegs -[x20] + mov x20, x0 + ; gcrRegs +[x20] + ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1 ; gcrRegs -[x0] cbnz w0, G_M1457_IG03 ;; size=36 bbWeight=4 PerfScore 64.00
-G_M1457_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19
+G_M1457_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + mov x0, x20
; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M1457_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ 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 84, prolog size 12, PerfScore 79.50, instruction count 21, allocated bytes for code 84 (MethodHash=6cd9fa4e) for method System.Type:GetRootElementType():System.Type:this (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 95.50, instruction count 33, allocated bytes for code 132 (MethodHash=6cd9fa4e) for method System.Type:GetRootElementType():System.Type:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x30
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8 CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18
- CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x20 + CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x28 + CodeOffset: 0x10 Op: DefCfaRegister DwarfReg:0x1D

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 8,876 24 8,747 105 -440 +1,853,544
benchmarks.run_pgo.linux.arm64.checked.mch 38,423 90 38,153 180 -5,960 +9,484,336
benchmarks.run_tiered.linux.arm64.checked.mch 6,241 10 6,223 8 -160 +1,053,744
coreclr_tests.run.linux.arm64.checked.mch 35,306 1,552 33,418 336 -50,720 +8,622,236
libraries.crossgen2.linux.arm64.checked.mch 21,717 221 21,462 34 -2,664 +4,884,348
libraries.pmi.linux.arm64.checked.mch 25,194 116 24,985 93 -1,652 +7,114,084
libraries_tests.run.linux.arm64.Release.mch 72,138 788 70,796 554 -35,100 +38,578,472
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 25,353 137 25,082 134 -5,056 +10,219,956
realworld.run.linux.arm64.checked.mch 5,066 23 5,025 18 -380 +1,884,892
smoke_tests.nativeaot.linux.arm64.checked.mch 1,538 8 1,520 10 -60 +277,000
239,852 2,969 235,411 1,472 -102,192 +83,972,612

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 34,573 3,148 31,425 239 (0.69%) 279 (0.80%)
benchmarks.run_pgo.linux.arm64.checked.mch 150,712 59,296 91,416 132 (0.09%) 392 (0.26%)
benchmarks.run_tiered.linux.arm64.checked.mch 71,108 53,989 17,119 82 (0.12%) 99 (0.14%)
coreclr_tests.run.linux.arm64.checked.mch 626,451 383,796 242,655 455 (0.07%) 770 (0.12%)
libraries.crossgen2.linux.arm64.checked.mch 234,029 15 234,014 0 (0.00%) 154 (0.07%)
libraries.pmi.linux.arm64.checked.mch 292,936 6 292,930 1,913 (0.65%) 2,107 (0.71%)
libraries_tests.run.linux.arm64.Release.mch 732,508 489,338 243,170 1,326 (0.18%) 2,303 (0.31%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 302,495 21,560 280,935 2,093 (0.69%) 2,302 (0.76%)
realworld.run.linux.arm64.checked.mch 32,705 85 32,620 338 (1.02%) 398 (1.20%)
smoke_tests.nativeaot.linux.arm64.checked.mch 18,991 7 18,984 2 (0.01%) 38 (0.20%)
2,496,508 1,011,240 1,485,268 6,580 (0.26%) 8,842 (0.35%)

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: 15871176 (overridden on cmd)
Total bytes of diff: 17724280 (overridden on cmd)
Total bytes of delta: 1853104 (11.68 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25100 : 25044.dasm (66.56 % of base)
       14588 : 10205.dasm (44.74 % of base)
       13108 : 20759.dasm (97.47 % of base)
        8592 : 30983.dasm (79.23 % of base)
        8288 : 17296.dasm (77.92 % of base)
        7516 : 30798.dasm (36.64 % of base)
        7404 : 11264.dasm (56.42 % of base)
        7400 : 2173.dasm (72.21 % of base)
        7288 : 34476.dasm (80.91 % of base)
        7280 : 10423.dasm (87.29 % of base)
        7124 : 19828.dasm (86.00 % of base)
        7088 : 16793.dasm (62.20 % of base)
        6404 : 11957.dasm (82.19 % of base)
        6404 : 31175.dasm (33.28 % of base)
        6140 : 19413.dasm (68.13 % of base)
        6128 : 3593.dasm (94.39 % of base)
        6092 : 20711.dasm (79.70 % of base)
        5952 : 10381.dasm (58.63 % of base)
        5712 : 21013.dasm (97.81 % of base)
        5288 : 29602.dasm (87.84 % of base)

Top file improvements (bytes):
        -112 : 650.dasm (-10.65 % of base)
         -72 : 31339.dasm (-4.97 % of base)
         -56 : 22047.dasm (-5.58 % of base)
         -24 : 10225.dasm (-1.39 % of base)
         -16 : 4583.dasm (-3.54 % of base)
         -16 : 10348.dasm (-0.89 % of base)
         -16 : 29244.dasm (-5.33 % of base)
         -16 : 11253.dasm (-1.75 % of base)
         -12 : 6564.dasm (-4.41 % of base)
         -12 : 19538.dasm (-2.29 % of base)
         -12 : 21997.dasm (-2.27 % of base)
         -12 : 1957.dasm (-2.21 % of base)
          -8 : 16466.dasm (-0.88 % of base)
          -8 : 15916.dasm (-1.21 % of base)
          -8 : 29718.dasm (-0.81 % of base)
          -8 : 9960.dasm (-2.13 % of base)
          -4 : 5362.dasm (-2.08 % of base)
          -4 : 666.dasm (-0.93 % of base)
          -4 : 11271.dasm (-2.17 % of base)
          -4 : 3877.dasm (-2.17 % of base)

83 total files with Code Size differences (23 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
       25100 (66.56 % of base) : 25044.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       14588 (44.74 % of base) : 10205.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       13108 (97.47 % of base) : 20759.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        8592 (79.23 % of base) : 30983.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        8288 (77.92 % of base) : 17296.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7516 (36.64 % of base) : 30798.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7404 (56.42 % of base) : 11264.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7400 (72.21 % of base) : 2173.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        7288 (80.91 % of base) : 34476.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        7280 (87.29 % of base) : 10423.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        7124 (86.00 % of base) : 19828.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        7088 (62.20 % of base) : 16793.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
        6404 (33.28 % of base) : 31175.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6404 (82.19 % of base) : 11957.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        6140 (68.13 % of base) : 19413.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        6128 (94.39 % of base) : 3593.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        6092 (79.70 % of base) : 20711.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5952 (58.63 % of base) : 10381.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)
        5712 (97.81 % of base) : 21013.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5288 (87.84 % of base) : 29602.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

Top method improvements (bytes):
        -112 (-10.65 % of base) : 650.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -72 (-4.97 % of base) : 31339.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -56 (-5.58 % of base) : 22047.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -24 (-1.39 % of base) : 10225.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
         -16 (-0.89 % of base) : 10348.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
         -16 (-1.75 % of base) : 11253.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -16 (-3.54 % of base) : 4583.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -16 (-5.33 % of base) : 29244.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -12 (-2.27 % of base) : 21997.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 19538.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-4.41 % of base) : 6564.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-2.21 % of base) : 1957.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          -8 (-0.81 % of base) : 29718.dasm - BenchmarksGame.FannkuchRedux_9:Bench(int,ubyte):int (FullOpts)
          -8 (-0.88 % of base) : 16466.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceLookupHelpers:.cctor() (FullOpts)
          -8 (-2.13 % of base) : 9960.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.21 % of base) : 15916.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 3877.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 5362.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
        1732 (107.98 % of base) : 30283.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
        1544 (100.00 % of base) : 292.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        2816 (98.60 % of base) : 4836.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        1260 (98.13 % of base) : 25057.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (FullOpts)
        5712 (97.81 % of base) : 21013.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
       13108 (97.47 % of base) : 20759.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        2208 (97.35 % of base) : 20115.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
        3308 (97.29 % of base) : 31347.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        2748 (97.03 % of base) : 9342.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberBegin(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):this (FullOpts)
        2496 (96.59 % of base) : 4925.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
         564 (96.58 % of base) : 18087.dasm - System.Text.Json.Utf8JsonReader:SkipAllCommentsMultiSegment(byref):ubyte:this (FullOpts)
        1880 (96.51 % of base) : 31959.dasm - System.Tests.Perf_Array:ArrayRetrieve1D():int:this (FullOpts)
        2396 (96.30 % of base) : 19512.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (FullOpts)
        1740 (96.03 % of base) : 6532.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
        2068 (95.74 % of base) : 31926.dasm - ProtoBuf.Internal.PrimaryTypeProvider:ProtoBuf.Serializers.ISerializer<ProtoBuf.Internal.PrimaryTypeProvider.ScaledTicks>.Read(byref,ProtoBuf.Internal.PrimaryTypeProvider+ScaledTicks):ProtoBuf.Internal.PrimaryTypeProvider+ScaledTicks:this (FullOpts)
        1324 (95.66 % of base) : 25059.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (FullOpts)
        1584 (95.65 % of base) : 30937.dasm - MicroBenchmarks.Serializers.LoginViewModel:proto_2(byref,MicroBenchmarks.Serializers.LoginViewModel):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
        2964 (95.61 % of base) : 22848.dasm - MicroBenchmarks.Serializers.MyEventsListerItem:proto_8(byref,MicroBenchmarks.Serializers.MyEventsListerItem):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
         772 (95.54 % of base) : 23373.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDeclarationModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):this (FullOpts)
        1156 (95.38 % of base) : 12553.dasm - System.Text.Tests.Perf_StringBuilder:Append_Strings(int):System.Text.StringBuilder:this (FullOpts)

Top method improvements (percentages):
        -112 (-10.65 % of base) : 650.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -56 (-5.58 % of base) : 22047.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -16 (-5.33 % of base) : 29244.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -72 (-4.97 % of base) : 31339.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -12 (-4.41 % of base) : 6564.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-3.54 % of base) : 4583.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -12 (-2.29 % of base) : 19538.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-2.27 % of base) : 21997.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.21 % of base) : 1957.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          -4 (-2.17 % of base) : 3877.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 11271.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
          -8 (-2.13 % of base) : 9960.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.13 % of base) : 7537.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 5362.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-1.75 % of base) : 11253.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -24 (-1.39 % of base) : 10225.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
          -8 (-1.21 % of base) : 15916.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.93 % of base) : 666.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (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: 78212264 (overridden on cmd)
Total bytes of diff: 87690640 (overridden on cmd)
Total bytes of delta: 9478376 (12.12 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25100 : 98888.dasm (66.56 % of base)
       17940 : 86349.dasm (92.44 % of base)
       14588 : 31157.dasm (44.74 % of base)
        9600 : 107408.dasm (97.52 % of base)
        9092 : 116923.dasm (79.17 % of base)
        9028 : 116936.dasm (79.75 % of base)
        8568 : 116935.dasm (78.90 % of base)
        8288 : 61161.dasm (77.92 % of base)
        7868 : 90459.dasm (98.74 % of base)
        7516 : 113430.dasm (36.64 % of base)
        7404 : 29326.dasm (56.42 % of base)
        7072 : 147906.dasm (74.69 % of base)
        7036 : 149752.dasm (75.17 % of base)
        7036 : 125585.dasm (75.01 % of base)
        7036 : 91817.dasm (75.17 % of base)
        6716 : 87115.dasm (70.37 % of base)
        6604 : 58137.dasm (61.90 % of base)
        6568 : 87135.dasm (69.22 % of base)
        6404 : 120857.dasm (33.28 % of base)
        6144 : 143616.dasm (79.22 % of base)

Top file improvements (bytes):
        -212 : 134028.dasm (-2.29 % of base)
        -180 : 125624.dasm (-1.84 % of base)
        -176 : 91881.dasm (-1.80 % of base)
        -156 : 112203.dasm (-20.63 % of base)
        -156 : 27114.dasm (-20.74 % of base)
        -156 : 52444.dasm (-20.74 % of base)
        -152 : 44221.dasm (-20.00 % of base)
        -148 : 146339.dasm (-19.89 % of base)
        -148 : 44239.dasm (-1.55 % of base)
        -140 : 89072.dasm (-1.47 % of base)
        -140 : 123757.dasm (-1.43 % of base)
        -136 : 146344.dasm (-1.42 % of base)
        -132 : 125460.dasm (-1.40 % of base)
        -124 : 105628.dasm (-21.09 % of base)
        -124 : 106803.dasm (-21.09 % of base)
        -124 : 118566.dasm (-21.09 % of base)
        -124 : 13837.dasm (-21.09 % of base)
        -124 : 142705.dasm (-21.09 % of base)
        -124 : 5690.dasm (-21.09 % of base)
        -124 : 102126.dasm (-21.09 % of base)

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

Top method regressions (bytes):
       25100 (66.56 % of base) : 98888.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       17940 (92.44 % of base) : 86349.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       14588 (44.74 % of base) : 31157.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        9600 (97.52 % of base) : 107408.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        9092 (79.17 % of base) : 116923.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        9028 (79.75 % of base) : 116936.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8568 (78.90 % of base) : 116935.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 61161.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7868 (98.74 % of base) : 90459.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        7516 (36.64 % of base) : 113430.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7404 (56.42 % of base) : 29326.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7072 (74.69 % of base) : 147906.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        7036 (75.17 % of base) : 149752.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        7036 (75.01 % of base) : 125585.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        7036 (75.17 % of base) : 91817.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6716 (70.37 % of base) : 87115.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6604 (61.90 % of base) : 58137.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        6568 (69.22 % of base) : 87135.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6404 (33.28 % of base) : 120857.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6144 (79.22 % of base) : 143616.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

Top method improvements (bytes):
        -212 (-2.29 % of base) : 134028.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -180 (-1.84 % of base) : 125624.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -176 (-1.80 % of base) : 91881.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -156 (-20.63 % of base) : 112203.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-20.74 % of base) : 27114.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-20.74 % of base) : 52444.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -152 (-20.00 % of base) : 44221.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-19.89 % of base) : 146339.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-1.55 % of base) : 44239.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -140 (-1.47 % of base) : 89072.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -140 (-1.43 % of base) : 123757.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -136 (-1.42 % of base) : 146344.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -132 (-1.40 % of base) : 125460.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -124 (-21.09 % of base) : 105628.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 106803.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 118566.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13837.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 142705.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 5690.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 102126.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)

Top method regressions (percentages):
        2064 (135.79 % of base) : 19556.dasm - Benchstone.BenchF.Whetsto:Test():double:this (Tier1-OSR)
        3180 (122.87 % of base) : 146249.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        3172 (122.57 % of base) : 142667.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        1472 (112.88 % of base) : 106177.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        1472 (112.88 % of base) : 111533.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        1472 (112.54 % of base) : 112807.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        1472 (112.54 % of base) : 105903.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        2332 (111.90 % of base) : 107520.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        3384 (107.22 % of base) : 42872.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1-OSR)
        2528 (106.40 % of base) : 140368.dasm - NumericSortJagged:Run():double:this (Tier1)
        2532 (105.85 % of base) : 64447.dasm - System.Buffers.Tests.NonStandardArrayPoolTests`1[System.__Canon]:RentNoReturn():this (Tier1-OSR)
        2548 (105.81 % of base) : 59798.dasm - System.Buffers.Tests.NonStandardArrayPoolTests`1[ubyte]:RentNoReturn():this (Tier1-OSR)
        2220 (105.51 % of base) : 146758.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int (Tier1)
        1588 (103.39 % of base) : 101950.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1680 (102.44 % of base) : 148240.dasm - Benchstone.MDBenchI.MDPuzzle:Trial(int):ubyte:this (Tier1)
        1696 (101.92 % of base) : 135579.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        1716 (101.90 % of base) : 135570.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        1196 (101.70 % of base) : 146747.dasm - StringSort:StrHeapSort(System.String[],int,int) (Tier1-OSR)
        4144 (101.57 % of base) : 134288.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        4136 (101.17 % of base) : 144376.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)

Top method improvements (percentages):
        -124 (-21.09 % of base) : 105628.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 106803.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 118566.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13837.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 142705.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 5690.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 102126.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 19888.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 34286.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 35337.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 46489.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 64834.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 66068.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 69873.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 74476.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 112598.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 38009.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 55197.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 64509.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 14157.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


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: 29580048 (overridden on cmd)
Total bytes of diff: 30633632 (overridden on cmd)
Total bytes of delta: 1053584 (3.56 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25100 : 52870.dasm (66.56 % of base)
       14588 : 20110.dasm (44.74 % of base)
       11400 : 55867.dasm (101.93 % of base)
        8592 : 58525.dasm (79.23 % of base)
        8288 : 34978.dasm (77.92 % of base)
        7516 : 58148.dasm (36.64 % of base)
        7508 : 20005.dasm (58.13 % of base)
        7352 : 68912.dasm (87.69 % of base)
        7088 : 32918.dasm (62.20 % of base)
        6404 : 59879.dasm (33.28 % of base)
        6140 : 39588.dasm (68.13 % of base)
        6016 : 69239.dasm (78.87 % of base)
        5756 : 22201.dasm (80.48 % of base)
        5272 : 20423.dasm (36.15 % of base)
        4712 : 51018.dasm (66.55 % of base)
        4644 : 20377.dasm (57.45 % of base)
        4624 : 2894.dasm (86.46 % of base)
        4556 : 57944.dasm (85.96 % of base)
        4372 : 63965.dasm (32.02 % of base)
        4340 : 69185.dasm (41.38 % of base)

Top file improvements (bytes):
        -112 : 5398.dasm (-11.34 % of base)
         -12 : 52716.dasm (-4.41 % of base)
          -8 : 49034.dasm (-1.21 % of base)
          -4 : 47687.dasm (-2.13 % of base)
          -4 : 1312.dasm (-2.08 % of base)
          -4 : 50501.dasm (-0.46 % of base)
          -4 : 18241.dasm (-2.08 % of base)
          -4 : 39335.dasm (-2.17 % of base)
          -4 : 4988.dasm (-1.96 % of base)
          -4 : 22900.dasm (-0.93 % of base)

75 total files with Code Size differences (10 improved, 65 regressed), 8 unchanged.

Top method regressions (bytes):
       25100 (66.56 % of base) : 52870.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       14588 (44.74 % of base) : 20110.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       11400 (101.93 % of base) : 55867.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8592 (79.23 % of base) : 58525.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 34978.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7516 (36.64 % of base) : 58148.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7508 (58.13 % of base) : 20005.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7352 (87.69 % of base) : 68912.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        7088 (62.20 % of base) : 32918.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        6404 (33.28 % of base) : 59879.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6140 (68.13 % of base) : 39588.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6016 (78.87 % of base) : 69239.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5756 (80.48 % of base) : 22201.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5272 (36.15 % of base) : 20423.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4712 (66.55 % of base) : 51018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
        4644 (57.45 % of base) : 20377.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
        4624 (86.46 % of base) : 2894.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        4556 (85.96 % of base) : 57944.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        4372 (32.02 % of base) : 63965.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4340 (41.38 % of base) : 69185.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)

Top method improvements (bytes):
        -112 (-11.34 % of base) : 5398.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 52716.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 49034.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 50501.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 4988.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 1312.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 18241.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.17 % of base) : 39335.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 47687.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 22900.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
        1652 (110.72 % of base) : 52904.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1456 (106.12 % of base) : 52900.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (Tier1-OSR)
       11400 (101.93 % of base) : 55867.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        1544 (100.00 % of base) : 2375.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
        2836 (98.61 % of base) : 7604.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        3308 (97.29 % of base) : 59593.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        2516 (96.62 % of base) : 7835.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
        2232 (96.04 % of base) : 42385.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (Tier1)
         828 (95.83 % of base) : 50406.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDeclarationModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):this (Tier1)
        3384 (95.70 % of base) : 28268.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
        1584 (95.65 % of base) : 58051.dasm - MicroBenchmarks.Serializers.LoginViewModel:proto_2(byref,MicroBenchmarks.Serializers.LoginViewModel):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
        2984 (95.64 % of base) : 49412.dasm - MicroBenchmarks.Serializers.MyEventsListerItem:proto_8(byref,MicroBenchmarks.Serializers.MyEventsListerItem):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        1568 (95.38 % of base) : 21264.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
         452 (94.96 % of base) : 35075.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
        2060 (94.67 % of base) : 32474.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         820 (94.47 % of base) : 69627.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1)
         728 (94.30 % of base) : 55601.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
        1376 (94.25 % of base) : 49413.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:proto_10(byref,MicroBenchmarks.Serializers.MyEventsListerItemTask):MicroBenchmarks.Serializers.MyEventsListerItemTask (FullOpts)
        1276 (94.10 % of base) : 32471.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1-OSR)
        2284 (93.91 % of base) : 50984.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,ubyte,ubyte,byref):this (Tier1)

Top method improvements (percentages):
        -112 (-11.34 % of base) : 5398.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 52716.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.17 % of base) : 39335.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 47687.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 1312.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 18241.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 4988.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 49034.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 22900.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 50501.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)


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: 508462256 (overridden on cmd)
Total bytes of diff: 517033772 (overridden on cmd)
Total bytes of delta: 8571516 (1.69 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
      126388 : 522490.dasm (99.73 % of base)
       26476 : 620411.dasm (98.91 % of base)
       16932 : 613233.dasm (92.06 % of base)
       13224 : 532636.dasm (97.67 % of base)
       12972 : 425266.dasm (116.32 % of base)
       12960 : 423306.dasm (116.00 % of base)
       11444 : 413111.dasm (96.49 % of base)
       11348 : 411585.dasm (95.46 % of base)
       11328 : 412895.dasm (95.19 % of base)
       11244 : 411333.dasm (94.52 % of base)
       10936 : 412181.dasm (96.34 % of base)
       10936 : 410755.dasm (96.34 % of base)
       10820 : 411957.dasm (96.81 % of base)
       10464 : 412988.dasm (95.23 % of base)
       10432 : 421590.dasm (98.98 % of base)
       10408 : 424821.dasm (98.60 % of base)
        9816 : 424002.dasm (68.66 % of base)
        9576 : 424747.dasm (99.29 % of base)
        9576 : 421457.dasm (99.29 % of base)
        9552 : 611467.dasm (91.01 % of base)

Top file improvements (bytes):
        -192 : 426090.dasm (-32.65 % of base)
        -192 : 380753.dasm (-32.65 % of base)
        -192 : 410750.dasm (-32.65 % of base)
        -192 : 411491.dasm (-32.65 % of base)
        -192 : 412184.dasm (-32.65 % of base)
        -192 : 412874.dasm (-32.65 % of base)
        -192 : 411321.dasm (-32.65 % of base)
        -192 : 416626.dasm (-32.65 % of base)
        -156 : 185809.dasm (-21.20 % of base)
        -156 : 8785.dasm (-21.20 % of base)
        -156 : 91513.dasm (-21.20 % of base)
        -156 : 352381.dasm (-21.20 % of base)
        -156 : 356273.dasm (-21.20 % of base)
        -156 : 147573.dasm (-21.20 % of base)
        -156 : 231605.dasm (-21.20 % of base)
        -156 : 305829.dasm (-21.20 % of base)
        -156 : 325853.dasm (-21.20 % of base)
        -156 : 328385.dasm (-21.20 % of base)
        -156 : 358637.dasm (-21.20 % of base)
        -156 : 360077.dasm (-21.20 % of base)

78 total files with Code Size differences (35 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
      126388 (99.73 % of base) : 522490.dasm - Program:TestEntryPoint():int (FullOpts)
       26476 (98.91 % of base) : 620411.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
       16932 (92.06 % of base) : 613233.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
       13224 (97.67 % of base) : 532636.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12972 (116.32 % of base) : 425266.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       12960 (116.00 % of base) : 423306.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       11444 (96.49 % of base) : 413111.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       11348 (95.46 % of base) : 411585.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       11328 (95.19 % of base) : 412895.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       11244 (94.52 % of base) : 411333.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10936 (96.34 % of base) : 412181.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10936 (96.34 % of base) : 410755.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10820 (96.81 % of base) : 411957.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10464 (95.23 % of base) : 412988.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10432 (98.98 % of base) : 421590.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       10408 (98.60 % of base) : 424821.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
        9816 (68.66 % of base) : 424002.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
        9576 (99.29 % of base) : 424747.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9576 (99.29 % of base) : 421457.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9552 (91.01 % of base) : 611467.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)

Top method improvements (bytes):
        -192 (-32.65 % of base) : 426090.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 380753.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 410750.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 411491.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 412184.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 412874.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 411321.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 416626.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 185809.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 8785.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 91513.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 352381.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 356273.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 147573.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 231605.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 305829.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 325853.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 328385.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 358637.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 360077.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        1276 (131.28 % of base) : 556045.dasm - struct1:Process2DArray(byref) (FullOpts)
         844 (129.45 % of base) : 555359.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
        1248 (128.40 % of base) : 555358.dasm - class1:Process2DArray(byref) (FullOpts)
         908 (127.53 % of base) : 556046.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
         676 (121.58 % of base) : 229079.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
       12972 (116.32 % of base) : 425266.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       12960 (116.00 % of base) : 423306.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
         644 (115.83 % of base) : 230841.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         612 (110.07 % of base) : 230846.dasm - Chaos.A0A0A0`1[System.__Canon]:RecurseA0A0A0(int):this (Tier1)
         612 (110.07 % of base) : 230836.dasm - Chaos.A0A0A0A1`2[System.__Canon,System.__Canon]:RecurseA0A0A0A1(int):this (Tier1)
         612 (110.07 % of base) : 230847.dasm - Chaos.A0A1`1[System.__Canon]:RecurseA0A1(int):this (Tier1)
         612 (110.07 % of base) : 230842.dasm - Chaos.A0A1A2`1[System.__Canon]:RecurseA0A1A2(int):this (Tier1)
         612 (110.07 % of base) : 230831.dasm - Chaos.A0A1A2A3`2[System.__Canon,System.__Canon]:RecurseA0A1A2A3(int):this (Tier1)
         832 (109.47 % of base) : 555667.dasm - Test_jaggedarr_basics.double1:Process2DArray(byref) (FullOpts)
         608 (109.35 % of base) : 230837.dasm - Chaos.A0A1A4`2[System.__Canon,System.__Canon]:RecurseA0A1A4(int):this (Tier1)
         844 (109.33 % of base) : 555413.dasm - Test_doublearr_basics.double1:Process2DArray(byref) (FullOpts)
         236 (109.26 % of base) : 322656.dasm - testout1:Test1(int):int (Tier1-OSR)
         236 (109.26 % of base) : 322659.dasm - testout1:Test2(int):int (Tier1-OSR)
        2496 (108.52 % of base) : 528694.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (FullOpts)
         600 (107.91 % of base) : 230840.dasm - Chaos.A0A4`1[System.__Canon]:RecurseA0A4(int):this (Tier1)

Top method improvements (percentages):
         -68 (-56.67 % of base) : 571992.dasm - foo:Main():int (FullOpts)
         -92 (-41.82 % of base) : 528777.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
         -92 (-40.35 % of base) : 528779.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
        -192 (-32.65 % of base) : 426090.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 380753.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 410750.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 411491.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 412184.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 412874.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 411321.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 416626.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -124 (-21.38 % of base) : 219481.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 27281.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 295113.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 306401.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 7733.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 225937.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 282729.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 299521.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 289621.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


libraries.crossgen2.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: 55593716 (overridden on cmd)
Total bytes of diff: 60475400 (overridden on cmd)
Total bytes of delta: 4881684 (8.78 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       56704 : 39463.dasm (72.10 % of base)
       18656 : 131103.dasm (68.11 % of base)
       12264 : 53532.dasm (97.92 % of base)
       11676 : 81721.dasm (75.23 % of base)
       10508 : 141771.dasm (74.76 % of base)
       10060 : 53428.dasm (94.48 % of base)
        8600 : 72268.dasm (97.77 % of base)
        8204 : 154211.dasm (43.21 % of base)
        7908 : 2397.dasm (73.39 % of base)
        6696 : 78780.dasm (88.85 % of base)
        6500 : 17625.dasm (94.53 % of base)
        6492 : 157376.dasm (69.93 % of base)
        6280 : 141704.dasm (85.23 % of base)
        5808 : 141957.dasm (81.66 % of base)
        5512 : 154264.dasm (95.96 % of base)
        5480 : 85347.dasm (79.84 % of base)
        5472 : 72583.dasm (83.82 % of base)
        5096 : 38948.dasm (30.25 % of base)
        5068 : 154538.dasm (88.23 % of base)
        4876 : 141481.dasm (72.82 % of base)

Top file improvements (bytes):
         -80 : 20912.dasm (-9.13 % of base)
         -48 : 109061.dasm (-0.49 % of base)
         -44 : 17209.dasm (-10.09 % of base)
         -40 : 171272.dasm (-8.40 % of base)
         -40 : 26001.dasm (-8.40 % of base)
         -36 : 185799.dasm (-5.59 % of base)
         -32 : 156000.dasm (-3.45 % of base)
         -32 : 217108.dasm (-6.50 % of base)
         -32 : 233860.dasm (-4.68 % of base)
         -28 : 134105.dasm (-5.38 % of base)
         -28 : 137113.dasm (-5.22 % of base)
         -28 : 141694.dasm (-4.49 % of base)
         -28 : 17210.dasm (-6.60 % of base)
         -28 : 134096.dasm (-4.32 % of base)
         -28 : 161894.dasm (-5.69 % of base)
         -28 : 180218.dasm (-5.22 % of base)
         -28 : 180324.dasm (-5.43 % of base)
         -28 : 184958.dasm (-4.86 % of base)
         -28 : 35821.dasm (-5.22 % of base)
         -28 : 35929.dasm (-5.43 % of base)

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

Top method regressions (bytes):
       56704 (72.10 % of base) : 39463.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
       18656 (68.11 % of base) : 131103.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       12264 (97.92 % of base) : 53532.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       11676 (75.23 % of base) : 81721.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       10508 (74.76 % of base) : 141771.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10060 (94.48 % of base) : 53428.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        8600 (97.77 % of base) : 72268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        8204 (43.21 % of base) : 154211.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
        7908 (73.39 % of base) : 2397.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6696 (88.85 % of base) : 78780.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        6500 (94.53 % of base) : 17625.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        6492 (69.93 % of base) : 157376.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        6280 (85.23 % of base) : 141704.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5808 (81.66 % of base) : 141957.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5512 (95.96 % of base) : 154264.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
        5480 (79.84 % of base) : 85347.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        5472 (83.82 % of base) : 72583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5096 (30.25 % of base) : 38948.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
        5068 (88.23 % of base) : 154538.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessRedefine(System.Xml.Schema.XmlSchemaRedefine):this (FullOpts)
        4876 (72.82 % of base) : 141481.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

Top method improvements (bytes):
         -80 (-9.13 % of base) : 20912.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -48 (-0.49 % of base) : 109061.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -44 (-10.09 % of base) : 17209.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -40 (-8.40 % of base) : 171272.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 26001.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -36 (-5.59 % of base) : 185799.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -32 (-6.50 % of base) : 217108.dasm - Interop+cgroups:TryGetMemoryStatField(System.String,byref):ubyte (FullOpts)
         -32 (-4.68 % of base) : 233860.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
         -32 (-3.45 % of base) : 156000.dasm - System.Linq.Parallel.FirstQueryOperator`1+FirstQueryOperatorEnumerator`1[System.__Canon,System.__Canon]:MoveNext(byref,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 137113.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 180218.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 35821.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.43 % of base) : 180324.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-5.43 % of base) : 35929.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-5.69 % of base) : 161894.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSubsetOfSortedSetWithSameComparer(System.Collections.Generic.SortedSet`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-4.86 % of base) : 184958.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-4.49 % of base) : 141694.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
         -28 (-6.60 % of base) : 17210.dasm - System.Reflection.CustomAttribute:IsDefined(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):ubyte (FullOpts)
         -28 (-5.38 % of base) : 134105.dasm - System.Text.Json.JsonPropertyDictionary`1[System.__Canon]:ContainsProperty(System.String):ubyte:this (FullOpts)
         -28 (-4.32 % of base) : 134096.dasm - System.Text.Json.JsonPropertyDictionary`1[System.__Canon]:TryGetValue(System.String,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
        4808 (117.27 % of base) : 142295.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1716 (115.95 % of base) : 223868.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4592 (115.26 % of base) : 142337.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         144 (105.88 % of base) : 86284.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.VisualBasic.Symbol):Microsoft.CodeAnalysis.VisualBasic.Symbol (FullOpts)
         152 (105.56 % of base) : 63843.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 63845.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 63848.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:SkipInsignificantDirectives(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         164 (105.13 % of base) : 63844.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
        2356 (102.61 % of base) : 84592.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
        1240 (102.31 % of base) : 234122.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
        1412 (101.15 % of base) : 154448.dasm - System.Xml.XmlTextReaderImpl:SkipUntil(ushort,ubyte):this (FullOpts)
         168 (100.00 % of base) : 71177.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
        2988 (99.73 % of base) : 154270.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        2668 (99.70 % of base) : 153570.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberEnd(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],ubyte):this (FullOpts)
        2588 (99.23 % of base) : 154291.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        3096 (98.22 % of base) : 160256.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
       12264 (97.92 % of base) : 53532.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        3268 (97.84 % of base) : 153583.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberBegin(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):this (FullOpts)
        8600 (97.77 % of base) : 72268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        1332 (97.37 % of base) : 191607.dasm - System.Net.Http.Http3RequestStream:BufferHeaderCollection(System.Net.Http.Headers.HttpHeaders):int:this (FullOpts)

Top method improvements (percentages):
         -20 (-12.20 % of base) : 10548.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-12.20 % of base) : 215775.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-10.42 % of base) : 226948.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
         -16 (-10.26 % of base) : 193314.dasm - System.Security.Cryptography.TripleDES:get_Key():ubyte[]:this (FullOpts)
         -44 (-10.09 % of base) : 17209.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -80 (-9.13 % of base) : 20912.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-8.89 % of base) : 178992.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 34569.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 192264.dasm - System.Security.Cryptography.DES:get_Key():ubyte[]:this (FullOpts)
         -16 (-8.51 % of base) : 178817.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-8.51 % of base) : 34390.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -40 (-8.40 % of base) : 171272.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 26001.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -24 (-7.69 % of base) : 179260.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -24 (-7.69 % of base) : 34843.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 178437.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 168807.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -16 (-7.69 % of base) : 23394.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -24 (-7.50 % of base) : 19710.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-7.46 % of base) : 34138.dasm - Microsoft.CodeAnalysis.UnionCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)


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: 74364484 (overridden on cmd)
Total bytes of diff: 81476916 (overridden on cmd)
Total bytes of delta: 7112432 (9.56 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       21040 : 247990.dasm (71.99 % of base)
       19212 : 111333.dasm (80.68 % of base)
       17812 : 111292.dasm (97.02 % of base)
       13280 : 61188.dasm (97.48 % of base)
       11708 : 203765.dasm (99.22 % of base)
       10768 : 226456.dasm (77.85 % of base)
       10760 : 38288.dasm (98.46 % of base)
       10148 : 38394.dasm (92.29 % of base)
        9544 : 87231.dasm (91.07 % of base)
        9136 : 68310.dasm (90.71 % of base)
        8364 : 115503.dasm (88.60 % of base)
        8356 : 85554.dasm (99.24 % of base)
        8188 : 86819.dasm (67.56 % of base)
        7272 : 111608.dasm (72.46 % of base)
        7192 : 89686.dasm (87.15 % of base)
        6880 : 111282.dasm (87.71 % of base)
        6844 : 267180.dasm (53.82 % of base)
        6556 : 267116.dasm (90.01 % of base)
        6372 : 210628.dasm (69.17 % of base)
        6244 : 61534.dasm (80.22 % of base)

Top file improvements (bytes):
        -116 : 239179.dasm (-12.45 % of base)
        -100 : 137440.dasm (-4.52 % of base)
         -68 : 29376.dasm (-11.33 % of base)
         -68 : 29416.dasm (-11.11 % of base)
         -56 : 67962.dasm (-5.58 % of base)
         -44 : 157895.dasm (-15.71 % of base)
         -36 : 194321.dasm (-1.50 % of base)
         -36 : 110434.dasm (-2.73 % of base)
         -32 : 254527.dasm (-8.08 % of base)
         -32 : 254528.dasm (-6.96 % of base)
         -28 : 265944.dasm (-5.79 % of base)
         -24 : 242331.dasm (-3.57 % of base)
         -24 : 244996.dasm (-2.46 % of base)
         -20 : 245670.dasm (-3.12 % of base)
         -20 : 245671.dasm (-3.05 % of base)
         -20 : 29375.dasm (-3.62 % of base)
         -20 : 213272.dasm (-1.71 % of base)
         -20 : 29415.dasm (-3.55 % of base)
         -20 : 157928.dasm (-8.33 % of base)
         -16 : 274172.dasm (-8.51 % of base)

92 total files with Code Size differences (32 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
       21040 (71.99 % of base) : 247990.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       19212 (80.68 % of base) : 111333.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       17812 (97.02 % of base) : 111292.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
       13280 (97.48 % of base) : 61188.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11708 (99.22 % of base) : 203765.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
       10768 (77.85 % of base) : 226456.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10760 (98.46 % of base) : 38288.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10148 (92.29 % of base) : 38394.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9544 (91.07 % of base) : 87231.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        9136 (90.71 % of base) : 68310.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8364 (88.60 % of base) : 115503.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        8356 (99.24 % of base) : 85554.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        8188 (67.56 % of base) : 86819.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        7272 (72.46 % of base) : 111608.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        7192 (87.15 % of base) : 89686.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        6880 (87.71 % of base) : 111282.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        6844 (53.82 % of base) : 267180.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
        6556 (90.01 % of base) : 267116.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.DebugInfo,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
        6372 (69.17 % of base) : 210628.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        6244 (80.22 % of base) : 61534.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)

Top method improvements (bytes):
        -116 (-12.45 % of base) : 239179.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
        -100 (-4.52 % of base) : 137440.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.DeclarationTable+_Closure$__38-0:_Lambda$__0(Microsoft.CodeAnalysis.VisualBasic.Symbols.SingleTypeDeclaration):ubyte:this (FullOpts)
         -68 (-11.33 % of base) : 29376.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 29416.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -56 (-5.58 % of base) : 67962.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-15.71 % of base) : 157895.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)
         -36 (-2.73 % of base) : 110434.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+PerThreadStartStopData+<Stackify>d__3:MoveNext():ubyte:this (FullOpts)
         -36 (-1.50 % of base) : 194321.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
         -32 (-8.08 % of base) : 254527.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-6.96 % of base) : 254528.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -28 (-5.79 % of base) : 265944.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
         -24 (-3.57 % of base) : 242331.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -24 (-2.46 % of base) : 244996.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Find(System.Predicate`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float]:this (FullOpts)
         -20 (-3.62 % of base) : 29375.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
         -20 (-3.55 % of base) : 29415.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.Nullable`1[int],double,ubyte],double):ubyte:this (FullOpts)
         -20 (-8.33 % of base) : 157928.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -20 (-3.12 % of base) : 245670.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-3.05 % of base) : 245671.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-1.71 % of base) : 213272.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_GetMethodValue():System.Reflection.MethodInfo:this (FullOpts)
         -16 (-1.97 % of base) : 192525.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:EnsureCastExpression(System.Linq.Expressions.Expression,System.Type,ubyte):System.Linq.Expressions.Expression:this (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 228561.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 261678.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 228622.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1600 (105.54 % of base) : 155486.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteDerivedTypes(System.Xml.Serialization.StructMapping):this (FullOpts)
        3636 (104.36 % of base) : 274042.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
         232 (103.57 % of base) : 273174.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
        2628 (100.61 % of base) : 139286.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillArgumentListInner(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+SpillBuilder],ubyte,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        1856 (100.43 % of base) : 57754.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEDeltaAssemblyBuilder:GetAnonymousDelegateMapFromMetadata(System.Reflection.Metadata.MetadataReader,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Emit.SynthesizedDelegateKey,Microsoft.CodeAnalysis.Emit.SynthesizedDelegateValue] (FullOpts)
        4772 (100.42 % of base) : 114337.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:ReportIndirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref) (FullOpts)
        3244 (100.12 % of base) : 115425.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:ProcessPartialMethodsIfAny(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        3152 (99.87 % of base) : 115336.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindOptions(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax],Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
        4256 (99.25 % of base) : 111659.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlnsAttributes(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.BoundXmlAttribute],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
        8356 (99.24 % of base) : 85554.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
       11708 (99.22 % of base) : 203765.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
        6076 (98.96 % of base) : 85556.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByReverseImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
       10760 (98.46 % of base) : 38288.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        3052 (98.45 % of base) : 293733.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
        6028 (97.86 % of base) : 61200.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        4904 (97.85 % of base) : 111486.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindRedimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
        1992 (97.84 % of base) : 34208.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -44 (-15.71 % of base) : 157895.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)
        -116 (-12.45 % of base) : 239179.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -68 (-11.33 % of base) : 29376.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 29416.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -16 (-8.51 % of base) : 274172.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -20 (-8.33 % of base) : 157928.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-8.08 % of base) : 254527.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-6.96 % of base) : 254528.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -16 (-6.90 % of base) : 214754.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Byte():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214762.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Char():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214756.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int16():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214758.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int32():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214760.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int64():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214755.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_SByte():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214757.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt16():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214759.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt32():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214761.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt64():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 214745.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -28 (-5.79 % of base) : 265944.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
         -16 (-5.71 % of base) : 250860.dasm - Xunit.EnvironmentHelper:GetEnvironmentVariableMethod():System.Reflection.MethodInfo (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: 382265760 (overridden on cmd)
Total bytes of diff: 420809132 (overridden on cmd)
Total bytes of delta: 38543372 (10.08 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       23120 : 58244.dasm (90.34 % of base)
       22784 : 647591.dasm (86.29 % of base)
       22396 : 65735.dasm (91.53 % of base)
       21916 : 643594.dasm (92.30 % of base)
       20532 : 670975.dasm (82.35 % of base)
       19260 : 175293.dasm (82.77 % of base)
       18972 : 85793.dasm (94.35 % of base)
       17668 : 670170.dasm (89.20 % of base)
       17532 : 468921.dasm (84.45 % of base)
       17456 : 532599.dasm (96.40 % of base)
       16804 : 670113.dasm (76.20 % of base)
       16732 : 683947.dasm (103.85 % of base)
       16528 : 182128.dasm (93.32 % of base)
       16460 : 90237.dasm (85.96 % of base)
       16292 : 448673.dasm (86.29 % of base)
       16232 : 53452.dasm (95.06 % of base)
       15804 : 223981.dasm (77.41 % of base)
       15440 : 685394.dasm (80.96 % of base)
       15388 : 683965.dasm (96.61 % of base)
       15260 : 475040.dasm (79.91 % of base)

Top file improvements (bytes):
       -4864 : 73233.dasm (-32.54 % of base)
       -4688 : 69412.dasm (-31.46 % of base)
       -1824 : 20324.dasm (-15.92 % of base)
       -1588 : 213455.dasm (-6.47 % of base)
        -232 : 78730.dasm (-2.44 % of base)
        -196 : 44124.dasm (-2.00 % of base)
        -192 : 105478.dasm (-32.65 % of base)
        -192 : 133255.dasm (-32.65 % of base)
        -192 : 238213.dasm (-32.65 % of base)
        -192 : 117178.dasm (-32.65 % of base)
        -192 : 237649.dasm (-32.65 % of base)
        -192 : 268957.dasm (-32.65 % of base)
        -192 : 296961.dasm (-32.65 % of base)
        -192 : 299747.dasm (-32.65 % of base)
        -192 : 308761.dasm (-32.65 % of base)
        -192 : 313909.dasm (-32.65 % of base)
        -192 : 316319.dasm (-32.65 % of base)
        -192 : 4090.dasm (-32.65 % of base)
        -192 : 66543.dasm (-32.65 % of base)
        -192 : 70811.dasm (-32.65 % of base)

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

Top method regressions (bytes):
       23120 (90.34 % of base) : 58244.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       22784 (86.29 % of base) : 647591.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1)
       22396 (91.53 % of base) : 65735.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
       21916 (92.30 % of base) : 643594.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       20532 (82.35 % of base) : 670975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       19260 (82.77 % of base) : 175293.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       18972 (94.35 % of base) : 85793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       17668 (89.20 % of base) : 670170.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       17532 (84.45 % of base) : 468921.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
       17456 (96.40 % of base) : 532599.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
       16804 (76.20 % of base) : 670113.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       16732 (103.85 % of base) : 683947.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeDefTableRows():this (Tier1)
       16528 (93.32 % of base) : 182128.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       16460 (85.96 % of base) : 90237.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       16292 (86.29 % of base) : 448673.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
       16232 (95.06 % of base) : 53452.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       15804 (77.41 % of base) : 223981.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1)
       15440 (80.96 % of base) : 685394.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
       15388 (96.61 % of base) : 683965.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (Tier1)
       15260 (79.91 % of base) : 475040.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)

Top method improvements (bytes):
       -4864 (-32.54 % of base) : 73233.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
       -4688 (-31.46 % of base) : 69412.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
       -1824 (-15.92 % of base) : 20324.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
       -1588 (-6.47 % of base) : 213455.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (Tier1)
        -232 (-2.44 % of base) : 78730.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -196 (-2.00 % of base) : 44124.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -192 (-32.65 % of base) : 105478.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 133255.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 238213.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 117178.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 237649.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 268957.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 296961.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 299747.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 308761.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 313909.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 316319.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 4090.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 66543.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 70811.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        4016 (144.25 % of base) : 176445.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
        2540 (127.25 % of base) : 342464.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int][],int[],System.Threading.CancellationToken):this (Tier1)
        3088 (118.22 % of base) : 295051.dasm - System.Dynamic.Utils.TypeUtils:GetBooleanOperator(System.Type,System.String):System.Reflection.MethodInfo (Tier1)
        6836 (112.21 % of base) : 680408.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
        4444 (110.22 % of base) : 82295.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[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] (Tier1)
         524 (109.17 % of base) : 529672.dasm - System.Lazy`1[int]:CreateValue():int:this (Instrumented Tier1)
         524 (109.17 % of base) : 69415.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (Instrumented Tier1)
        1508 (108.96 % of base) : 92718.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:<PartialMethodChecks>g__hasDifferencesInParameterOrTypeParameterName|43_3(Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol):ubyte (Tier1)
        1496 (108.09 % of base) : 342384.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,System.Linq.Parallel.Tests.NotComparable]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[int,System.Linq.Parallel.Tests.NotComparable][],int[],System.Threading.CancellationToken):this (Tier1)
        4420 (107.70 % of base) : 282400.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:AddNamesInInheritanceHierarchy(System.String,System.Collections.Generic.List`1[System.Type]) (Tier1)
        8528 (107.51 % of base) : 178611.dasm - Microsoft.Cci.MetadataWriter:WriteInstructions(System.Reflection.Metadata.Blob,System.Collections.Immutable.ImmutableArray`1[ubyte],byref,byref):this (Tier1)
        5944 (107.45 % of base) : 648193.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (Tier1-OSR)
        6392 (107.39 % of base) : 91083.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
        4020 (107.14 % of base) : 51679.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        4020 (107.14 % of base) : 85096.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        1504 (106.52 % of base) : 342331.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[int,int][],int[],System.Threading.CancellationToken):this (Tier1)
        1504 (106.52 % of base) : 342632.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[int,int]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[int,int][],int[],System.Threading.CancellationToken):this (Tier1)
        3124 (106.11 % of base) : 688359.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3144_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        2744 (104.57 % of base) : 699904.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7163_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        1596 (104.18 % of base) : 443136.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__ParamsReadRegex_11+RunnerFactory+Runner:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)

Top method improvements (percentages):
        -192 (-32.65 % of base) : 105478.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 133255.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 238213.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 117178.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 237649.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 268957.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 296961.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 299747.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 308761.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 313909.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 316319.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 4090.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 66543.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 70811.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 72150.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 105257.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 152557.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 217569.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 368339.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 72767.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)


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: 162857060 (overridden on cmd)
Total bytes of diff: 173071960 (overridden on cmd)
Total bytes of delta: 10214900 (6.27 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       26100 : 102310.dasm (35.43 % of base)
       24936 : 106664.dasm (35.22 % of base)
       20800 : 59263.dasm (71.17 % of base)
       18464 : 174550.dasm (104.55 % of base)
       13316 : 198937.dasm (56.43 % of base)
       13200 : 198521.dasm (56.71 % of base)
       13140 : 6903.dasm (97.45 % of base)
       13060 : 49411.dasm (97.58 % of base)
       12624 : 44210.dasm (96.25 % of base)
       11444 : 295407.dasm (96.85 % of base)
       11256 : 53910.dasm (83.75 % of base)
       11056 : 175934.dasm (89.31 % of base)
       10484 : 90637.dasm (77.29 % of base)
        9940 : 55633.dasm (91.49 % of base)
        9508 : 95968.dasm (72.82 % of base)
        9012 : 6164.dasm (90.59 % of base)
        8984 : 111283.dasm (94.29 % of base)
        8932 : 175932.dasm (85.20 % of base)
        8904 : 175935.dasm (86.65 % of base)
        8904 : 175936.dasm (86.89 % of base)

Top file improvements (bytes):
        -572 : 44882.dasm (-4.50 % of base)
        -572 : 50663.dasm (-4.50 % of base)
        -544 : 68083.dasm (-6.99 % of base)
        -380 : 68066.dasm (-5.04 % of base)
        -164 : 229661.dasm (-4.60 % of base)
         -88 : 296539.dasm (-4.73 % of base)
         -84 : 286481.dasm (-10.99 % of base)
         -80 : 297277.dasm (-4.31 % of base)
         -80 : 174536.dasm (-12.50 % of base)
         -80 : 296617.dasm (-3.46 % of base)
         -76 : 296504.dasm (-3.44 % of base)
         -72 : 286660.dasm (-8.26 % of base)
         -64 : 271802.dasm (-7.34 % of base)
         -60 : 286662.dasm (-5.49 % of base)
         -56 : 54982.dasm (-5.58 % of base)
         -56 : 271765.dasm (-10.85 % of base)
         -56 : 271759.dasm (-11.02 % of base)
         -56 : 271763.dasm (-10.85 % of base)
         -48 : 106257.dasm (-7.74 % of base)
         -44 : 284381.dasm (-6.47 % of base)

91 total files with Code Size differences (30 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       26100 (35.43 % of base) : 102310.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
       24936 (35.22 % of base) : 106664.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
       20800 (71.17 % of base) : 59263.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       18464 (104.55 % of base) : 174550.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
       13316 (56.43 % of base) : 198937.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13200 (56.71 % of base) : 198521.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13140 (97.45 % of base) : 6903.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13060 (97.58 % of base) : 49411.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12624 (96.25 % of base) : 44210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11444 (96.85 % of base) : 295407.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
       11256 (83.75 % of base) : 53910.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
       11056 (89.31 % of base) : 175934.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
       10484 (77.29 % of base) : 90637.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        9940 (91.49 % of base) : 55633.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9508 (72.82 % of base) : 95968.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        9012 (90.59 % of base) : 6164.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8984 (94.29 % of base) : 111283.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test4():ubyte (FullOpts)
        8932 (85.20 % of base) : 175932.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
        8904 (86.65 % of base) : 175935.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
        8904 (86.89 % of base) : 175936.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)

Top method improvements (bytes):
        -572 (-4.50 % of base) : 44882.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -572 (-4.50 % of base) : 50663.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -544 (-6.99 % of base) : 68083.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.Collections.Frozen.Tests.SimpleStruct]:ComparingWithOtherSets(int):this (FullOpts)
        -380 (-5.04 % of base) : 68066.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
        -164 (-4.60 % of base) : 229661.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
         -88 (-4.73 % of base) : 296539.dasm - System.Threading.Tasks.Dataflow.Tests.BufferBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -84 (-10.99 % of base) : 286481.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31338_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -80 (-3.46 % of base) : 296617.dasm - System.Threading.Tasks.Dataflow.Tests.TransformBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -80 (-4.31 % of base) : 297277.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptionsAsyncEnumerable>d__37:MoveNext():this (FullOpts)
         -80 (-12.50 % of base) : 174536.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -76 (-3.44 % of base) : 296504.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -72 (-8.26 % of base) : 286660.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31513_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-7.34 % of base) : 271802.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27042_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -60 (-5.49 % of base) : 286662.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31514_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-5.58 % of base) : 54982.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__65:MoveNext():ubyte:this (FullOpts)
         -56 (-11.02 % of base) : 271759.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex26998_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271763.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27001_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271765.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27003_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -48 (-7.74 % of base) : 106257.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -44 (-6.47 % of base) : 284381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29296_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 91942.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 185756.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 91326.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         580 (111.54 % of base) : 96986.dasm - System.Diagnostics.Metrics.Tests.MetricsTests+<>c__DisplayClass15_0:<SerializedEventsTest>b__3():this (FullOpts)
        2724 (107.58 % of base) : 271770.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9598_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3168 (107.03 % of base) : 270978.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9105_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
       18464 (104.55 % of base) : 174550.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
         952 (104.39 % of base) : 300648.dasm - System.Threading.Tests.BarrierTests:RunBarrierTest7a() (FullOpts)
         232 (103.57 % of base) : 42130.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 30087.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 86963.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         984 (101.23 % of base) : 63933.dasm - System.CodeDom.Tests.CodeArrayCreateExpressionTests:Ctor_Type_CodeExpression(System.Type,System.String):this (FullOpts)
        1396 (101.16 % of base) : 49921.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         984 (100.41 % of base) : 63949.dasm - System.CodeDom.Tests.CodeArrayCreateExpressionTests:Ctor_String_CodeExpression(System.String,System.String):this (FullOpts)
        3168 (100.25 % of base) : 286565.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31413_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3632 (100.22 % of base) : 161308.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (FullOpts)
        1640 (100.00 % of base) : 198706.dasm - DataContractSerializerTests:DCS_InvalidDataContract_Read_Invalid_Types_Throws() (FullOpts)
        2148 (99.81 % of base) : 46410.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)
        1940 (99.18 % of base) : 227036.dasm - System.Security.Cryptography.Xml.Tests.Reference_ArbitraryElements:ExtraAttributes() (FullOpts)
        2712 (99.12 % of base) : 286592.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31431_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -80 (-12.50 % of base) : 174536.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -56 (-11.02 % of base) : 271759.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex26998_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -84 (-10.99 % of base) : 286481.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31338_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271763.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27001_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271765.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27003_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-9.17 % of base) : 214890.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
         -16 (-8.51 % of base) : 177460.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -72 (-8.26 % of base) : 286660.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31513_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -32 (-8.00 % of base) : 225231.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
         -48 (-7.74 % of base) : 106257.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -24 (-7.69 % of base) : 2951.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -64 (-7.34 % of base) : 271802.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27042_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-7.19 % of base) : 214282.dasm - System.Security.Cryptography.DES:set_Key(ubyte[]):this (FullOpts)
         -40 (-6.99 % of base) : 165122.dasm - PurchaseOrder:CreateInstance():PurchaseOrder (FullOpts)
        -544 (-6.99 % of base) : 68083.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.Collections.Frozen.Tests.SimpleStruct]:ComparingWithOtherSets(int):this (FullOpts)
         -16 (-6.56 % of base) : 188003.dasm - System.Runtime.InteropServices.Tests.PrelinkTests:Prelink_RuntimeSuppliedMethod_Success():this (FullOpts)
         -44 (-6.47 % of base) : 284381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29296_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 284383.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29298_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 284388.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29302_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 284394.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29305_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 15282328 (overridden on cmd)
Total bytes of diff: 17166840 (overridden on cmd)
Total bytes of delta: 1884512 (12.33 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       13092 : 20225.dasm (97.35 % of base)
       10480 : 25112.dasm (97.18 % of base)
       10032 : 23934.dasm (91.37 % of base)
        9288 : 19135.dasm (91.45 % of base)
        7888 : 1848.dasm (96.76 % of base)
        7400 : 32497.dasm (72.21 % of base)
        6916 : 17913.dasm (85.89 % of base)
        6680 : 24437.dasm (77.93 % of base)
        6096 : 20892.dasm (87.44 % of base)
        5968 : 20164.dasm (79.19 % of base)
        5824 : 30698.dasm (88.56 % of base)
        5712 : 20622.dasm (97.81 % of base)
        5384 : 12171.dasm (101.05 % of base)
        5312 : 12170.dasm (99.25 % of base)
        5068 : 1705.dasm (110.27 % of base)
        4960 : 7528.dasm (79.64 % of base)
        4928 : 24207.dasm (54.63 % of base)
        4892 : 21509.dasm (87.80 % of base)
        4712 : 16707.dasm (66.55 % of base)
        4660 : 12684.dasm (92.61 % of base)

Top file improvements (bytes):
        -112 : 645.dasm (-10.65 % of base)
         -56 : 28685.dasm (-5.58 % of base)
         -44 : 2046.dasm (-33.33 % of base)
         -20 : 31027.dasm (-1.99 % of base)
         -16 : 13122.dasm (-3.28 % of base)
         -16 : 2792.dasm (-2.12 % of base)
         -16 : 32926.dasm (-6.90 % of base)
         -12 : 16340.dasm (-2.29 % of base)
         -12 : 28643.dasm (-2.27 % of base)
         -12 : 5737.dasm (-1.49 % of base)
         -12 : 21075.dasm (-1.94 % of base)
          -8 : 31122.dasm (-0.68 % of base)
          -4 : 10131.dasm (-3.70 % of base)
          -4 : 3664.dasm (-2.08 % of base)
          -4 : 5118.dasm (-2.17 % of base)
          -4 : 661.dasm (-0.93 % of base)
          -4 : 111.dasm (-2.08 % of base)
          -4 : 13327.dasm (-2.17 % of base)
          -4 : 15336.dasm (-2.13 % of base)
          -4 : 22890.dasm (-1.79 % of base)

79 total files with Code Size differences (23 improved, 56 regressed), 18 unchanged.

Top method regressions (bytes):
       13092 (97.35 % of base) : 20225.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       10480 (97.18 % of base) : 25112.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10032 (91.37 % of base) : 23934.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9288 (91.45 % of base) : 19135.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        7888 (96.76 % of base) : 1848.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        7400 (72.21 % of base) : 32497.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6916 (85.89 % of base) : 17913.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6680 (77.93 % of base) : 24437.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
        6096 (87.44 % of base) : 20892.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        5968 (79.19 % of base) : 20164.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5824 (88.56 % of base) : 30698.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        5712 (97.81 % of base) : 20622.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5384 (101.05 % of base) : 12171.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5312 (99.25 % of base) : 12170.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5068 (110.27 % of base) : 1705.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        4960 (79.64 % of base) : 7528.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckEntityDefn$cont@2269(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.TypedTree+Entity,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Core.Unit) (FullOpts)
        4928 (54.63 % of base) : 24207.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
        4892 (87.80 % of base) : 21509.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
        4712 (66.55 % of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
        4660 (92.61 % of base) : 12684.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)

Top method improvements (bytes):
        -112 (-10.65 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -56 (-5.58 % of base) : 28685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 2046.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -20 (-1.99 % of base) : 31027.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
         -16 (-2.12 % of base) : 2792.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -16 (-3.28 % of base) : 13122.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -16 (-6.90 % of base) : 32926.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -12 (-1.49 % of base) : 5737.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -12 (-2.27 % of base) : 28643.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 16340.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-1.94 % of base) : 21075.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
          -8 (-0.68 % of base) : 31122.dasm - System.Management.Automation.LanguagePrimitives:FigureParseConversion(System.Type,System.Type):System.Management.Automation.LanguagePrimitives+PSConverter`1[System.Object] (FullOpts)
          -4 (-3.70 % of base) : 10131.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
          -4 (-1.41 % of base) : 24598.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.79 % of base) : 22890.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 13327.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 5118.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 3664.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
        1592 (117.75 % of base) : 2082.dasm - BepuPhysics.Constraints.TwoBodyTypeProcessor`7[BepuPhysics.Constraints.BallSocketPrestepData,BepuUtilities.Vector3Wide,BepuPhysics.Constraints.BallSocketFunctions,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessAll,BepuPhysics.Constraints.AccessAll]:WarmStart[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks,BepuPhysics.Constraints.BatchShouldAlwaysIntegrate,BepuPhysics.Constraints.DisallowPoseIntegration](byref,byref,BepuPhysics.Bodies,byref,float,float,int,int,int):this (FullOpts)
        5068 (110.27 % of base) : 1705.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        3152 (108.99 % of base) : 1467.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        5384 (101.05 % of base) : 12171.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        2876 (100.28 % of base) : 2039.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
        1544 (100.00 % of base) : 292.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        2892 (99.59 % of base) : 25705.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindPropertyPatternClause(Microsoft.CodeAnalysis.CSharp.Syntax.PropertyPatternClauseSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundPropertySubpattern]:this (FullOpts)
        5312 (99.25 % of base) : 12170.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        3820 (99.07 % of base) : 2183.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        3748 (99.05 % of base) : 12037.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ConvertStride(int):this (FullOpts)
        1984 (97.83 % of base) : 24063.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        5712 (97.81 % of base) : 20622.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         916 (97.45 % of base) : 2066.dasm - BepuPhysics.CollisionDetection.PairCache:FlushMappingChanges():this (FullOpts)
        1636 (97.38 % of base) : 1790.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,float,float,byref,byref,byref):this (FullOpts)
       13092 (97.35 % of base) : 20225.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       10480 (97.18 % of base) : 25112.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        2860 (97.01 % of base) : 21488.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:<ComputeApplicableUserDefinedImplicitConversionSet>g__addCandidatesFromType|146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],byref,ubyte):this (FullOpts)
        7888 (96.76 % of base) : 1848.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        2116 (96.71 % of base) : 18390.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
         228 (96.61 % of base) : 16335.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)

Top method improvements (percentages):
         -44 (-33.33 % of base) : 2046.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
        -112 (-10.65 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-6.90 % of base) : 32926.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -56 (-5.58 % of base) : 28685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
          -4 (-3.70 % of base) : 10131.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
         -16 (-3.28 % of base) : 13122.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -12 (-2.29 % of base) : 16340.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-2.27 % of base) : 28643.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 13327.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 5118.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.13 % of base) : 15336.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.12 % of base) : 2792.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
          -4 (-2.08 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 3664.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -20 (-1.99 % of base) : 31027.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
          -4 (-1.96 % of base) : 23532.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.94 % of base) : 21075.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
          -4 (-1.79 % of base) : 22890.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -12 (-1.49 % of base) : 5737.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)


smoke_tests.nativeaot.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: 2924168 (overridden on cmd)
Total bytes of diff: 3201108 (overridden on cmd)
Total bytes of delta: 276940 (9.47 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        6584 : 4639.dasm (74.89 % of base)
        4308 : 5383.dasm (88.28 % of base)
        4308 : 18054.dasm (88.06 % of base)
        4096 : 2289.dasm (89.59 % of base)
        2404 : 8121.dasm (86.60 % of base)
        2128 : 1256.dasm (75.25 % of base)
        2016 : 17613.dasm (70.99 % of base)
        1828 : 3564.dasm (56.28 % of base)
        1752 : 2920.dasm (82.18 % of base)
        1712 : 2083.dasm (75.35 % of base)
        1696 : 4550.dasm (56.53 % of base)
        1636 : 1660.dasm (50.56 % of base)
        1636 : 17817.dasm (50.37 % of base)
        1588 : 9858.dasm (69.28 % of base)
        1548 : 5075.dasm (80.12 % of base)
        1484 : 4505.dasm (67.45 % of base)
        1480 : 4500.dasm (54.41 % of base)
        1480 : 18248.dasm (54.25 % of base)
        1364 : 17899.dasm (72.71 % of base)
        1364 : 4619.dasm (72.86 % of base)

Top file improvements (bytes):
         -24 : 1712.dasm (-11.11 % of base)
          -8 : 5428.dasm (-1.96 % of base)
          -8 : 5439.dasm (-1.85 % of base)
          -4 : 2342.dasm (-2.13 % of base)
          -4 : 2353.dasm (-2.27 % of base)
          -4 : 5520.dasm (-2.33 % of base)
          -4 : 6423.dasm (-2.94 % of base)
          -4 : 6808.dasm (-2.38 % of base)

65 total files with Code Size differences (8 improved, 57 regressed), 10 unchanged.

Top method regressions (bytes):
        6584 (74.89 % of base) : 4639.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        4308 (88.28 % of base) : 5383.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4308 (88.06 % of base) : 18054.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4096 (89.59 % of base) : 2289.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        2404 (86.60 % of base) : 8121.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
        2128 (75.25 % of base) : 1256.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2016 (70.99 % of base) : 17613.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        1828 (56.28 % of base) : 3564.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        1752 (82.18 % of base) : 2920.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1712 (75.35 % of base) : 2083.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (FullOpts)
        1696 (56.53 % of base) : 4550.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this (FullOpts)
        1636 (50.56 % of base) : 1660.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
        1636 (50.37 % of base) : 17817.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
        1588 (69.28 % of base) : 9858.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
        1548 (80.12 % of base) : 5075.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
        1484 (67.45 % of base) : 4505.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
        1480 (54.41 % of base) : 4500.dasm - Internal.Reflection.Extensions.NonPortable.CustomAttributeInstantiator:Instantiate(System.Reflection.CustomAttributeData):System.Attribute (FullOpts)
        1480 (54.25 % of base) : 18248.dasm - Internal.Reflection.Extensions.NonPortable.CustomAttributeInstantiator:Instantiate(System.Reflection.CustomAttributeData):System.Attribute (FullOpts)
        1364 (72.71 % of base) : 17899.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        1364 (72.86 % of base) : 4619.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (bytes):
         -24 (-11.11 % of base) : 1712.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -8 (-1.85 % of base) : 5439.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)
          -8 (-1.96 % of base) : 5428.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -4 (-2.94 % of base) : 6423.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.38 % of base) : 6808.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.13 % of base) : 2342.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 2353.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.33 % of base) : 5520.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
         428 (96.40 % of base) : 5209.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
         692 (93.51 % of base) : 9841.dasm - System.Threading.PortableThreadPool+WaitThread:WaitThreadStart():this (FullOpts)
         848 (92.98 % of base) : 9846.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
         456 (89.76 % of base) : 2561.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
        4096 (89.59 % of base) : 2289.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        4308 (88.28 % of base) : 5383.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4308 (88.06 % of base) : 18054.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        1020 (87.33 % of base) : 9896.dasm - System.UriHelper:EscapeStringToBuilder(System.ReadOnlySpan`1[ushort],byref,System.Buffers.SearchValues`1[ushort],ubyte) (FullOpts)
        2404 (86.60 % of base) : 8121.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
         904 (85.93 % of base) : 4705.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberInit(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.MemberBinding]):this (FullOpts)
         844 (85.08 % of base) : 4124.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
         560 (84.34 % of base) : 6472.dasm - System.Reflection.DynamicInvokeInfo:CheckArguments(System.Span`1[System.Object],ulong,System.Object[],System.Reflection.BinderBundle):this (FullOpts)
        1204 (84.31 % of base) : 9654.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
        1000 (83.89 % of base) : 6986.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
        1752 (82.18 % of base) : 2920.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
         808 (81.78 % of base) : 9286.dasm - System.IO.Path:Combine(System.String[]):System.String (FullOpts)
         936 (80.97 % of base) : 8171.dasm - System.Reflection.AssemblyNameParser:Parse():System.Reflection.AssemblyNameParser+AssemblyNameParts:this (FullOpts)
         988 (80.19 % of base) : 19019.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
        1548 (80.12 % of base) : 5075.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          80 (80.00 % of base) : 1980.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)

Top method improvements (percentages):
         -24 (-11.11 % of base) : 1712.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -4 (-2.94 % of base) : 6423.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.38 % of base) : 6808.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.33 % of base) : 5520.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 2353.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.13 % of base) : 2342.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.96 % of base) : 5428.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -8 (-1.85 % of base) : 5439.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)



linux x64

Diffs are based on 2,504,130 contexts (977,766 MinOpts, 1,526,364 FullOpts).

MISSED contexts: base: 6,922 (0.28%), diff: 8,132 (0.32%)

Overall (+85,413,308 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 16,134,263 +2,068,742
benchmarks.run_pgo.linux.x64.checked.mch 69,995,881 +9,684,884
benchmarks.run_tiered.linux.x64.checked.mch 15,913,368 +900,860
coreclr_tests.run.linux.x64.checked.mch 402,389,388 +8,170,685
libraries.crossgen2.linux.x64.checked.mch 38,669,752 +4,092,082
libraries.pmi.linux.x64.checked.mch 58,849,984 +6,571,715
libraries_tests.run.linux.x64.Release.mch 339,241,076 +41,981,234
librariestestsnotieredcompilation.run.linux.x64.Release.mch 130,891,574 +9,478,422
realworld.run.linux.x64.checked.mch 12,750,565 +1,869,040
smoke_tests.nativeaot.linux.x64.checked.mch 4,175,394 +595,644

FullOpts (+85,413,308 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 15,870,090 +2,068,742
benchmarks.run_pgo.linux.x64.checked.mch 48,685,304 +9,684,884
benchmarks.run_tiered.linux.x64.checked.mch 3,632,243 +900,860
coreclr_tests.run.linux.x64.checked.mch 122,850,857 +8,170,685
libraries.crossgen2.linux.x64.checked.mch 38,668,550 +4,092,082
libraries.pmi.linux.x64.checked.mch 58,737,114 +6,571,715
libraries_tests.run.linux.x64.Release.mch 155,729,956 +41,981,234
librariestestsnotieredcompilation.run.linux.x64.Release.mch 120,233,126 +9,478,422
realworld.run.linux.x64.checked.mch 12,363,655 +1,869,040
smoke_tests.nativeaot.linux.x64.checked.mch 4,174,445 +595,644

Example diffs

benchmarks.run.linux.x64.checked.mch

-21 (-9.86%) : 14511.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,34 +8,38 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rdi -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> r13 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rdi +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> r14 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rsi "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> r15 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> r15 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> r15 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=19 bbWeight=1 PerfScore 6.75
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rbx+0x14] cmp edi, 1 @@ -44,21 +48,19 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi]
- lea r15, bword ptr [rbx+0x28] - ; byrRegs +[r15] - mov rsi, r15
+ lea rsi, bword ptr [rbx+0x28]
; byrRegs +[rsi] cmp dword ptr [rdi], edi call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rdi]
- ; byrRegs -[rsi r15]
+ ; byrRegs -[rsi]
mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rbx+0x28] - ; byrRegs +[rdi] - mov r14, rdi - ; byrRegs +[r14]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; byrRegs -[rdi] - mov r13, gword ptr [rbx+0x30] - ; gcrRegs +[r13]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov r14, gword ptr [rbx+0x30] + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] @@ -96,59 +93,56 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, ; gcrRegs -[rax rsi rdi] test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[r13]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14]
mov rsi, r15
- mov rdi, r14
+ lea rdi, bword ptr [rbx+0x28]
; byrRegs +[rdi] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rdi] test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r14]
lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r13]
+ ; gcrRegs -[rsi r14]
; byrRegs -[rdi] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 213, prolog size 21, PerfScore 76.65, instruction count 68, allocated bytes for code 213 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 44.43, instruction count 62, allocated bytes for code 192 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -156,14 +150,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-21 (-9.86%) : 22031.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,34 +8,38 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rdi -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> r13 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rdi +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> r14 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rsi "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> r15 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> r15 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> r15 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=19 bbWeight=1 PerfScore 6.75
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rbx+0x14] cmp edi, 1 @@ -44,21 +48,19 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi]
- lea r15, bword ptr [rbx+0x28] - ; byrRegs +[r15] - mov rsi, r15
+ lea rsi, bword ptr [rbx+0x28]
; byrRegs +[rsi] cmp dword ptr [rdi], edi call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rdi]
- ; byrRegs -[rsi r15]
+ ; byrRegs -[rsi]
mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rbx+0x28] - ; byrRegs +[rdi] - mov r14, rdi - ; byrRegs +[r14]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; byrRegs -[rdi] - mov r13, gword ptr [rbx+0x30] - ; gcrRegs +[r13]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov r14, gword ptr [rbx+0x30] + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] @@ -96,59 +93,56 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, ; gcrRegs -[rax rsi rdi] test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[r13]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14]
mov rsi, r15
- mov rdi, r14
+ lea rdi, bword ptr [rbx+0x28]
; byrRegs +[rdi] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rdi] test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r14]
lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r13]
+ ; gcrRegs -[rsi r14]
; byrRegs -[rdi] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 213, prolog size 21, PerfScore 76.65, instruction count 68, allocated bytes for code 213 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 44.43, instruction count 62, allocated bytes for code 192 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -156,14 +150,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-11 (-4.89%) : 34080.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)

@@ -16,8 +16,8 @@ ; V05 tmp3 [V05,T05] ( 3, 3 ) ref -> r13 class-hnd exact single-def "dup spill" <System.Object[]> ; V06 tmp4 [V06,T06] ( 4, 2.50) ref -> rax ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T01] ( 3, 12 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Type[]> -; V09 tmp7 [V09,T00] ( 5, 17 ) int -> rdi "Inline stloc first use temp"
+; V08 tmp6 [V08,T01] ( 3, 6 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Type[]> +;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; ; Lcl frame size = 0 @@ -34,22 +34,13 @@ G_M13201_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, rsi ; gcrRegs +[r15] ;; size=19 bbWeight=1 PerfScore 6.00
-G_M13201_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M13201_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; const ptr mov r8, gword ptr [rdi] ; gcrRegs +[r8] cmp byte ptr [rbx], bl
- xor edi, edi - ;; size=17 bbWeight=1 PerfScore 5.50 -G_M13201_IG03: ; bbWeight=4, gcrefRegs=8108 {rbx r8 r15}, byrefRegs=0000 {}, byref, isz - mov esi, edi - cmp gword ptr [r8+8*rsi+0x10], 0 - je G_M13201_IG11 - inc edi - test edi, edi - jle SHORT G_M13201_IG03 - ;; size=20 bbWeight=4 PerfScore 23.00 -G_M13201_IG04: ; bbWeight=1, gcrefRegs=8108 {rbx r8 r15}, byrefRegs=0000 {}, byref, isz
+ cmp gword ptr [r8+0x10], 0 + je G_M13201_IG09
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 20 @@ -66,25 +57,25 @@ G_M13201_IG04: ; bbWeight=1, gcrefRegs=8108 {rbx r8 r15}, byrefRegs=0000 mov r14, rax ; gcrRegs +[r14] test r14, r14
- jne SHORT G_M13201_IG09 - ;; size=39 bbWeight=1 PerfScore 9.75 -G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M13201_IG07 + ;; size=65 bbWeight=1 PerfScore 19.00 +G_M13201_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r14-r15] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M13201_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M13201_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M13201_IG10
+ jne SHORT G_M13201_IG08
;; size=5 bbWeight=1 PerfScore 1.25
-G_M13201_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] xor esi, esi mov edx, 1 ;; size=10 bbWeight=0.50 PerfScore 0.38
-G_M13201_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M13201_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -93,7 +84,7 @@ G_M13201_IG08: ; bbWeight=0.50, epilog, nogc, extend tail.jmp [System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object] ; gcr arg pop 0 ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M13201_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi] +[r14-r15] mov rdi, 0xD1FFAB1E ; System.Object[] mov esi, 1 @@ -123,9 +114,9 @@ G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C00 call [rax+0x28]<unknown method> ; gcrRegs -[rcx rdx rdi r8 r13-r14] +[rax] ; gcr arg pop 0
- jmp SHORT G_M13201_IG06
+ jmp SHORT G_M13201_IG04
;; size=60 bbWeight=0.50 PerfScore 6.88
-G_M13201_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13201_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] pop rbx pop r13 @@ -134,7 +125,7 @@ G_M13201_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, pop rbp ret ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13201_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov edi, 0x1E00 mov rsi, 0xD1FFAB1E @@ -149,7 +140,7 @@ G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 225, prolog size 19, PerfScore 56.88, instruction count 69, allocated bytes for code 225 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
+; Total bytes of code 214, prolog size 19, PerfScore 37.62, instruction count 64, allocated bytes for code 214 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
; ============================================================ Unwind Info:

+47 (+70.15%) : 16094.dasm - System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (FullOpts)

@@ -8,57 +8,88 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 14 ) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V00 this [V00,T02] ( 6, 16 ) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 4, 16 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Object> -; V04 tmp2 [V04,T00] ( 4, 52 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V03 tmp1 [V03,T01] ( 8, 18.50) ref -> rsi class-hnd "Inline return value spill temp" <System.Object> +; V04 tmp2 [V04,T00] ( 8, 58.50) ref -> rdi class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; ; Lcl frame size = 8
-G_M18211_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18211_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push rbx push rax lea rbp, [rsp+0x10] mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=11 bbWeight=8 PerfScore 30.00 -G_M18211_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M18211_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov eax, dword ptr [rdi+0x14] cmp eax, dword ptr [rdi+0x18] jl SHORT G_M18211_IG04
- ;; size=12 bbWeight=8 PerfScore 64.00 -G_M18211_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 8.00 +G_M18211_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] xor rsi, rsi ; gcrRegs +[rsi] jmp SHORT G_M18211_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M18211_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M18211_IG04: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] +[rdi] call [<unknown method>] ; gcrRegs -[rdi] +[rax] mov rsi, rax ; gcrRegs +[rsi]
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M18211_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M18211_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] test rsi, rsi
- je SHORT G_M18211_IG07 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M18211_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M18211_IG11
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov edx, 1 cmp dword ptr [rdi], edi call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] ; gcrRegs -[rsi rdi]
- jmp SHORT G_M18211_IG02
+ ;; size=22 bbWeight=1 PerfScore 9.50 +G_M18211_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x18] + ; gcrRegs +[rdi] + mov eax, dword ptr [rdi+0x14] + cmp eax, dword ptr [rdi+0x18] + jl SHORT G_M18211_IG08 + ;; size=12 bbWeight=8 PerfScore 64.00 +G_M18211_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M18211_IG09 + ;; size=4 bbWeight=2 PerfScore 4.50 +G_M18211_IG08: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] +[rdi] + call [<unknown method>] + ; gcrRegs -[rdi] +[rax] + mov rsi, rax + ; gcrRegs +[rsi] + ;; size=9 bbWeight=2 PerfScore 6.50 +G_M18211_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + test rsi, rsi + je SHORT G_M18211_IG11 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M18211_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x10] + ; gcrRegs +[rdi] + mov edx, 1 + cmp dword ptr [rdi], edi + call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] + ; gcrRegs -[rsi rdi] + jmp SHORT G_M18211_IG06
;; size=19 bbWeight=4 PerfScore 41.00
-G_M18211_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18211_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 8 pop rbx @@ -66,7 +97,7 @@ G_M18211_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 67, prolog size 8, PerfScore 158.25, instruction count 24, allocated bytes for code 67 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (FullOpts)
+; Total bytes of code 114, prolog size 8, PerfScore 150.88, instruction count 38, allocated bytes for code 114 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (FullOpts)
; ============================================================ Unwind Info:

+37 (+72.55%) : 33960.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)

@@ -8,14 +8,14 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 arg1 [V01,T05] ( 4, 7 ) int -> rdx single-def -; V02 loc0 [V02,T01] ( 5, 38 ) ubyte -> rax
+; V01 arg1 [V01,T05] ( 5, 8 ) int -> rdx single-def +; V02 loc0 [V02,T01] ( 8, 47 ) ubyte -> rax
;* V03 loc1 [V03,T06] ( 0, 0 ) int -> zero-ref single-def
-; V04 loc2 [V04,T04] ( 4, 13 ) int -> rcx -; V05 loc3 [V05,T00] ( 5, 68 ) int -> r8
+; V04 loc2 [V04,T04] ( 4, 13 ) int -> r8 +; V05 loc3 [V05,T00] ( 10, 85 ) int -> rcx
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 2, 17 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V08 tmp2 [V08,T02] ( 3, 21 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V07 tmp1 [V07,T03] ( 3, 21 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V08 tmp2 [V08,T02] ( 5, 26 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 0 @@ -26,37 +26,54 @@ G_M3894_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] xor eax, eax
- xor ecx, ecx
test edx, edx
- jle SHORT G_M3894_IG06 - ;; size=8 bbWeight=1 PerfScore 1.75 -G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jle SHORT G_M3894_IG08
xor eax, eax
- xor r8d, r8d
+ xor ecx, ecx
test esi, esi
- jle SHORT G_M3894_IG05 - ;; size=9 bbWeight=4 PerfScore 7.00 -G_M3894_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz - mov r9d, r8d - movzx r9, byte ptr [rdi+r9] - xor eax, r9d
+ jle SHORT G_M3894_IG04 + ;; size=14 bbWeight=1 PerfScore 3.25 +G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + mov r8d, ecx + movzx r8, byte ptr [rdi+r8] + xor eax, r8d
movzx rax, al
- inc r8d - cmp r8d, esi - jl SHORT G_M3894_IG04 - ;; size=22 bbWeight=16 PerfScore 68.00 -G_M3894_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
inc ecx
- cmp ecx, edx
+ cmp ecx, esi
jl SHORT G_M3894_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00 -G_M3894_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=4 PerfScore 17.00 +G_M3894_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + mov r8d, 1 + cmp edx, 1 + jle SHORT G_M3894_IG08 + ;; size=11 bbWeight=1 PerfScore 1.50 +G_M3894_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + xor eax, eax + xor ecx, ecx + test esi, esi + jle SHORT G_M3894_IG07 + ;; size=8 bbWeight=4 PerfScore 7.00 +G_M3894_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + mov r9d, ecx + movzx r9, byte ptr [rdi+r9] + xor r9d, eax + movzx rax, r9b + inc ecx + cmp ecx, esi + jl SHORT G_M3894_IG06 + ;; size=21 bbWeight=16 PerfScore 68.00 +G_M3894_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + inc r8d + cmp r8d, edx + jl SHORT G_M3894_IG05 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M3894_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 51, prolog size 4, PerfScore 85.50, instruction count 22, allocated bytes for code 51 (MethodHash=08d7f0c9) for method Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 4, PerfScore 105.50, instruction count 35, allocated bytes for code 88 (MethodHash=08d7f0c9) for method Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
; ============================================================ Unwind Info:

+28 (+116.67%) : 3282.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> rsi -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,44 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=6 bbWeight=1 PerfScore 1.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test esi, esi
- je SHORT G_M22426_IG04 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, esi mov eax, esi mov esi, edx test esi, esi
- jne SHORT G_M22426_IG03 - ;; size=12 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=16 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, esi + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=10 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, esi + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, esi + mov esi, ecx + jmp SHORT G_M22426_IG03 + ;; size=8 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 24, prolog size 6, PerfScore 112.25, instruction count 13, allocated bytes for code 24 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 146.25, instruction count 27, allocated bytes for code 52 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.linux.x64.checked.mch

-27 (-6.67%) : 93609.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,38 +9,41 @@ ; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 8.46) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 9, 7 ) byref -> r15 single-def
+; V00 this [V00,T00] ( 9, 8.36) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 9, 7 ) byref -> r15 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> rdi class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T05] ( 4, 4 ) int -> r13 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> rdi class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> r13 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T10] ( 4, 2 ) ref -> r14 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 12.43) int -> r13 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T11] ( 3, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T09] ( 5, 2.12) int -> r12 "Inline stloc first use temp" -; V14 tmp10 [V14,T15] ( 5, 1.94) ref -> [rbp-0x30] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T06] ( 4, 3.48) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T09] ( 4, 2.04) int -> r13 "Inline stloc first use temp" +; V14 tmp10 [V14,T15] ( 4, 1.61) ref -> r12 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.28) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T18] ( 4, 0.98) ref -> rax "guarded devirt return temp"
+; V17 tmp13 [V17,T19] ( 4, 0.66) ref -> rax "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" ; V22 tmp18 [V22,T08] ( 4, 2.17) int -> r12 "Inline stloc first use temp" ;* V23 tmp19 [V23,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp20 [V24,T04] ( 5, 4.59) ref -> rdi class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V24 tmp20 [V24,T03] ( 5, 4.59) ref -> rdi class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V26 tmp22 [V26,T19] ( 5, 0.75) ref -> rax "guarded devirt return temp"
+; V26 tmp22 [V26,T18] ( 5, 0.75) ref -> rax "guarded devirt return temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V28 tmp24 [V28,T16] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP ; V29 tmp25 [V29,T12] ( 2, 2 ) ref -> r14 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP ; V30 tmp26 [V30,T13] ( 2, 2 ) int -> r12 single-def "field V07._index (fldOffset=0x10)" P-INDEP ; V31 tmp27 [V31,T14] ( 2, 2 ) int -> r13 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP
+; V32 cse0 [V32,T22] ( 2, 0.02) long -> rax "CSE - conservative" +; V33 cse1 [V33,T20] ( 3, 0.63) long -> rax "CSE - moderate" +; V34 cse2 [V34,T21] ( 2, 0.08) int -> r13 "CSE - conservative"
; ; Lcl frame size = 8 @@ -63,112 +66,95 @@ G_M57630_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax cmp qword ptr [rdi], rsi
- jne G_M57630_IG22
+ jne G_M57630_IG21
mov r14, gword ptr [rdi+0x18] ; gcrRegs +[r14] test r14, r14
- je G_M57630_IG23
+ je G_M57630_IG22
;; size=36 bbWeight=1 PerfScore 9.50
-G_M57630_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
+G_M57630_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs -[rdi]
- mov r13d, 1
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 1 call [Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this] ; gcrRegs -[rdi] +[rax] test rax, rax
- jne G_M57630_IG25 - xor r12d, r12d - mov rax, gword ptr [rbx+0x18] - mov gword ptr [rbp-0x30], rax - ; GC ptr vars +{V14} - ;; size=40 bbWeight=1 PerfScore 8.25 -G_M57630_IG04: ; bbWeight=1.10, gcVars=0000000000008000 {V14}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs -[rax] - dec r13d
+ jne G_M57630_IG24 + xor r13d, r13d + mov r12, gword ptr [rbx+0x18] + ; gcrRegs +[r12]
mov rdi, rbx ; gcrRegs +[rdi]
- mov esi, r13d
+ xor esi, esi
call [Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this]
- ; gcrRegs -[rdi] +[rax] - test rax, rax - jne SHORT G_M57630_IG11 - ;; size=20 bbWeight=1.10 PerfScore 5.50 -G_M57630_IG05: ; bbWeight=0.46, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax] - cmp qword ptr [rax], rdi - jne SHORT G_M57630_IG14 - ;; size=19 bbWeight=0.46 PerfScore 2.41 -G_M57630_IG06: ; bbWeight=0.44, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref - mov rdi, rax - ; gcrRegs +[rdi] - mov esi, r13d - call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this]
; gcrRegs -[rdi]
- ;; size=12 bbWeight=0.44 PerfScore 1.54 -G_M57630_IG07: ; bbWeight=0.46, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz
test rax, rax
- jne SHORT G_M57630_IG10 - ;; size=5 bbWeight=0.46 PerfScore 0.57 -G_M57630_IG08: ; bbWeight=1.46, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz - ; gcrRegs -[rax] - test r13d, r13d - jg SHORT G_M57630_IG04 - ;; size=5 bbWeight=1.46 PerfScore 1.82 -G_M57630_IG09: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; GC ptr vars -{V14} - mov r13d, r12d - add r13d, dword ptr [rbx+0x20] - jmp SHORT G_M57630_IG12 - ;; size=9 bbWeight=0.36 PerfScore 1.89 -G_M57630_IG10: ; bbWeight=0.06, gcVars=0000000000008000 {V14}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs +[rax] - ; GC ptr vars +{V14 V15} - add r12d, dword ptr [rax+0x08] - jmp SHORT G_M57630_IG08 - ;; size=6 bbWeight=0.06 PerfScore 0.31 -G_M57630_IG11: ; bbWeight=0.64, gcVars=0000000000000000 {}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, gcvars, byref - ; GC ptr vars -{V14 V15} - mov r13d, dword ptr [rax+0x20] - mov rdi, gword ptr [rax+0x18] - ; gcrRegs +[rdi] - add r13d, dword ptr [rdi+0x08] - add r13d, r12d - ;; size=15 bbWeight=0.64 PerfScore 4.64 -G_M57630_IG12: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref - ; gcrRegs -[rax rdi]
+ je SHORT G_M57630_IG07 + ;; size=46 bbWeight=1 PerfScore 11.75 +G_M57630_IG04: ; bbWeight=0.64, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref + ; gcrRegs -[r12] + mov edi, dword ptr [rax+0x20] + mov rsi, gword ptr [rax+0x18] + ; gcrRegs +[rsi] + add edi, dword ptr [rsi+0x08] + add r13d, edi + ;; size=13 bbWeight=0.64 PerfScore 4.64 +G_M57630_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref + ; gcrRegs -[rax rsi]
xor r12d, r12d mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax cmp qword ptr [rdi], rsi
- jne G_M57630_IG26
+ jne G_M57630_IG20
;; size=26 bbWeight=1 PerfScore 6.50
-G_M57630_IG13: ; bbWeight=0.29, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, byref, isz - jmp SHORT G_M57630_IG18 - ;; size=2 bbWeight=0.29 PerfScore 0.59 -G_M57630_IG14: ; bbWeight=0.02, gcVars=0000000000008000 {V14}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M57630_IG06: ; bbWeight=0.29, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, byref, isz + xor esi, esi + call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this]
; gcrRegs -[rdi] +[rax]
- ; GC ptr vars +{V14 V15} - mov rdi, rax
+ jmp SHORT G_M57630_IG11 + ;; size=10 bbWeight=0.29 PerfScore 1.54 +G_M57630_IG07: ; bbWeight=0.31, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs -[rax] +[r12] + mov rax, qword ptr [r12] + mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax + cmp rax, rdi + jne SHORT G_M57630_IG19 + ;; size=19 bbWeight=0.31 PerfScore 1.07 +G_M57630_IG08: ; bbWeight=0.29, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=8000 {r15}, byref + mov rdi, r12
; gcrRegs +[rdi]
- mov esi, r13d - mov rcx, qword ptr [rax] - mov rcx, qword ptr [rcx+0x50] - call [rcx+0x20]<unknown method> - ; gcrRegs -[rdi] - jmp SHORT G_M57630_IG07 - ;; size=18 bbWeight=0.02 PerfScore 0.17 -G_M57630_IG15: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref
+ xor esi, esi + call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this] + ; gcrRegs -[rdi r12] +[rax] + ;; size=11 bbWeight=0.29 PerfScore 1.03 +G_M57630_IG09: ; bbWeight=0.31, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz + test rax, rax + jne SHORT G_M57630_IG13 + ;; size=5 bbWeight=0.31 PerfScore 0.38 +G_M57630_IG10: ; bbWeight=0.36, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs -[rax] + add r13d, dword ptr [rbx+0x20] + jmp SHORT G_M57630_IG05 + ;; size=6 bbWeight=0.36 PerfScore 1.80 +G_M57630_IG11: ; bbWeight=0.29, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M57630_IG15 + ;; size=5 bbWeight=0.29 PerfScore 0.37 +G_M57630_IG12: ; bbWeight=0.17, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz + jmp SHORT G_M57630_IG17 + ;; size=2 bbWeight=0.17 PerfScore 0.33 +G_M57630_IG13: ; bbWeight=0.04, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz + mov r13d, dword ptr [rax+0x08] + jmp SHORT G_M57630_IG10 + ;; size=6 bbWeight=0.04 PerfScore 0.17 +G_M57630_IG14: ; bbWeight=0.17, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- ; GC ptr vars -{V14 V15}
mov r12d, 1 ;; size=6 bbWeight=0.17 PerfScore 0.04
-G_M57630_IG16: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
+G_M57630_IG15: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
mov rdi, r15 ; byrRegs +[rdi] mov rsi, rbx @@ -188,7 +174,7 @@ G_M57630_IG16: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r1 mov rax, r15 ; byrRegs +[rax] ;; size=34 bbWeight=1 PerfScore 5.50
-G_M57630_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M57630_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -198,31 +184,41 @@ G_M57630_IG17: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M57630_IG18: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, gcvars, byref - ; gcrRegs +[rbx rdi r14]
+G_M57630_IG17: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz + ; gcrRegs +[rax rbx r14]
; byrRegs -[rax]
- xor esi, esi - call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this] - ; gcrRegs -[rdi] +[rax] - ;; size=8 bbWeight=0.29 PerfScore 0.95
...

-24 (-5.58%) : 104039.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,40 +9,43 @@ ; 4 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 8.13) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 9, 7 ) byref -> r15 single-def
+; V00 this [V00,T00] ( 9, 8.04) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 9, 7 ) byref -> r15 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> rdi class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T06] ( 4, 4 ) int -> r13 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> rdi class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> r13 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T11] ( 4, 2 ) ref -> r14 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T01] ( 7, 11.08) int -> r13 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T12] ( 3, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T10] ( 5, 2.06) int -> r12 "Inline stloc first use temp" -; V14 tmp10 [V14,T16] ( 5, 1.31) ref -> [rbp-0x30] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T05] ( 4, 4.11) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T10] ( 4, 2.03) int -> r13 "Inline stloc first use temp" +; V14 tmp10 [V14,T16] ( 4, 1.23) ref -> r12 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.92) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T20] ( 4, 0.30) ref -> rax "guarded devirt return temp"
+; V17 tmp13 [V17,T21] ( 4, 0.26) ref -> rax "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" ; V22 tmp18 [V22,T08] ( 4, 2.19) int -> r12 "Inline stloc first use temp" ;* V23 tmp19 [V23,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp20 [V24,T04] ( 4, 4.70) ref -> rdi class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V24 tmp20 [V24,T03] ( 4, 4.70) ref -> rdi class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> ; V26 tmp22 [V26,T19] ( 7, 0.88) ref -> rax "guarded devirt return temp" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V28 tmp24 [V28,T21] ( 4, 0.04) int -> r12 "Inline stloc first use temp"
+; V28 tmp24 [V28,T24] ( 4, 0.04) int -> r12 "Inline stloc first use temp"
;* V29 tmp25 [V29,T17] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP ; V30 tmp26 [V30,T13] ( 2, 2 ) ref -> r14 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP ; V31 tmp27 [V31,T14] ( 2, 2 ) int -> r12 single-def "field V07._index (fldOffset=0x10)" P-INDEP ; V32 tmp28 [V32,T15] ( 2, 2 ) int -> r13 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP
-; V33 cse0 [V33,T09] ( 3, 2.18) long -> rax "CSE - conservative"
+; V33 cse0 [V33,T22] ( 2, 0.09) long -> rax "CSE - conservative" +; V34 cse1 [V34,T20] ( 3, 0.28) long -> rax "CSE - conservative" +; V35 cse2 [V35,T09] ( 3, 2.18) long -> rax "CSE - conservative" +; V36 cse3 [V36,T23] ( 2, 0.06) int -> r13 "CSE - conservative"
; ; Lcl frame size = 8 @@ -65,96 +68,62 @@ G_M57630_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax cmp qword ptr [rdi], rsi
- jne G_M57630_IG25
+ jne G_M57630_IG21
mov r14, gword ptr [rdi+0x18] ; gcrRegs +[r14] test r14, r14
- je G_M57630_IG26
+ je G_M57630_IG22
;; size=36 bbWeight=1 PerfScore 9.50 G_M57630_IG03: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref ; gcrRegs -[rdi]
- mov r13d, 1
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 1 call [Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this] ; gcrRegs -[rdi] +[rax] test rax, rax
- jne G_M57630_IG28 - xor r12d, r12d - mov rax, gword ptr [rbx+0x18] - mov gword ptr [rbp-0x30], rax - ; GC ptr vars +{V14} - ;; size=40 bbWeight=1 PerfScore 8.25 -G_M57630_IG04: ; bbWeight=1.09, gcVars=0000000000010000 {V14}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; gcrRegs -[rax] - dec r13d
+ jne G_M57630_IG24 + xor r13d, r13d + mov r12, gword ptr [rbx+0x18] + ; gcrRegs +[r12]
mov rdi, rbx ; gcrRegs +[rdi]
- mov esi, r13d
+ xor esi, esi
call [Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this]
- ; gcrRegs -[rdi] +[rax]
+ ; gcrRegs -[rdi]
test rax, rax
- je SHORT G_M57630_IG08 - ;; size=20 bbWeight=1.09 PerfScore 5.46 -G_M57630_IG05: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, gcvars, byref - ; GC ptr vars -{V14} - mov r13d, dword ptr [rax+0x20] - mov rdi, gword ptr [rax+0x18] - ; gcrRegs +[rdi] - add r13d, dword ptr [rdi+0x08] - add r13d, r12d - ;; size=15 bbWeight=0.96 PerfScore 6.97 -G_M57630_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz - ; gcrRegs -[rax rdi]
+ je G_M57630_IG15 + ;; size=50 bbWeight=1 PerfScore 11.75 +G_M57630_IG04: ; bbWeight=0.96, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref + ; gcrRegs -[r12] + mov edi, dword ptr [rax+0x20] + mov rsi, gword ptr [rax+0x18] + ; gcrRegs +[rsi] + add edi, dword ptr [rsi+0x08] + add r13d, edi + ;; size=13 bbWeight=0.96 PerfScore 6.97 +G_M57630_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs -[rax rsi]
xor r12d, r12d mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov rax, qword ptr [rdi] mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax cmp rax, rsi
- jne SHORT G_M57630_IG16
+ je SHORT G_M57630_IG11
;; size=25 bbWeight=1 PerfScore 5.75
-G_M57630_IG07: ; bbWeight=0.17, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, byref - jmp G_M57630_IG21 - ;; size=5 bbWeight=0.17 PerfScore 0.34 -G_M57630_IG08: ; bbWeight=0.13, gcVars=0000000000010000 {V14}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref - ; gcrRegs -[rdi] - ; GC ptr vars +{V14} - mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax - mov rax, gword ptr [rbp-0x30] - ; gcrRegs +[rax] - cmp qword ptr [rax], rdi - je G_M57630_IG22 - ;; size=23 bbWeight=0.13 PerfScore 0.69 -G_M57630_IG09: ; bbWeight=0.05, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref - mov rdi, rax - ; gcrRegs +[rdi] - mov esi, r13d - mov rcx, qword ptr [rax] - mov rcx, qword ptr [rcx+0x50] - call [rcx+0x20]<unknown method> - ; gcrRegs -[rdi] - ;; size=16 bbWeight=0.05 PerfScore 0.39 -G_M57630_IG10: ; bbWeight=0.13, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz
+G_M57630_IG06: ; bbWeight=0.18, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, byref + xor esi, esi + mov rax, qword ptr [rax+0x50] + call [rax+0x20]<unknown method> + ; gcrRegs -[rdi] +[rax] + ;; size=9 bbWeight=0.18 PerfScore 0.93 +G_M57630_IG07: ; bbWeight=0.35, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz
test rax, rax
- jne SHORT G_M57630_IG20 - ;; size=5 bbWeight=0.13 PerfScore 0.16 -G_M57630_IG11: ; bbWeight=1.13, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz
+ jne SHORT G_M57630_IG12 + ;; size=5 bbWeight=0.35 PerfScore 0.44 +G_M57630_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- test r13d, r13d - jg SHORT G_M57630_IG04 - ;; size=5 bbWeight=1.13 PerfScore 1.41 -G_M57630_IG12: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz - ; GC ptr vars -{V14} - mov r13d, r12d - add r13d, dword ptr [rbx+0x20] - jmp SHORT G_M57630_IG06 - ;; size=9 bbWeight=0.04 PerfScore 0.20 -G_M57630_IG13: ; bbWeight=0.17, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref - mov r12d, 1 - ;; size=6 bbWeight=0.17 PerfScore 0.04 -G_M57630_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
mov rdi, r15 ; byrRegs +[rdi] mov rsi, rbx @@ -174,7 +143,7 @@ G_M57630_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r1 mov rax, r15 ; byrRegs +[rax] ;; size=34 bbWeight=1 PerfScore 5.50
-G_M57630_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M57630_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -184,59 +153,71 @@ G_M57630_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M57630_IG16: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, gcvars, byref - ; gcrRegs +[rbx rdi r14]
+G_M57630_IG10: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, gcvars, byref, isz + ; gcrRegs +[rbx r14]
; byrRegs -[rax]
+ mov r12d, 1 + jmp SHORT G_M57630_IG08 + ;; size=8 bbWeight=0.17 PerfScore 0.39 +G_M57630_IG11: ; bbWeight=0.17, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs +[rdi] + xor esi, esi + call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this] + ; gcrRegs -[rdi] +[rax] + jmp SHORT G_M57630_IG07 + ;; size=10 bbWeight=0.17 PerfScore 0.90 +G_M57630_IG12: ; bbWeight=0.17, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz + cmp word ptr [rax+0x0C], 1 + jne SHORT G_M57630_IG10 + ;; size=7 bbWeight=0.17 PerfScore 0.68 +G_M57630_IG13: ; bbWeight=0.01, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref + movzx r12, byte ptr [rax+0x0F] + cmp r12d, 255 + je G_M57630_IG25 + ;; size=18 bbWeight=0.01 PerfScore 0.04 +G_M57630_IG14: ; bbWeight=0.01, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M57630_IG08 + ;; size=2 bbWeight=0.01 PerfScore 0.02 +G_M57630_IG15: ; bbWeight=0.12, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=8000 {r15}, byref, isz + ; gcrRegs +[r12] + mov rax, qword ptr [r12] + mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax + cmp rax, rdi + je SHORT G_M57630_IG19 + ;; size=19 bbWeight=0.12 PerfScore 0.41 +G_M57630_IG16: ; bbWeight=0.05, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=8000 {r15}, byref + mov rdi, r12 + ; gcrRegs +[rdi]
xor esi, esi mov rax, qword ptr [rax+0x50] call [rax+0x20]<unknown method>
- ; gcrRegs -[rdi] +[rax] - ;; size=9 bbWeight=0.18 PerfScore 0.93 -G_M57630_IG17: ; bbWeight=0.35, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs -[rdi r12] +[rax] + ;; size=12 bbWeight=0.05 PerfScore 0.25 +G_M57630_IG17: ; bbWeight=0.12, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz
test rax, rax
- je SHORT G_M57630_IG14 - ;; size=5 bbWeight=0.35 PerfScore 0.44 -G_M57630_IG18: ; bbWeight=0.17, gcrefRegs=4009 {rax rbx r14}, byrefRegs=8000 {r15}, byref, isz - cmp word ptr [rax+0x0C], 1 - jne SHORT G_M57630_IG13
...

-18 (-4.21%) : 59223.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -12,34 +12,34 @@ ; V00 this [V00,T00] ( 11, 11 ) ref -> rbx this class-hnd single-def <System.Reflection.RuntimeParameterInfo> ; V01 arg1 [V01,T04] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Signature> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Reflection.MetadataImport>
-; V03 arg3 [V03,T01] ( 5, 4.99) int -> r15 single-def
+; V03 arg3 [V03,T02] ( 5, 4.99) int -> r15 single-def
; V04 arg4 [V04,T05] ( 3, 3 ) int -> r13 single-def ; V05 arg5 [V05,T19] ( 1, 1.00) int -> [rbp+0x10] single-def
-; V06 arg6 [V06,T13] ( 2, 2 ) ref -> [rbp+0x18] class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T14] ( 2, 2 ) ref -> [rbp+0x18] class-hnd single-def <System.Reflection.MemberInfo>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 3, 6.00) ref -> [rbp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
+; V08 tmp1 [V08,T03] ( 3, 6.00) ref -> [rbp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T11] ( 2, 4.00) int -> [rbp-0x2C] spill-single-def "impImportAndPushBox"
-; V10 tmp3 [V10,T12] ( 2, 2.00) int -> rdi
+; V10 tmp3 [V10,T13] ( 2, 1.99) int -> rdi
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T14] ( 2, 2.00) int -> rdi -; V14 tmp7 [V14,T03] ( 3, 5.96) ref -> rax class-hnd exact single-def "dup spill" <int[]>
+; V13 tmp6 [V13,T15] ( 2, 2.00) int -> rdi +; V14 tmp7 [V14,T01] ( 3, 5.96) ref -> rax class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T15] ( 2, 2.00) ubyte -> rdi "Inline return value spill temp"
+; V17 tmp10 [V17,T16] ( 2, 2.00) ubyte -> rdi "Inline return value spill temp"
; V18 tmp11 [V18,T09] ( 2, 4.00) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T17] ( 3, 1.99) ubyte -> rdi "Inline return value spill temp" -; V22 tmp15 [V22,T07] ( 5, 4.97) int -> rdi "Inline stloc first use temp"
+; V21 tmp14 [V21,T18] ( 3, 1.99) ubyte -> rdi "Inline return value spill temp" +;* V22 tmp15 [V22,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T10] ( 2, 2 ) ref -> [rbp-0x40] single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T06] ( 3, 3 ) long -> r12 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T16] ( 2, 2.00) long -> rdi "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T17] ( 2, 2.00) long -> rdi "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; V29 cse0 [V29,T08] ( 4, 4.00) int -> [rbp-0x30] spill-single-def "CSE - moderate"
-; V30 cse1 [V30,T18] ( 2, 1.99) int -> rcx hoist "CSE - moderate"
+; V30 cse1 [V30,T12] ( 2, 1.99) int -> rdi "CSE - moderate"
; ; Lcl frame size = 24 @@ -67,7 +67,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M43134_IG02: ; bbWeight=1, gcVars=0000000000000400 {V25}, gcrefRegs=400A {rcx rbx r14}, byrefRegs=0000 {}, gcvars, byref mov gword ptr [rbp+0x18], rcx test rcx, rcx
- je G_M43134_IG12
+ je G_M43134_IG13
;; size=13 bbWeight=1 PerfScore 2.25 G_M43134_IG03: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -106,42 +106,32 @@ G_M43134_IG03: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 mov esi, dword ptr [rbp-0x2C] ; byrRegs -[rsi] cmp esi, edi
- jne G_M43134_IG13
+ jne G_M43134_IG14
;; size=99 bbWeight=1.00 PerfScore 18.00 G_M43134_IG04: ; bbWeight=1.00, gcVars=0000000000000400 {V25}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V08} cmp dword ptr [rbp-0x30], 0
- je SHORT G_M43134_IG09
+ je SHORT G_M43134_IG07
;; size=6 bbWeight=1.00 PerfScore 3.00
-G_M43134_IG05: ; bbWeight=0.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M43134_IG05: ; bbWeight=0.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; int[] mov esi, 1 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0 mov dword ptr [rax+0x10], 0xD1FFAB1E
- xor edi, edi - mov ecx, r15d - and ecx, 0xD1FFAB1E - ;; size=38 bbWeight=0.99 PerfScore 3.23 -G_M43134_IG06: ; bbWeight=0.99, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref, isz - mov esi, edi - cmp dword ptr [rax+4*rsi+0x10], ecx - je SHORT G_M43134_IG07 - inc edi - cmp edi, 1 - jge G_M43134_IG14 - jmp SHORT G_M43134_IG06 - ;; size=21 bbWeight=0.99 PerfScore 7.70 -G_M43134_IG07: ; bbWeight=0.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov edi, r15d + and edi, 0xD1FFAB1E + cmp dword ptr [rax+0x10], edi + je SHORT G_M43134_IG10 + jmp G_M43134_IG15 + ;; size=46 bbWeight=0.99 PerfScore 8.94 +G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov edi, 1 - ;; size=5 bbWeight=0.99 PerfScore 0.25 -G_M43134_IG08: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test dil, dil
- je G_M43134_IG15 - ;; size=9 bbWeight=1.00 PerfScore 1.25 -G_M43134_IG09: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ je SHORT G_M43134_IG12 + ;; size=5 bbWeight=1.00 PerfScore 1.25 +G_M43134_IG07: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x2C], r13d lea rdi, bword ptr [rbx+0x18] ; byrRegs +[rdi] @@ -176,11 +166,11 @@ G_M43134_IG09: ; bbWeight=1.00, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi ;; size=76 bbWeight=1.00 PerfScore 15.50
-G_M43134_IG10: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43134_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov gword ptr [rbx+0x20], rdi ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M43134_IG11: ; bbWeight=1.00, epilog, nogc, extend
+G_M43134_IG09: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -190,9 +180,15 @@ G_M43134_IG11: ; bbWeight=1.00, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1.00 PerfScore 4.25
-G_M43134_IG12: ; bbWeight=0, gcVars=0000000000000400 {V25}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG10: ; bbWeight=0.99, gcVars=0000000000000400 {V25}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r14] ; GC ptr vars +{V10 V25}
+ mov edi, 1 + ;; size=5 bbWeight=0.99 PerfScore 0.25 +G_M43134_IG11: ; bbWeight=0.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M43134_IG06 + ;; size=2 bbWeight=0.99 PerfScore 1.99 +G_M43134_IG12: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -200,7 +196,7 @@ G_M43134_IG12: ; bbWeight=0, gcVars=0000000000000400 {V25}, gcrefRegs=400 call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- jmp G_M43134_IG03
+ jmp G_M43134_IG07
;; size=31 bbWeight=0 PerfScore 0.00 G_M43134_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E @@ -210,13 +206,9 @@ G_M43134_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- jmp G_M43134_IG04
+ jmp G_M43134_IG03
;; size=31 bbWeight=0 PerfScore 0.00 G_M43134_IG14: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- xor edi, edi - jmp G_M43134_IG08 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M43134_IG15: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -224,10 +216,14 @@ G_M43134_IG15: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- jmp G_M43134_IG09
+ jmp G_M43134_IG04
;; size=31 bbWeight=0 PerfScore 0.00
+G_M43134_IG15: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz + xor edi, edi + jmp SHORT G_M43134_IG11 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 428, prolog size 42, PerfScore 66.43, instruction count 103, allocated bytes for code 428 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 410, prolog size 42, PerfScore 66.43, instruction count 99, allocated bytes for code 410 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info:

+46 (+68.66%) : 103388.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)

@@ -9,13 +9,13 @@ ; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> -; V01 loc0 [V01,T00] ( 6, 21.84) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> +; V01 loc0 [V01,T00] ( 10, 25.17) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 14.88) ushort -> rcx "Inline return value spill temp" -; V04 tmp2 [V04,T02] ( 3, 14.88) int -> rcx "Inline stloc first use temp"
+; V03 tmp1 [V03,T01] ( 7, 17.38) ushort -> rcx "Inline return value spill temp" +; V04 tmp2 [V04,T02] ( 6, 17.38) int -> rcx "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -26,48 +26,67 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M65070_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M65070_IG05
+ je SHORT G_M65070_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M65070_IG03: ; bbWeight=4.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M65070_IG03: ; bbWeight=0.83, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rdi+0x18] ; gcrRegs +[rax] movzx rcx, word ptr [rax+0x0C] lea eax, [rcx-0x02] ; gcrRegs -[rax]
+ xor edx, edx
cmp eax, 0x1FFE
- jbe SHORT G_M65070_IG09 - ;; size=18 bbWeight=4.96 PerfScore 28.52 -G_M65070_IG04: ; bbWeight=4.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmovbe ecx, edx
cmp ecx, 0x2160
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG09 + ;; size=29 bbWeight=0.83 PerfScore 5.41 +G_M65070_IG04: ; bbWeight=0.83, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 0x2161
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG09
mov rdi, gword ptr [rdi+0x08] test rdi, rdi
- jne SHORT G_M65070_IG03
+ je SHORT G_M65070_IG07 + ;; size=17 bbWeight=0.83 PerfScore 3.74 +G_M65070_IG05: ; bbWeight=4.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rdi+0x18] + ; gcrRegs +[rcx] + movzx rcx, word ptr [rcx+0x0C] + ; gcrRegs -[rcx] + lea eax, [rcx-0x02] + cmp eax, 0x1FFE + jbe SHORT G_M65070_IG11 + ;; size=18 bbWeight=4.96 PerfScore 28.52 +G_M65070_IG06: ; bbWeight=4.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, 0x2160 + je SHORT G_M65070_IG09 + cmp ecx, 0x2161 + je SHORT G_M65070_IG09 + mov rdi, gword ptr [rdi+0x08] + test rdi, rdi + jne SHORT G_M65070_IG05
;; size=25 bbWeight=4.96 PerfScore 28.52
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M65070_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M65070_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M65070_IG07: ; bbWeight=2.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M65070_IG09: ; bbWeight=4.75, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
- ;; size=5 bbWeight=2.48 PerfScore 0.62 -G_M65070_IG08: ; bbWeight=2.48, epilog, nogc, extend
+ ;; size=5 bbWeight=4.75 PerfScore 1.19 +G_M65070_IG10: ; bbWeight=4.75, epilog, nogc, extend
pop rbp ret
- ;; size=2 bbWeight=2.48 PerfScore 3.72 -G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=4.75 PerfScore 7.13 +G_M65070_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi] xor ecx, ecx
- jmp SHORT G_M65070_IG04
+ jmp SHORT G_M65070_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 67, prolog size 4, PerfScore 65.62, instruction count 24, allocated bytes for code 67 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 113, prolog size 4, PerfScore 78.75, instruction count 37, allocated bytes for code 113 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================ Unwind Info:

+43 (+71.67%) : 147839.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g_SumFrequencies|32(ushort[]):float (Tier1)

@@ -10,10 +10,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <ushort[]>
-; V01 loc0 [V01,T05] ( 4, 6.13) float -> mm0 -; V02 loc1 [V02,T03] ( 3, 4.25) ref -> rdi class-hnd single-def <ushort[]> -; V03 loc2 [V03,T00] ( 5, 10.01) int -> rax -; V04 loc3 [V04,T01] ( 3, 6.57) ushort -> rdx
+; V01 loc0 [V01,T05] ( 5, 6.76) float -> mm0 +; V02 loc1 [V02,T03] ( 4, 4.95) ref -> rdi class-hnd single-def <ushort[]> +; V03 loc2 [V03,T00] ( 5, 9.70) int -> rcx +; V04 loc3 [V04,T01] ( 6, 8.59) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]> @@ -21,7 +21,7 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 4.25) int -> rcx "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 4, 4.95) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,34 +33,51 @@ G_M18410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18410_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] vxorps xmm0, xmm0, xmm0
- xor eax, eax - mov ecx, dword ptr [rdi+0x08] - test ecx, ecx - jle SHORT G_M18410_IG06 - ;; size=13 bbWeight=1 PerfScore 3.83 -G_M18410_IG03: ; bbWeight=2.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov edx, eax
+ mov eax, dword ptr [rdi+0x08] + test eax, eax + jle SHORT G_M18410_IG08 + ;; size=11 bbWeight=1 PerfScore 3.58 +G_M18410_IG03: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + movzx rcx, word ptr [rdi+0x10] + cmp ecx, 128 + jl SHORT G_M18410_IG09 + ;; size=12 bbWeight=0.69 PerfScore 2.25 +G_M18410_IG04: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov ecx, 1 + cmp eax, 1 + jle SHORT G_M18410_IG08 + ;; size=10 bbWeight=0.69 PerfScore 1.04 +G_M18410_IG05: ; bbWeight=2.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x10] cmp edx, 128
- jge SHORT G_M18410_IG05
+ jge SHORT G_M18410_IG07
;; size=15 bbWeight=2.25 PerfScore 7.89
-G_M18410_IG04: ; bbWeight=2.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M18410_IG06: ; bbWeight=2.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, edx mov rsi, 0xD1FFAB1E ; static handle vaddss xmm0, xmm0, dword ptr [rsi+4*rdx] ;; size=17 bbWeight=2.06 PerfScore 13.42
-G_M18410_IG05: ; bbWeight=2.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc eax - cmp ecx, eax - jg SHORT G_M18410_IG03
+G_M18410_IG07: ; bbWeight=2.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + inc ecx + cmp eax, ecx + jg SHORT G_M18410_IG05
;; size=6 bbWeight=2.25 PerfScore 3.38
-G_M18410_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18410_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M18410_IG09: ; bbWeight=0.63, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rdi] + mov ecx, ecx + mov rdx, 0xD1FFAB1E ; static handle + vxorps xmm0, xmm0, xmm0 + vaddss xmm0, xmm0, dword ptr [rdx+4*rcx] + jmp SHORT G_M18410_IG04 + ;; size=23 bbWeight=0.63 PerfScore 5.61
-; Total bytes of code 60, prolog size 7, PerfScore 32.27, instruction count 20, allocated bytes for code 60 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
+; Total bytes of code 103, prolog size 7, PerfScore 40.91, instruction count 30, allocated bytes for code 103 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
; ============================================================ Unwind Info:

+43 (+71.67%) : 155683.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g_SumFrequencies|32(ushort[]):float (Tier1)

@@ -10,10 +10,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <ushort[]>
-; V01 loc0 [V01,T05] ( 4, 5.99) float -> mm0 -; V02 loc1 [V02,T03] ( 3, 4.22) ref -> rdi class-hnd single-def <ushort[]> -; V03 loc2 [V03,T00] ( 5, 9.87) int -> rax -; V04 loc3 [V04,T01] ( 3, 6.43) ushort -> rdx
+; V01 loc0 [V01,T05] ( 5, 6.61) float -> mm0 +; V02 loc1 [V02,T03] ( 4, 4.91) ref -> rdi class-hnd single-def <ushort[]> +; V03 loc2 [V03,T00] ( 5, 9.55) int -> rcx +; V04 loc3 [V04,T01] ( 6, 8.42) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]> @@ -21,7 +21,7 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 3, 4.22) int -> rcx "CSE - aggressive"
+; V12 cse0 [V12,T04] ( 4, 4.91) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -33,34 +33,51 @@ G_M18410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18410_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] vxorps xmm0, xmm0, xmm0
- xor eax, eax - mov ecx, dword ptr [rdi+0x08] - test ecx, ecx - jle SHORT G_M18410_IG06 - ;; size=13 bbWeight=1 PerfScore 3.83 -G_M18410_IG03: ; bbWeight=2.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov edx, eax
+ mov eax, dword ptr [rdi+0x08] + test eax, eax + jle SHORT G_M18410_IG08 + ;; size=11 bbWeight=1 PerfScore 3.58 +G_M18410_IG03: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + movzx rcx, word ptr [rdi+0x10] + cmp ecx, 128 + jl SHORT G_M18410_IG09 + ;; size=12 bbWeight=0.69 PerfScore 2.24 +G_M18410_IG04: ; bbWeight=0.69, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov ecx, 1 + cmp eax, 1 + jle SHORT G_M18410_IG08 + ;; size=10 bbWeight=0.69 PerfScore 1.03 +G_M18410_IG05: ; bbWeight=2.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x10] cmp edx, 128
- jge SHORT G_M18410_IG05
+ jge SHORT G_M18410_IG07
;; size=15 bbWeight=2.22 PerfScore 7.76
-G_M18410_IG04: ; bbWeight=1.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M18410_IG06: ; bbWeight=1.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, edx mov rsi, 0xD1FFAB1E ; static handle vaddss xmm0, xmm0, dword ptr [rsi+4*rdx] ;; size=17 bbWeight=1.99 PerfScore 12.95
-G_M18410_IG05: ; bbWeight=2.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc eax - cmp ecx, eax - jg SHORT G_M18410_IG03
+G_M18410_IG07: ; bbWeight=2.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + inc ecx + cmp eax, ecx + jg SHORT G_M18410_IG05
;; size=6 bbWeight=2.22 PerfScore 3.32
-G_M18410_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18410_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M18410_IG09: ; bbWeight=0.62, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rdi] + mov ecx, ecx + mov rdx, 0xD1FFAB1E ; static handle + vxorps xmm0, xmm0, xmm0 + vaddss xmm0, xmm0, dword ptr [rdx+4*rcx] + jmp SHORT G_M18410_IG04 + ;; size=23 bbWeight=0.62 PerfScore 5.47
-; Total bytes of code 60, prolog size 7, PerfScore 31.62, instruction count 20, allocated bytes for code 60 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
+; Total bytes of code 103, prolog size 7, PerfScore 40.12, instruction count 30, allocated bytes for code 103 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.linux.x64.checked.mch

-21 (-9.86%) : 46898.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -8,34 +8,38 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rdi -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> r13 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rdi +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> r14 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rsi "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> r15 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> r15 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> r15 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=19 bbWeight=1 PerfScore 6.75
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rbx+0x14] cmp edi, 1 @@ -44,21 +48,19 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi]
- lea r15, bword ptr [rbx+0x28] - ; byrRegs +[r15] - mov rsi, r15
+ lea rsi, bword ptr [rbx+0x28]
; byrRegs +[rsi] cmp dword ptr [rdi], edi call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rdi]
- ; byrRegs -[rsi r15]
+ ; byrRegs -[rsi]
mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rbx+0x28] - ; byrRegs +[rdi] - mov r14, rdi - ; byrRegs +[r14]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; byrRegs -[rdi] - mov r13, gword ptr [rbx+0x30] - ; gcrRegs +[r13]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov r14, gword ptr [rbx+0x30] + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] @@ -96,59 +93,56 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, ; gcrRegs -[rax rsi rdi] test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[r13]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14]
mov rsi, r15
- mov rdi, r14
+ lea rdi, bword ptr [rbx+0x28]
; byrRegs +[rdi] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rdi] test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r14]
lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r13]
+ ; gcrRegs -[rsi r14]
; byrRegs -[rdi] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 213, prolog size 21, PerfScore 76.65, instruction count 68, allocated bytes for code 213 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 192, prolog size 16, PerfScore 44.43, instruction count 62, allocated bytes for code 192 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -156,14 +150,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-2 (-1.90%) : 44768.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)

@@ -7,11 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> rdi this single-def -; V01 loc0 [V01,T03] ( 3, 4.50) byref -> rcx -; V02 loc1 [V02,T02] ( 4, 8 ) int -> rcx
+; V00 this [V00,T00] ( 12, 8.25) byref -> rdi this single-def +; V01 loc0 [V01,T03] ( 3, 1 ) byref -> rcx +; V02 loc1 [V02,T02] ( 4, 1 ) int -> rcx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 1.50) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>> +; V05 cse0 [V05,T04] ( 3, 2.50) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -27,36 +28,35 @@ G_M21922_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr cmp eax, dword ptr [rcx+0x34] jne SHORT G_M21922_IG10 ;; size=11 bbWeight=1 PerfScore 8.00
-G_M21922_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M21922_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rcx] mov eax, dword ptr [rdi+0x0C] mov rcx, gword ptr [rdi] ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x28] - jb SHORT G_M21922_IG06 - ;; size=11 bbWeight=8 PerfScore 64.00 -G_M21922_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov ecx, dword ptr [rcx+0x28]
; gcrRegs -[rcx]
- mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x28] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rdi+0x0C], eax
+ cmp eax, ecx + jb SHORT G_M21922_IG06 + ;; size=13 bbWeight=1 PerfScore 7.25 +G_M21922_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref + inc ecx + mov dword ptr [rdi+0x0C], ecx
xor eax, eax mov dword ptr [rdi+0x10], eax
- ;; size=16 bbWeight=0.50 PerfScore 3.25
+ ;; size=10 bbWeight=0.50 PerfScore 1.25
G_M21922_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M21922_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+G_M21922_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; byrRegs +[rdi]
- mov rax, gword ptr [rdi]
+ mov rcx, gword ptr [rdi] + ; gcrRegs +[rcx] + mov rax, gword ptr [rcx+0x10]
; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x10]
mov ecx, dword ptr [rdi+0x0C]
+ ; gcrRegs -[rcx]
lea edx, [rcx+0x01] mov dword ptr [rdi+0x0C], edx cmp ecx, dword ptr [rax+0x08] @@ -65,8 +65,9 @@ G_M21922_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { lea rcx, bword ptr [rax+4*rcx+0x10] ; byrRegs +[rcx] cmp dword ptr [rcx+0x04], -1
- jl SHORT G_M21922_IG03 - ;; size=36 bbWeight=2 PerfScore 34.00
+ jge SHORT G_M21922_IG07 + jmp SHORT G_M21922_IG03 + ;; size=38 bbWeight=0.25 PerfScore 4.75
G_M21922_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0082 {rcx rdi}, byref ; gcrRegs -[rax] mov eax, dword ptr [rcx+0x08] @@ -88,7 +89,7 @@ G_M21922_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 4, PerfScore 113.62, instruction count 37, allocated bytes for code 105 (MethodHash=7a0aaa5d) for method System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 103, prolog size 4, PerfScore 25.62, instruction count 37, allocated bytes for code 103 (MethodHash=7a0aaa5d) for method System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

-2 (-1.79%) : 28521.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> rdi this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> rdi this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> rsi -; V03 loc1 [V03,T02] ( 4, 8 ) int -> rsi
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> rsi +; V03 loc1 [V03,T02] ( 4, 1 ) int -> rsi
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,38 +29,37 @@ G_M27287_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr cmp eax, dword ptr [rsi+0x34] jne SHORT G_M27287_IG10 ;; size=11 bbWeight=1 PerfScore 8.00
-G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M27287_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rsi] mov eax, dword ptr [rdi+0x14] mov rsi, gword ptr [rdi] ; gcrRegs +[rsi]
- cmp eax, dword ptr [rsi+0x28] - jb SHORT G_M27287_IG06 - ;; size=11 bbWeight=8 PerfScore 64.00 -G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov esi, dword ptr [rsi+0x28]
; gcrRegs -[rsi]
- mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x28] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rdi+0x14], eax
+ cmp eax, esi + jb SHORT G_M27287_IG06 + ;; size=13 bbWeight=1 PerfScore 7.25 +G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref + inc esi + mov dword ptr [rdi+0x14], esi
xor rax, rax ; gcrRegs +[rax] mov gword ptr [rdi+0x08], rax
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.25
G_M27287_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax] ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+G_M27287_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; byrRegs +[rdi]
- mov rax, gword ptr [rdi]
+ mov rsi, gword ptr [rdi] + ; gcrRegs +[rsi] + mov rax, gword ptr [rsi+0x10]
; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x10]
mov esi, dword ptr [rdi+0x14]
+ ; gcrRegs -[rsi]
lea ecx, [rsi+0x01] mov dword ptr [rdi+0x14], ecx cmp esi, dword ptr [rax+0x08] @@ -68,8 +68,9 @@ G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { lea rsi, bword ptr [rax+rsi+0x10] ; byrRegs +[rsi] cmp dword ptr [rsi+0x0C], -1
- jl SHORT G_M27287_IG03 - ;; size=36 bbWeight=2 PerfScore 34.00
+ jge SHORT G_M27287_IG07 + jmp SHORT G_M27287_IG03 + ;; size=38 bbWeight=0.25 PerfScore 4.75
G_M27287_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref ; gcrRegs -[rax] mov rsi, gword ptr [rsi] @@ -95,7 +96,7 @@ G_M27287_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 4, PerfScore 113.88, instruction count 38, allocated bytes for code 112 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 110, prolog size 4, PerfScore 25.88, instruction count 38, allocated bytes for code 110 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+42 (+67.74%) : 46055.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V01 loc0 [V01,T00] ( 6, 18 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 loc0 [V01,T00] ( 10, 22 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ushort -> rax "Inline return value spill temp" -; V04 tmp2 [V04,T01] ( 3, 10 ) int -> rax "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 6, 7.50) ushort -> rax "Inline return value spill temp" +; V04 tmp2 [V04,T01] ( 6, 12.50) int -> rax "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; @@ -25,45 +25,63 @@ G_M65070_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { G_M65070_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M65070_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M65070_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M65070_IG08
mov rax, gword ptr [rdi+0x18] ; gcrRegs +[rax] movzx rax, word ptr [rax+0x0C] ; gcrRegs -[rax] lea ecx, [rax-0x02] cmp ecx, 0x1FFE
- jbe SHORT G_M65070_IG05 - ;; size=19 bbWeight=4 PerfScore 23.00 -G_M65070_IG04: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M65070_IG04 + ;; size=24 bbWeight=1 PerfScore 7.00 +G_M65070_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp eax, 0x2160
- je SHORT G_M65070_IG08
+ je SHORT G_M65070_IG10
cmp eax, 0x2161
- je SHORT G_M65070_IG08 - ;; size=14 bbWeight=2 PerfScore 5.00 -G_M65070_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M65070_IG10 + ;; size=14 bbWeight=0.50 PerfScore 1.25 +G_M65070_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rdi+0x08] test rdi, rdi
- jne SHORT G_M65070_IG03
+ je SHORT G_M65070_IG08 + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M65070_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rdi+0x18] + ; gcrRegs +[rax] + movzx rax, word ptr [rax+0x0C] + ; gcrRegs -[rax] + lea ecx, [rax-0x02] + cmp ecx, 0x1FFE + jbe SHORT G_M65070_IG07 + ;; size=19 bbWeight=4 PerfScore 23.00 +G_M65070_IG06: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp eax, 0x2160 + je SHORT G_M65070_IG10 + cmp eax, 0x2161 + je SHORT G_M65070_IG10 + ;; size=14 bbWeight=2 PerfScore 5.00 +G_M65070_IG07: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rdi+0x08] + test rdi, rdi + jne SHORT G_M65070_IG05
;; size=9 bbWeight=4 PerfScore 13.00
-G_M65070_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M65070_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M65070_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M65070_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M65070_IG09: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M65070_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M65070_IG11: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 62, prolog size 4, PerfScore 45.25, instruction count 22, allocated bytes for code 62 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 104, prolog size 4, PerfScore 55.50, instruction count 34, allocated bytes for code 104 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================ Unwind Info:

+41 (+68.33%) : 52834.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g_SumFrequencies|32(ushort[]):float (Tier1)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <ushort[]>
-; V01 loc0 [V01,T05] ( 4, 6 ) float -> mm0 -; V02 loc1 [V02,T02] ( 3, 6 ) ref -> rdi class-hnd single-def <ushort[]> -; V03 loc2 [V03,T00] ( 5, 17 ) int -> rax -; V04 loc3 [V04,T01] ( 3, 10 ) ushort -> rdx
+; V01 loc0 [V01,T05] ( 5, 6.50) float -> mm0 +; V02 loc1 [V02,T02] ( 4, 7 ) ref -> rdi class-hnd single-def <ushort[]> +; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx +; V04 loc3 [V04,T01] ( 6, 12.50) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]> @@ -20,7 +20,7 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T03] ( 3, 6 ) int -> rcx "CSE - aggressive"
+; V12 cse0 [V12,T03] ( 4, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,34 +32,47 @@ G_M18410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18410_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] vxorps xmm0, xmm0, xmm0
- xor eax, eax - mov ecx, dword ptr [rdi+0x08] - test ecx, ecx - jle SHORT G_M18410_IG06 - ;; size=13 bbWeight=1 PerfScore 3.83 -G_M18410_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov edx, eax
+ mov eax, dword ptr [rdi+0x08] + test eax, eax + jle SHORT G_M18410_IG08 + movzx rcx, word ptr [rdi+0x10] + cmp ecx, 128 + jge SHORT G_M18410_IG04 + ;; size=23 bbWeight=1 PerfScore 6.83 +G_M18410_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + mov ecx, ecx + mov rdx, 0xD1FFAB1E ; static handle + vxorps xmm0, xmm0, xmm0 + vaddss xmm0, xmm0, dword ptr [rdx+4*rcx] + ;; size=21 bbWeight=0.50 PerfScore 3.42 +G_M18410_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov ecx, 1 + cmp eax, 1 + jle SHORT G_M18410_IG08 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M18410_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov edx, ecx
movzx rdx, word ptr [rdi+2*rdx+0x10] cmp edx, 128
- jge SHORT G_M18410_IG05
+ jge SHORT G_M18410_IG07
;; size=15 bbWeight=4 PerfScore 14.00
-G_M18410_IG04: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M18410_IG06: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov edx, edx mov rsi, 0xD1FFAB1E ; static handle vaddss xmm0, xmm0, dword ptr [rsi+4*rdx] ;; size=17 bbWeight=2 PerfScore 13.00
-G_M18410_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - inc eax - cmp ecx, eax - jg SHORT G_M18410_IG03
+G_M18410_IG07: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + inc ecx + cmp eax, ecx + jg SHORT G_M18410_IG05
;; size=6 bbWeight=4 PerfScore 6.00
-G_M18410_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18410_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 60, prolog size 7, PerfScore 40.58, instruction count 20, allocated bytes for code 60 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
+; Total bytes of code 101, prolog size 7, PerfScore 48.50, instruction count 29, allocated bytes for code 101 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
; ============================================================ Unwind Info:

+47 (+70.15%) : 11386.dasm - System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)

@@ -8,57 +8,88 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 14 ) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V00 this [V00,T02] ( 6, 16 ) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 4, 16 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Object> -; V04 tmp2 [V04,T00] ( 4, 52 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V03 tmp1 [V03,T01] ( 8, 18.50) ref -> rsi class-hnd "Inline return value spill temp" <System.Object> +; V04 tmp2 [V04,T00] ( 8, 58.50) ref -> rdi class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; ; Lcl frame size = 8
-G_M18211_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18211_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push rbx push rax lea rbp, [rsp+0x10] mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=11 bbWeight=8 PerfScore 30.00 -G_M18211_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M18211_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov eax, dword ptr [rdi+0x14] cmp eax, dword ptr [rdi+0x18] jl SHORT G_M18211_IG04
- ;; size=12 bbWeight=8 PerfScore 64.00 -G_M18211_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 8.00 +G_M18211_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] xor rsi, rsi ; gcrRegs +[rsi] jmp SHORT G_M18211_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M18211_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M18211_IG04: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] +[rdi] call [<unknown method>] ; gcrRegs -[rdi] +[rax] mov rsi, rax ; gcrRegs +[rsi]
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M18211_IG05: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M18211_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] test rsi, rsi
- je SHORT G_M18211_IG07 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M18211_IG06: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M18211_IG11
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov edx, 1 cmp dword ptr [rdi], edi call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] ; gcrRegs -[rsi rdi]
- jmp SHORT G_M18211_IG02
+ ;; size=22 bbWeight=1 PerfScore 9.50 +G_M18211_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x18] + ; gcrRegs +[rdi] + mov eax, dword ptr [rdi+0x14] + cmp eax, dword ptr [rdi+0x18] + jl SHORT G_M18211_IG08 + ;; size=12 bbWeight=8 PerfScore 64.00 +G_M18211_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M18211_IG09 + ;; size=4 bbWeight=2 PerfScore 4.50 +G_M18211_IG08: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] +[rdi] + call [<unknown method>] + ; gcrRegs -[rdi] +[rax] + mov rsi, rax + ; gcrRegs +[rsi] + ;; size=9 bbWeight=2 PerfScore 6.50 +G_M18211_IG09: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + test rsi, rsi + je SHORT G_M18211_IG11 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M18211_IG10: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x10] + ; gcrRegs +[rdi] + mov edx, 1 + cmp dword ptr [rdi], edi + call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] + ; gcrRegs -[rsi rdi] + jmp SHORT G_M18211_IG06
;; size=19 bbWeight=4 PerfScore 41.00
-G_M18211_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18211_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx] add rsp, 8 pop rbx @@ -66,7 +97,7 @@ G_M18211_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 67, prolog size 8, PerfScore 158.25, instruction count 24, allocated bytes for code 67 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
+; Total bytes of code 114, prolog size 8, PerfScore 150.88, instruction count 38, allocated bytes for code 114 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-40 (-59.70%) : 541428.dasm - foo:Main():int (FullOpts)

@@ -7,53 +7,29 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 5, 14 ) int -> rdi
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0
-G_M24869_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M24869_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M24869_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edi, 1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M24869_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - inc edi - cmp edi, 2 - jl SHORT G_M24869_IG03 - ;; size=7 bbWeight=4 PerfScore 6.00 -G_M24869_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp edi, 2 - je SHORT G_M24869_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M24869_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - mov eax, 101 - ;; size=21 bbWeight=0.50 PerfScore 1.75 -G_M24869_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop rbp - ret - ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M24869_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi] ; gcr arg pop 0 mov eax, 100
- ;; size=21 bbWeight=0.50 PerfScore 1.75 -G_M24869_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=21 bbWeight=1 PerfScore 3.50 +G_M24869_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 67, prolog size 4, PerfScore 13.75, instruction count 18, allocated bytes for code 67 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
+; Total bytes of code 27, prolog size 4, PerfScore 6.25, instruction count 7, allocated bytes for code 27 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
; ============================================================ Unwind Info:

-39 (-23.49%) : 502149.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)

@@ -7,14 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 9, 35.92) ref -> rbx class-hnd exact single-def <int[]> -; V01 loc1 [V01,T00] ( 12, 65.84) int -> rax -; V02 loc2 [V02,T01] ( 8, 43 ) int -> rdi -;* V03 loc3 [V03,T06] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T01] ( 10, 15.92) ref -> rbx class-hnd exact single-def <int[]> +; V01 loc1 [V01,T00] ( 5, 16.84) int -> rax +; V02 loc2 [V02,T03] ( 3, 3 ) int -> rdi +;* V03 loc3 [V03,T04] ( 0, 0 ) int -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 2, 16 ) int -> rcx "CSE - aggressive" -; V06 cse1 [V06,T04] ( 2, 16 ) int -> rcx "CSE - aggressive" -; V07 cse2 [V07,T05] ( 3, 11.88) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 3, 11.88) int -> rax "CSE - aggressive"
; ; Lcl frame size = 8 @@ -24,7 +22,7 @@ G_M42106_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { push rax lea rbp, [rsp+0x10] ;; size=8 bbWeight=1 PerfScore 3.50
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; int[] mov esi, 6 call CORINFO_HELP_NEWARR_1_VC @@ -32,69 +30,53 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- mov edi, 0x1869F - mov eax, 1 - ; gcrRegs -[rax] - ;; size=33 bbWeight=1 PerfScore 2.25 -G_M42106_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov ecx, eax - mov edx, edi - and edx, 0x7FFF - mov dword ptr [rbx+4*rcx+0x10], edx - lea ecx, [rax+0x01] - lea edx, [rdi+0x2B67] - and edx, 0x7FFF - mov dword ptr [rbx+4*rcx+0x10], edx - lea ecx, [rax+0x02] - lea edx, [rdi+0x56CE] - and edx, 0x7FFF - mov dword ptr [rbx+4*rcx+0x10], edx - add edi, 0x8235 - add eax, 3 - cmp eax, 3 - jle SHORT G_M42106_IG03 - ;; size=66 bbWeight=8 PerfScore 64.00 -G_M42106_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+0x14], 0x69F + mov rdi, 0xD1FFAB1E + mov qword ptr [rbx+0x18], rdi + mov edi, 0x208D4
mov dword ptr [rbx+0x20], edi mov dword ptr [rbx+0x24], edi mov rdi, rbx ; gcrRegs +[rdi] call [Benchstone.BenchI.BubbleSort2:Inner(int[])]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0
- xor eax, eax - ;; size=17 bbWeight=1 PerfScore 5.50 -G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rbx+0x10] + cmp eax, dword ptr [rbx+0x14] + jg SHORT G_M42106_IG06 + mov eax, 1 + ;; size=77 bbWeight=1 PerfScore 15.75 +G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, eax mov ecx, dword ptr [rbx+4*rcx+0x10] inc eax mov edx, eax cmp ecx, dword ptr [rbx+4*rdx+0x10]
- jg SHORT G_M42106_IG08
+ jg SHORT G_M42106_IG06
cmp eax, 4
- jl SHORT G_M42106_IG05
+ jl SHORT G_M42106_IG03
;; size=21 bbWeight=3.96 PerfScore 31.68
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + ret + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M42106_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M42106_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 166, prolog size 8, PerfScore 109.55, instruction count 49, allocated bytes for code 166 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 127, prolog size 8, PerfScore 53.55, instruction count 38, allocated bytes for code 127 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================ Unwind Info:

-11 (-15.71%) : 284409.dasm - Test_b99969:DoSpoof() (Tier1-OSR)

@@ -10,7 +10,8 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 cse0 [V01,T00] ( 2, 2 ) ref -> rax hoist "CSE - aggressive"
+; V01 cse0 [V01,T01] ( 2, 2 ) ref -> rcx hoist "CSE - aggressive" +; V02 cse1 [V02,T00] ( 5, 3 ) long -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,34 +20,34 @@ G_M19890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rax mov rbp, rsp ;; size=8 bbWeight=1 PerfScore 3.25
-G_M19890_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19890_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; static handle
- mov rax, gword ptr [rax] - ; gcrRegs +[rax] - ;; size=13 bbWeight=1 PerfScore 2.25 -G_M19890_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rax+0x0D], 0
+ mov rcx, gword ptr [rax] + ; gcrRegs +[rcx] + cmp byte ptr [rcx+0x0D], 0 + jne SHORT G_M19890_IG04 + mov rcx, gword ptr [rax] + ;; size=22 bbWeight=1 PerfScore 8.25 +G_M19890_IG03: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp byte ptr [rcx+0x0D], 0
je SHORT G_M19890_IG03 ;; size=6 bbWeight=1 PerfScore 4.00 G_M19890_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] - mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rax] - ; gcrRegs +[rax] - mov dword ptr [rax+0x08], 0xD1FFAB1E - mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - ; gcrRegs -[rax]
+ ; gcrRegs -[rcx] + mov rcx, gword ptr [rax] + ; gcrRegs +[rcx] + mov dword ptr [rcx+0x08], 0xD1FFAB1E
mov rax, gword ptr [rax] ; gcrRegs +[rax] mov byte ptr [rax+0x0C], 1
- ;; size=37 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M19890_IG05: ; bbWeight=0, epilog, nogc, extend add rsp, 64 pop rbp ret ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 8, PerfScore 9.50, instruction count 16, allocated bytes for code 70 (MethodHash=bd6db24d) for method Test_b99969:DoSpoof() (Tier1-OSR)
+; Total bytes of code 59, prolog size 8, PerfScore 15.50, instruction count 17, allocated bytes for code 59 (MethodHash=bd6db24d) for method Test_b99969:DoSpoof() (Tier1-OSR)
; ============================================================ Unwind Info:

+37 (+108.82%) : 591310.dasm - OVFTest:Test_long(long):long (FullOpts)

@@ -7,30 +7,42 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) long -> rdi
+; V00 arg0 [V00,T01] ( 6, 20 ) long -> rdi
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) long -> rdi "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) long -> rdi "arg temp" +; V03 cse0 [V03,T02] ( 3, 10 ) double -> [rbp-0x08] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M47121_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
+ sub rsp, 16
vzeroupper
- mov rbp, rsp - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M47121_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea rbp, [rsp+0x10] + ;; size=13 bbWeight=1 PerfScore 2.75 +G_M47121_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdi
- vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vmovsd xmm1, qword ptr [reloc @RWD00] + vmovsd qword ptr [rbp-0x08], xmm1 + vmulsd xmm0, xmm0, xmm1
call CORINFO_HELP_DBL2LNG_OVF ; gcr arg pop 0 mov rdi, rax
- jmp SHORT G_M47121_IG02 - ;; size=27 bbWeight=8 PerfScore 116.67
+ ;; size=34 bbWeight=1 PerfScore 14.58 +G_M47121_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + vxorps xmm0, xmm0, xmm0 + vcvtsi2sd xmm0, xmm0, rdi + vmulsd xmm0, xmm0, qword ptr [rbp-0x08] + call CORINFO_HELP_DBL2LNG_OVF + ; gcr arg pop 0 + mov rdi, rax + jmp SHORT G_M47121_IG03 + ;; size=24 bbWeight=8 PerfScore 116.67
RWD00 dq 4000000000000000h ; 2
-; Total bytes of code 34, prolog size 7, PerfScore 118.92, instruction count 9, allocated bytes for code 34 (MethodHash=332247ee) for method OVFTest:Test_long(long):long (FullOpts)
+; Total bytes of code 71, prolog size 13, PerfScore 134.00, instruction count 17, allocated bytes for code 71 (MethodHash=332247ee) for method OVFTest:Test_long(long):long (FullOpts)
; ============================================================ Unwind Info: @@ -38,9 +50,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
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)

+35 (+109.38%) : 591308.dasm - OVFTest:Test_int(int):int (FullOpts)

@@ -7,30 +7,42 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) int -> rdi
+; V00 arg0 [V00,T01] ( 6, 20 ) int -> rdi
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> rdi "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> rdi "arg temp" +; V03 cse0 [V03,T02] ( 3, 10 ) double -> [rbp-0x08] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M40488_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
+ sub rsp, 16
vzeroupper
- mov rbp, rsp - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40488_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea rbp, [rsp+0x10] + ;; size=13 bbWeight=1 PerfScore 2.75 +G_M40488_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, edi
- vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vmovsd xmm1, qword ptr [reloc @RWD00] + vmovsd qword ptr [rbp-0x08], xmm1 + vmulsd xmm0, xmm0, xmm1
call CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 mov edi, eax
- jmp SHORT G_M40488_IG02 - ;; size=25 bbWeight=8 PerfScore 116.67
+ ;; size=32 bbWeight=1 PerfScore 14.58 +G_M40488_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + vxorps xmm0, xmm0, xmm0 + vcvtsi2sd xmm0, xmm0, edi + vmulsd xmm0, xmm0, qword ptr [rbp-0x08] + call CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + mov edi, eax + jmp SHORT G_M40488_IG03 + ;; size=22 bbWeight=8 PerfScore 116.67
RWD00 dq 4000000000000000h ; 2
-; Total bytes of code 32, prolog size 7, PerfScore 118.92, instruction count 9, allocated bytes for code 32 (MethodHash=9c2161d7) for method OVFTest:Test_int(int):int (FullOpts)
+; Total bytes of code 67, prolog size 13, PerfScore 134.00, instruction count 17, allocated bytes for code 67 (MethodHash=9c2161d7) for method OVFTest:Test_int(int):int (FullOpts)
; ============================================================ Unwind Info: @@ -38,9 +50,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
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)

+34 (+109.68%) : 591311.dasm - OVFTest:Test_ulong(ulong):ulong (FullOpts)

@@ -7,29 +7,40 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) long -> rdi
+; V00 arg0 [V00,T01] ( 6, 20 ) long -> rdi
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) long -> rdi "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) long -> rdi "arg temp" +; V03 cse0 [V03,T02] ( 3, 10 ) double -> [rbp-0x08] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M40740_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
+ sub rsp, 16
vzeroupper
- mov rbp, rsp - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M40740_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea rbp, [rsp+0x10] + ;; size=13 bbWeight=1 PerfScore 2.75 +G_M40740_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vcvtusi2sd xmm0, rdi
- vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vmovsd xmm1, qword ptr [reloc @RWD00] + vmovsd qword ptr [rbp-0x08], xmm1 + vmulsd xmm0, xmm0, xmm1
call CORINFO_HELP_DBL2ULNG_OVF ; gcr arg pop 0 mov rdi, rax
- jmp SHORT G_M40740_IG02 - ;; size=24 bbWeight=8 PerfScore 98.00
+ ;; size=31 bbWeight=1 PerfScore 12.25 +G_M40740_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + vcvtusi2sd xmm0, rdi + vmulsd xmm0, xmm0, qword ptr [rbp-0x08] + call CORINFO_HELP_DBL2ULNG_OVF + ; gcr arg pop 0 + mov rdi, rax + jmp SHORT G_M40740_IG03 + ;; size=21 bbWeight=8 PerfScore 98.00
RWD00 dq 4000000000000000h ; 2
-; Total bytes of code 31, prolog size 7, PerfScore 100.25, instruction count 8, allocated bytes for code 31 (MethodHash=390d60db) for method OVFTest:Test_ulong(ulong):ulong (FullOpts)
+; Total bytes of code 65, prolog size 13, PerfScore 113.00, instruction count 15, allocated bytes for code 65 (MethodHash=390d60db) for method OVFTest:Test_ulong(ulong):ulong (FullOpts)
; ============================================================ Unwind Info: @@ -37,9 +48,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
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)

libraries.crossgen2.linux.x64.checked.mch

-14 (-8.54%) : 123472.dasm - Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)

@@ -9,35 +9,32 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 6, 4.50) ref -> rbx this class-hnd single-def <Internal.TypeSystem.DefType>
+; V00 this [V00,T03] ( 6, 4.50) ref -> rbx this class-hnd single-def <Internal.TypeSystem.DefType>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def <Internal.TypeSystem.Instantiation> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp1 [V05,T05] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp4 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp5 [V09,T04] ( 3, 3 ) ref -> rbx single-def "field V01._collection (fldOffset=0x0)" P-INDEP -; V10 tmp6 [V10,T00] ( 6, 16.50) int -> r15 "field V01._currentIndex (fldOffset=0x8)" P-INDEP -; V11 tmp7 [V11,T07] ( 2, 1 ) ref -> rax "field V02._genericParameters (fldOffset=0x0)" P-INDEP -; V12 tmp8 [V12,T08] ( 2, 1 ) ref -> rbx single-def "field V06._collection (fldOffset=0x0)" P-INDEP -;* V13 tmp9 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T05] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V15 cse0 [V15,T03] ( 3, 6.50) int -> r14 hoist "CSE - aggressive"
+;* V08 tmp4 [V08,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp5 [V09,T02] ( 5, 2 ) ref -> rbx single-def "field V01._collection (fldOffset=0x0)" P-INDEP +; V10 tmp6 [V10,T01] ( 6, 2.50) int -> r15 "field V01._currentIndex (fldOffset=0x8)" P-INDEP +; V11 tmp7 [V11,T06] ( 2, 1 ) ref -> rax "field V02._genericParameters (fldOffset=0x0)" P-INDEP +; V12 tmp8 [V12,T07] ( 2, 1 ) ref -> rbx single-def "field V06._collection (fldOffset=0x0)" P-INDEP +;* V13 tmp9 [V13,T08] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M13095_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]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M13095_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -67,13 +64,11 @@ G_M13095_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M13095_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M13095_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov rdi, rbx @@ -85,47 +80,45 @@ G_M13095_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rbx, rax ; gcrRegs +[rbx] mov r15d, -1
- mov r14d, dword ptr [rbx+0x08]
+ mov edi, dword ptr [rbx+0x08]
jmp SHORT G_M13095_IG08
- ;; size=30 bbWeight=0.50 PerfScore 5.62 -G_M13095_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=29 bbWeight=0.50 PerfScore 5.62 +G_M13095_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp r15d, r14d
+ cmp r15d, dword ptr [rbx+0x08]
jae SHORT G_M13095_IG11 mov edi, r15d mov rdi, gword ptr [rbx+8*rdi+0x10] ; gcrRegs +[rdi]
- lea r11, [(reloc)] ; function address
+ lea r11, [(reloc)]
cmp dword ptr [rdi], edi call [r11]<unknown method> ; gcrRegs -[rdi] test eax, eax jne SHORT G_M13095_IG09
- ;; size=29 bbWeight=2 PerfScore 22.50 -G_M13095_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=30 bbWeight=0.25 PerfScore 3.50 +G_M13095_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc r15d
- cmp r14d, r15d
+ cmp dword ptr [rbx+0x08], r15d
jg SHORT G_M13095_IG07 jmp SHORT G_M13095_IG04
- ;; size=10 bbWeight=4 PerfScore 14.00
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
G_M13095_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M13095_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M13095_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 61.62, instruction count 57, allocated bytes for code 164 (MethodHash=fa54ccd8) for method Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)
+; Total bytes of code 150, prolog size 9, PerfScore 29.00, instruction count 51, allocated bytes for code 150 (MethodHash=fa54ccd8) for method Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -133,13 +126,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
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: 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)

-14 (-7.82%) : 123705.dasm - Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)

@@ -9,34 +9,31 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 6, 4.50) ref -> rbx this class-hnd single-def <Internal.TypeSystem.TypeDesc>
+; V00 this [V00,T03] ( 6, 4.50) ref -> rbx this class-hnd single-def <Internal.TypeSystem.TypeDesc>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def <Internal.TypeSystem.Instantiation> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V07 tmp3 [V07,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V08 tmp4 [V08,T05] ( 3, 3 ) ref -> rbx single-def "field V01._collection (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T00] ( 6, 16.50) int -> r15 "field V01._currentIndex (fldOffset=0x8)" P-INDEP -; V10 tmp6 [V10,T06] ( 2, 1 ) ref -> rax "field V02._genericParameters (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T07] ( 2, 1 ) ref -> rbx single-def "field V05._collection (fldOffset=0x0)" P-INDEP -;* V12 tmp8 [V12,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._currentIndex (fldOffset=0x8)" P-INDEP
+;* V07 tmp3 [V07,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V08 tmp4 [V08,T02] ( 5, 2 ) ref -> rbx single-def "field V01._collection (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T01] ( 6, 2.50) int -> r15 "field V01._currentIndex (fldOffset=0x8)" P-INDEP +; V10 tmp6 [V10,T05] ( 2, 1 ) ref -> rax "field V02._genericParameters (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T06] ( 2, 1 ) ref -> rbx single-def "field V05._collection (fldOffset=0x0)" P-INDEP +;* V12 tmp8 [V12,T07] ( 0, 0 ) int -> zero-ref single-def "field V05._currentIndex (fldOffset=0x8)" P-INDEP
; V13 tmp9 [V13,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V14 cse0 [V14,T03] ( 3, 6.50) int -> r14 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M47838_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]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M47838_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -58,13 +55,11 @@ G_M47838_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M47838_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M47838_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov rdi, rbx @@ -80,13 +75,11 @@ G_M47838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M47838_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M47838_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov rdi, rbx @@ -103,12 +96,12 @@ G_M47838_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rbx, rax ; gcrRegs +[rbx] mov r15d, -1
- mov r14d, dword ptr [rbx+0x08]
+ mov edi, dword ptr [rbx+0x08]
jmp SHORT G_M47838_IG10
- ;; size=41 bbWeight=0.50 PerfScore 6.38 -G_M47838_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=0.50 PerfScore 6.38 +G_M47838_IG09: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp r15d, r14d
+ cmp r15d, dword ptr [rbx+0x08]
jae SHORT G_M47838_IG11 mov edi, r15d mov rdi, gword ptr [rbx+8*rdi+0x10] @@ -118,20 +111,20 @@ G_M47838_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] test eax, eax jne SHORT G_M47838_IG06
- ;; size=25 bbWeight=2 PerfScore 21.50 -G_M47838_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=26 bbWeight=0.25 PerfScore 3.38 +G_M47838_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc r15d
- cmp r14d, r15d
+ cmp dword ptr [rbx+0x08], r15d
jg SHORT G_M47838_IG09 jmp SHORT G_M47838_IG03
- ;; size=10 bbWeight=4 PerfScore 14.00
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
G_M47838_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 179, prolog size 12, PerfScore 68.38, instruction count 61, allocated bytes for code 179 (MethodHash=fb904521) for method Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)
+; Total bytes of code 165, prolog size 9, PerfScore 36.62, instruction count 55, allocated bytes for code 165 (MethodHash=fb904521) for method Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -139,13 +132,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
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: 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)

-14 (-7.65%) : 123602.dasm - Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)

@@ -9,36 +9,33 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 5 ) ref -> rbx this class-hnd single-def <Internal.TypeSystem.MethodDesc>
+; V00 this [V00,T03] ( 7, 5 ) ref -> rbx this class-hnd single-def <Internal.TypeSystem.MethodDesc>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def <Internal.TypeSystem.Instantiation> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp1 [V06,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V09 tmp4 [V09,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp5 [V10,T05] ( 3, 3 ) ref -> rbx single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V11 tmp6 [V11,T00] ( 6, 16.50) int -> r15 "field V02._currentIndex (fldOffset=0x8)" P-INDEP -; V12 tmp7 [V12,T06] ( 2, 1 ) ref -> rax "field V03._genericParameters (fldOffset=0x0)" P-INDEP -; V13 tmp8 [V13,T07] ( 2, 1 ) ref -> rbx single-def "field V07._collection (fldOffset=0x0)" P-INDEP -;* V14 tmp9 [V14,T09] ( 0, 0 ) int -> zero-ref single-def "field V07._currentIndex (fldOffset=0x8)" P-INDEP
+;* V09 tmp4 [V09,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp5 [V10,T02] ( 5, 2 ) ref -> rbx single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V11 tmp6 [V11,T01] ( 6, 2.50) int -> r15 "field V02._currentIndex (fldOffset=0x8)" P-INDEP +; V12 tmp7 [V12,T05] ( 2, 1 ) ref -> rax "field V03._genericParameters (fldOffset=0x0)" P-INDEP +; V13 tmp8 [V13,T06] ( 2, 1 ) ref -> rbx single-def "field V07._collection (fldOffset=0x0)" P-INDEP +;* V14 tmp9 [V14,T08] ( 0, 0 ) int -> zero-ref single-def "field V07._currentIndex (fldOffset=0x8)" P-INDEP
; V15 tmp10 [V15,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V16 cse0 [V16,T03] ( 3, 6.50) int -> r14 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M18718_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]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M18718_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -60,13 +57,11 @@ G_M18718_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M18718_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M18718_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov rdi, rbx @@ -93,48 +88,47 @@ G_M18718_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rbx, rax ; gcrRegs +[rbx] mov r15d, -1
- mov r14d, dword ptr [rbx+0x08]
+ mov eax, dword ptr [rbx+0x08] + ; gcrRegs -[rax]
jmp SHORT G_M18718_IG10
- ;; size=28 bbWeight=0.50 PerfScore 4.12
+ ;; size=27 bbWeight=0.50 PerfScore 4.12
G_M18718_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rbx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M18718_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M18718_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25 +G_M18718_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
- cmp r15d, r14d
+ cmp r15d, dword ptr [rbx+0x08]
jae SHORT G_M18718_IG11 mov edi, r15d mov rdi, gword ptr [rbx+8*rdi+0x10] ; gcrRegs +[rdi]
- lea r11, [(reloc)] ; function address
+ lea r11, [(reloc)]
cmp dword ptr [rdi], edi call [r11]<unknown method> ; gcrRegs -[rdi] test eax, eax jne SHORT G_M18718_IG03
- ;; size=29 bbWeight=2 PerfScore 22.50 -G_M18718_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=30 bbWeight=0.25 PerfScore 3.50 +G_M18718_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc r15d
- cmp r14d, r15d
+ cmp dword ptr [rbx+0x08], r15d
jg SHORT G_M18718_IG09 jmp SHORT G_M18718_IG07
- ;; size=10 bbWeight=4 PerfScore 14.00
+ ;; size=11 bbWeight=0.50 PerfScore 3.12
G_M18718_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 183, prolog size 12, PerfScore 69.38, instruction count 62, allocated bytes for code 183 (MethodHash=2ae9b6e1) for method Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)
+; Total bytes of code 169, prolog size 9, PerfScore 36.75, instruction count 56, allocated bytes for code 169 (MethodHash=2ae9b6e1) for method Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -142,13 +136,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
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: 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)

+47 (+83.93%) : 67235.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)

@@ -9,28 +9,43 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 19.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundNode> -; V01 loc0 [V01,T01] ( 3, 12 ) ubyte -> rax
+; V00 arg0 [V00,T00] ( 12, 23.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundNode> +; V01 loc0 [V01,T01] ( 6, 15 ) ubyte -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundParameter> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess> ;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M12753_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] test rdi, rdi je SHORT G_M12753_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M12753_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - movzx rax, byte ptr [rdi+0x12] - cmp eax, 117
+ movzx rbx, byte ptr [rdi+0x12] + cmp ebx, 117
je SHORT G_M12753_IG06
- cmp eax, 188
+ cmp ebx, 188 + jne SHORT G_M12753_IG04 + call [CORINFO_HELP_READYTORUN_CHKCAST] + ; gcrRegs -[rdi] +[rax] + ; gcr arg pop 0 + mov rdi, gword ptr [rax+0x20] + ; gcrRegs +[rdi] + test rdi, rdi + je SHORT G_M12753_IG04 + ;; size=37 bbWeight=1 PerfScore 12.00 +G_M12753_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + movzx rbx, byte ptr [rdi+0x12] + cmp ebx, 117 + je SHORT G_M12753_IG06 + cmp ebx, 188
jne SHORT G_M12753_IG04 call [CORINFO_HELP_READYTORUN_CHKCAST] ; gcrRegs -[rdi] +[rax] @@ -39,16 +54,18 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] test rdi, rdi jne SHORT G_M12753_IG03
- ;; size=31 bbWeight=4 PerfScore 43.00
+ ;; size=32 bbWeight=4 PerfScore 43.00
G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] +[rdi] call [CORINFO_HELP_READYTORUN_CHKCAST] @@ -57,11 +74,13 @@ G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008 mov rax, gword ptr [rax+0x20] ;; size=10 bbWeight=0.50 PerfScore 2.50 G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 56, prolog size 4, PerfScore 49.62, instruction count 20, allocated bytes for code 56 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 103, prolog size 8, PerfScore 63.38, instruction count 35, allocated bytes for code 103 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================ Unwind Info: @@ -69,9 +88,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
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)

+38 (+92.68%) : 69003.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:g_hasNonIdentityConversion|4660(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)

@@ -9,52 +9,75 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 14 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression> -; V01 loc0 [V01,T00] ( 4, 24 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.BoundConversion>
+; V00 arg0 [V00,T01] ( 6, 16 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression> +; V01 loc0 [V01,T00] ( 8, 27.50) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.BoundConversion>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Conversion> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "field V02._uncommonData (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 2, 8 ) ubyte -> rcx "field V02._kind (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T02] ( 4, 9 ) ubyte -> rbx "field V02._kind (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M1320_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M1320_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M1320_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50 +G_M1320_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M1320_IG06 - ;; size=11 bbWeight=8 PerfScore 34.00 -G_M1320_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - movzx rcx, byte ptr [rax+0x48] - cmp ecx, 2 - jne SHORT G_M1320_IG04
+ je SHORT G_M1320_IG09 + ;; size=11 bbWeight=1 PerfScore 4.25 +G_M1320_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + movzx rbx, byte ptr [rax+0x48] + cmp ebx, 2 + jne SHORT G_M1320_IG07 + ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M1320_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rax+0x20] ; gcrRegs +[rdi]
- jmp SHORT G_M1320_IG02
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M1320_IG05: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] + ; gcrRegs -[rdi] +[rax] + ; gcr arg pop 0 + test rax, rax + je SHORT G_M1320_IG09 + ;; size=11 bbWeight=8 PerfScore 34.00 +G_M1320_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + movzx rbx, byte ptr [rax+0x48] + cmp ebx, 2 + jne SHORT G_M1320_IG07 + mov rdi, gword ptr [rax+0x20] + ; gcrRegs +[rdi] + jmp SHORT G_M1320_IG05
;; size=15 bbWeight=4 PerfScore 29.00
-G_M1320_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1320_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi] mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M1320_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M1320_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75 -G_M1320_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M1320_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1320_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M1320_IG10: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 41, prolog size 4, PerfScore 74.75, instruction count 16, allocated bytes for code 41 (MethodHash=11a5fad7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:<ApplyConversionIfNotIdentity>g__hasNonIdentityConversion|466_0(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)
+; Total bytes of code 79, prolog size 8, PerfScore 76.88, instruction count 29, allocated bytes for code 79 (MethodHash=11a5fad7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:<ApplyConversionIfNotIdentity>g__hasNonIdentityConversion|466_0(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -62,9 +85,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
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)

+28 (+116.67%) : 193392.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> rsi -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -22,22 +22,44 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=6 bbWeight=1 PerfScore 1.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test esi, esi
- je SHORT G_M22426_IG04 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, esi mov eax, esi mov esi, edx test esi, esi
- jne SHORT G_M22426_IG03 - ;; size=12 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=16 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, esi + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=10 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, esi + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, esi + mov esi, ecx + jmp SHORT G_M22426_IG03 + ;; size=8 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 24, prolog size 6, PerfScore 112.25, instruction count 13, allocated bytes for code 24 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 146.25, instruction count 27, allocated bytes for code 52 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-18 (-10.40%) : 244443.dasm - Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectoryOrRecursiveSequence(System.String,int):int (FullOpts)

@@ -7,30 +7,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 9, 10.50) ref -> rbx class-hnd single-def <System.String> -; V01 arg1 [V01,T03] ( 8, 5.50) int -> rsi single-def -; V02 loc0 [V02,T00] ( 10, 19 ) int -> rsi -; V03 loc1 [V03,T06] ( 2, 2.50) ubyte -> r14
+; V00 arg0 [V00,T01] ( 9, 5.25) ref -> rbx class-hnd single-def <System.String> +; V01 arg1 [V01,T00] ( 9, 6 ) int -> rsi single-def +; V02 loc0 [V02,T03] ( 12, 3.75) int -> rsi +;* V03 loc1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T06] ( 0, 0 ) int -> zero-ref
;* V06 tmp2 [V06,T07] ( 0, 0 ) int -> zero-ref
-; V07 cse0 [V07,T01] ( 8, 13 ) int -> r15 "CSE - aggressive" -; V08 cse1 [V08,T04] ( 3, 6 ) int -> rax "CSE - aggressive" -; V09 cse2 [V09,T05] ( 3, 6 ) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T08] ( 3, 1.50) int -> rdi "CSE - moderate"
+; V07 cse0 [V07,T05] ( 2, 0.50) int -> rax "CSE - aggressive" +; V08 cse1 [V08,T02] ( 8, 4.25) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41026_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]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M41026_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov r15d, dword ptr [rbx+0x08] lea edi, [r15-0x01] @@ -39,33 +35,31 @@ G_M41026_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=12 bbWeight=1 PerfScore 3.75 G_M41026_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp esi, r15d
- jae G_M41026_IG10
+ jae SHORT G_M41026_IG10
mov edi, esi cmp word ptr [rbx+2*rdi+0x0C], 42 jne SHORT G_M41026_IG04 lea edi, [rsi+0x01] cmp edi, r15d jae SHORT G_M41026_IG10
+ lea edi, [rsi+0x01]
cmp word ptr [rbx+2*rdi+0x0C], 42 jne SHORT G_M41026_IG04 add esi, 2
- xor r14d, r14d
jmp SHORT G_M41026_IG07
- ;; size=43 bbWeight=0.50 PerfScore 6.88
+ ;; size=39 bbWeight=0.50 PerfScore 7.00
G_M41026_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M41026_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.12 -G_M41026_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=10 bbWeight=0.50 PerfScore 1.75 +G_M41026_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi] mov rdi, rbx ; gcrRegs +[rdi] @@ -79,40 +73,38 @@ G_M41026_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0008 { lea eax, [rsi+0x01] cmp eax, r15d jae SHORT G_M41026_IG10
+ lea eax, [rsi+0x01]
cmp word ptr [rbx+2*rax+0x0C], 42 jne SHORT G_M41026_IG08 lea eax, [rsi+0x02] cmp eax, r15d jae SHORT G_M41026_IG10
+ lea eax, [rsi+0x02]
cmp word ptr [rbx+2*rax+0x0C], 42 jne SHORT G_M41026_IG08 add esi, 3
- test r14d, r14d - jne SHORT G_M41026_IG08 - ;; size=59 bbWeight=2 PerfScore 36.50 -G_M41026_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=0.25 PerfScore 4.50 +G_M41026_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r15d, esi jg SHORT G_M41026_IG06
- ;; size=5 bbWeight=4 PerfScore 5.00
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M41026_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] lea eax, [rsi+0x01] ;; size=3 bbWeight=0.50 PerfScore 0.25 G_M41026_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M41026_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 15, PerfScore 62.00, instruction count 61, allocated bytes for code 173 (MethodHash=82df5fbd) for method Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectoryOrRecursiveSequence(System.String,int):int (FullOpts)
+; Total bytes of code 155, prolog size 12, PerfScore 23.00, instruction count 55, allocated bytes for code 155 (MethodHash=82df5fbd) for method Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectoryOrRecursiveSequence(System.String,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -120,13 +112,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
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: 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)

-21 (-9.86%) : 221009.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,34 +8,38 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rdi -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> r13 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rdi +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> r14 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rsi "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> r15 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> r15 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> r15 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=19 bbWeight=1 PerfScore 6.75
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rbx+0x14] cmp edi, 1 @@ -44,21 +48,19 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi]
- lea r15, bword ptr [rbx+0x28] - ; byrRegs +[r15] - mov rsi, r15
+ lea rsi, bword ptr [rbx+0x28]
; byrRegs +[rsi] cmp dword ptr [rdi], edi call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rdi]
- ; byrRegs -[rsi r15]
+ ; byrRegs -[rsi]
mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rbx+0x28] - ; byrRegs +[rdi] - mov r14, rdi - ; byrRegs +[r14]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; byrRegs -[rdi] - mov r13, gword ptr [rbx+0x30] - ; gcrRegs +[r13]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov r14, gword ptr [rbx+0x30] + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] @@ -96,59 +93,56 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, ; gcrRegs -[rax rsi rdi] test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[r13]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14]
mov rsi, r15
- mov rdi, r14
+ lea rdi, bword ptr [rbx+0x28]
; byrRegs +[rdi] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rdi] test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi ; gcrRegs +[rdi] mov gword ptr [rbx+0x08], rdi mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r14]
lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi r13]
+ ; gcrRegs -[rsi r14]
; byrRegs -[rdi] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 213, prolog size 21, PerfScore 76.65, instruction count 68, allocated bytes for code 213 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 44.43, instruction count 62, allocated bytes for code 192 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -156,14 +150,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-21 (-9.59%) : 221043.dasm - System.Linq.Enumerable+WhereSelectListIterator2[System.__Canon,System.Nullable1[int]]:MoveNext():ubyte:this (FullOpts)

@@ -8,35 +8,39 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 14, 12.50) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]> -; V01 loc0 [V01,T10] ( 3, 2.50) int -> rdi -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> r13 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 14, 9.50) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]> +; V01 loc0 [V01,T14] ( 3, 2.50) int -> rdi +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> r14 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rsi "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> r15 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> r15 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call" -; V13 rat4 [V13,T09] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T15] ( 2, 2 ) long -> r15 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> r15 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> r15 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call" +; V18 rat10 [V18,T13] ( 3, 3 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M54833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ push rax + lea rbp, [rsp+0x20] + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=19 bbWeight=1 PerfScore 6.75
G_M54833_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rbx+0x0C] cmp edi, 1 @@ -45,21 +49,19 @@ G_M54833_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M54833_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp edi, 2 je SHORT G_M54833_IG05
- jmp G_M54833_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M54833_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M54833_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi]
- lea r15, bword ptr [rbx+0x30] - ; byrRegs +[r15] - mov rsi, r15
+ lea rsi, bword ptr [rbx+0x30]
; byrRegs +[rsi] cmp dword ptr [rdi], edi call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rdi]
- ; byrRegs -[rsi r15]
+ ; byrRegs -[rsi]
mov dword ptr [rbx+0x0C], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M54833_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] @@ -77,19 +79,14 @@ G_M54833_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M54833_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rbx+0x30] - ; byrRegs +[rdi] - mov r14, rdi - ; byrRegs +[r14]
jmp SHORT G_M54833_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M54833_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; byrRegs -[rdi] - mov r13, gword ptr [rbx+0x38] - ; gcrRegs +[r13]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M54833_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov r14, gword ptr [rbx+0x38] + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] @@ -97,59 +94,56 @@ G_M54833_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, ; gcrRegs -[rax rsi rdi] test eax, eax jne SHORT G_M54833_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M54833_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs -[r13]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M54833_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14]
mov rsi, r15
- mov rdi, r14
+ lea rdi, bword ptr [rbx+0x30]
; byrRegs +[rdi] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rdi] test eax, eax jne SHORT G_M54833_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M54833_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M54833_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor esi, esi mov qword ptr [rbx+0x10], rsi mov dword ptr [rbx+0x0C], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M54833_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M54833_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M54833_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r13]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M54833_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x28] ; gcrRegs +[rax]
- mov rsi, r13
+ mov rsi, r14
; gcrRegs +[rsi] mov rdi, gword ptr [rax+0x08] ; gcrRegs +[rdi] call [rax+0x18]<unknown method>
- ; gcrRegs -[rax rsi rdi r13]
+ ; gcrRegs -[rax rsi rdi r14]
mov qword ptr [rbx+0x10], rax mov eax, 1 ;; size=23 bbWeight=0.50 PerfScore 4.25 G_M54833_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 219, prolog size 21, PerfScore 79.90, instruction count 70, allocated bytes for code 219 (MethodHash=afa429ce) for method System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 198, prolog size 16, PerfScore 47.68, instruction count 64, allocated bytes for code 198 (MethodHash=afa429ce) for method System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -157,14 +151,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

+27 (+77.14%) : 204895.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,43 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] jmp SHORT G_M12955_IG04 ;; size=6 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rax, gword ptr [rax+0x18]
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M12955_IG08 + ;; size=6 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M12955_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M12955_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
cmp word ptr [rax+0x34], 0
- jne SHORT G_M12955_IG06
+ jne SHORT G_M12955_IG10
cmp gword ptr [rax+0x10], 0 je SHORT G_M12955_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M12955_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.25 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rax, gword ptr [rax+0x18] + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + test rax, rax + je SHORT G_M12955_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + cmp word ptr [rax+0x34], 0 + jne SHORT G_M12955_IG10 + cmp gword ptr [rax+0x10], 0 + je SHORT G_M12955_IG07
;; size=14 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 35, prolog size 4, PerfScore 52.75, instruction count 13, allocated bytes for code 35 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 62, prolog size 4, PerfScore 59.25, instruction count 22, allocated bytes for code 62 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info:

+41 (+77.36%) : 18811.dasm - System.SpanHelpers:IndexOfAnyInRangelong:int (FullOpts)

@@ -8,18 +8,17 @@ ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rdi single-def -; V01 arg1 [V01,T05] ( 4, 6.76) long -> rsi ld-addr-op single-def -; V02 arg2 [V02,T08] ( 3, 4 ) long -> rdx ld-addr-op single-def -; V03 arg3 [V03,T04] ( 4, 7 ) int -> rcx single-def -; V04 loc0 [V04,T01] ( 6, 17.50) int -> rax -; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r8
+; V00 arg0 [V00,T06] ( 4, 7 ) byref -> rdi single-def +; V01 arg1 [V01,T05] ( 6, 7.94) long -> rsi ld-addr-op single-def +; V02 arg2 [V02,T07] ( 5, 5.26) long -> rdx ld-addr-op single-def +; V03 arg3 [V03,T04] ( 5, 8 ) int -> rcx single-def +; V04 loc0 [V04,T01] ( 7, 18.50) int -> rax +; V05 loc1 [V05,T02] ( 6, 12.50) byref -> r8
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V08 tmp2 [V08,T00] ( 3, 17.51) long -> r9 "Inlining Arg" -;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V10 tmp4 [V10,T03] ( 2, 8 ) long -> r8 "Inlining Arg" -; V11 cse0 [V11,T02] ( 3, 10 ) long -> r8 "CSE - aggressive"
+;* V07 tmp1 [V07,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V08 tmp2 [V08,T00] ( 6, 21.89) long -> r9 "Inlining Arg" +;* V09 tmp3 [V09,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V10 tmp4 [V10,T03] ( 5, 11.51) long -> r10 "Inlining Arg"
; ; Lcl frame size = 0 @@ -31,45 +30,73 @@ G_M61146_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr ; byrRegs +[rdi] xor eax, eax test ecx, ecx
- jle SHORT G_M61146_IG07 - ;; size=6 bbWeight=1 PerfScore 1.50 -G_M61146_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jle SHORT G_M61146_IG12 + mov r8, rdi + ; byrRegs +[r8] + mov r9, qword ptr [r8] + cmp rsi, r9 + jl SHORT G_M61146_IG04 + ;; size=17 bbWeight=1 PerfScore 5.00 +G_M61146_IG03: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + cmp rsi, r9 + jg SHORT G_M61146_IG05 + ;; size=5 bbWeight=0.19 PerfScore 0.24 +G_M61146_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + mov r10, qword ptr [r8] + cmp rdx, r10 + jge SHORT G_M61146_IG14 + ;; size=8 bbWeight=0.50 PerfScore 1.62 +G_M61146_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs -[r8] + mov eax, 1 + cmp ecx, 1 + jle SHORT G_M61146_IG12 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M61146_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
movsxd r8, eax lea r8, bword ptr [rdi+8*r8] ; byrRegs +[r8]
- mov r8, qword ptr [r8] - ; byrRegs -[r8] - mov r9, r8
+ mov r9, qword ptr [r8]
cmp rsi, r9
- jl SHORT G_M61146_IG05 - ;; size=18 bbWeight=4 PerfScore 17.00 -G_M61146_IG04: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jl SHORT G_M61146_IG08 + ;; size=15 bbWeight=4 PerfScore 16.00 +G_M61146_IG07: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz
cmp rsi, r9
- jg SHORT G_M61146_IG06
+ jg SHORT G_M61146_IG11
;; size=5 bbWeight=0.76 PerfScore 0.94
-G_M61146_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz - cmp rdx, r8 - jge SHORT G_M61146_IG09 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M61146_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M61146_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + mov r10, qword ptr [r8] + cmp rdx, r10 + jl SHORT G_M61146_IG11 + ;; size=8 bbWeight=2 PerfScore 6.50 +G_M61146_IG09: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdi r8] + cmp rdx, r10 + jle SHORT G_M61146_IG14 + ;; size=5 bbWeight=0.76 PerfScore 0.94 +G_M61146_IG10: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M61146_IG14 + ;; size=2 bbWeight=0.72 PerfScore 1.44 +G_M61146_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs +[rdi]
inc eax cmp eax, ecx
- jl SHORT G_M61146_IG03
+ jl SHORT G_M61146_IG06
;; size=6 bbWeight=4 PerfScore 6.00
-G_M61146_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61146_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M61146_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M61146_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M61146_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M61146_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 53, prolog size 4, PerfScore 30.82, instruction count 23, allocated bytes for code 53 (MethodHash=b5941125) for method System.SpanHelpers:IndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
+; Total bytes of code 94, prolog size 4, PerfScore 43.07, instruction count 38, allocated bytes for code 94 (MethodHash=b5941125) for method System.SpanHelpers:IndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
; ============================================================ Unwind Info:

+28 (+116.67%) : 271500.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> rsi -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,44 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=6 bbWeight=1 PerfScore 1.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test esi, esi
- je SHORT G_M22426_IG04 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, esi mov eax, esi mov esi, edx test esi, esi
- jne SHORT G_M22426_IG03 - ;; size=12 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=16 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, esi + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=10 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, esi + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, esi + mov esi, ecx + jmp SHORT G_M22426_IG03 + ;; size=8 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 24, prolog size 6, PerfScore 112.25, instruction count 13, allocated bytes for code 24 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 146.25, instruction count 27, allocated bytes for code 52 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-26 (-15.66%) : 443200.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]> -; V01 loc0 [V01 ] ( 2, 2 ) ubyte -> [rbp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]> +; V01 loc0 [V01 ] ( 2, 2 ) ubyte -> [rbp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -19,23 +19,23 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> rdi single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> rdi single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> r14 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> rbx single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> r15 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> r15 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 @@ -43,64 +43,51 @@ G_M4386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
xor eax, eax
- mov dword ptr [rbp-0x24], eax - ;; size=22 bbWeight=1 PerfScore 7.00
+ mov dword ptr [rbp-0x14], eax + ;; size=18 bbWeight=1 PerfScore 5.00
G_M4386_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rbx, gword ptr [rdi+0x08] ; gcrRegs +[rbx]
- lea r15, bword ptr [rbp-0x24]
+ lea r15, bword ptr [rbp-0x14]
; byrRegs +[r15] mov edi, 1 ; gcrRegs -[rdi] call [<unknown method>] mov rdi, 0xD1FFAB1E ; System.Random cmp qword ptr [rbx], rdi
- jne SHORT G_M4386_IG08
+ jne SHORT G_M4386_IG07
;; size=34 bbWeight=1 PerfScore 10.00 G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rax, 0xD1FFAB1E ; System.Random+Net5CompatSeedImpl cmp qword ptr [rdi], rax
- jne SHORT G_M4386_IG07 - lea rbx, bword ptr [rdi+0x08] - ; gcrRegs -[rbx] - ; byrRegs +[rbx] - xor r14d, r14d - ;; size=26 bbWeight=0.50 PerfScore 3.50 -G_M4386_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jne SHORT G_M4386_IG06 + add rdi, 8
; gcrRegs -[rdi]
- mov r13d, r14d - mov rdi, rbx
; byrRegs +[rdi] call [System.Random+CompatPrng:InternalSample():int:this]
+ ; gcrRegs -[rbx]
; byrRegs -[rdi]
- mov byte ptr [r15+r13], al - inc r14d - test r14d, r14d - jle SHORT G_M4386_IG04 - ;; size=24 bbWeight=4 PerfScore 24.00 -G_M4386_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx r15] - movzx rax, byte ptr [rbp-0x24]
+ mov byte ptr [r15], al + ;; size=32 bbWeight=0.50 PerfScore 5.25 +G_M4386_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r15] + movzx rax, byte ptr [rbp-0x14]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4386_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M4386_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 3.75 -G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M4386_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, gcvars, byref, isz
; gcrRegs +[rdi] ; byrRegs +[r15] mov rsi, r15 @@ -111,9 +98,9 @@ G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {r call [rax+0x30]<unknown method> ; gcrRegs -[rdi] ; byrRegs -[rsi r15]
- jmp SHORT G_M4386_IG05
+ jmp SHORT G_M4386_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-G_M4386_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M4386_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[rbx] ; byrRegs +[r15] mov rsi, r15 @@ -126,10 +113,10 @@ G_M4386_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, b call [rax+0x28]System.Random:NextBytes(System.Span`1[ubyte]):this ; gcrRegs -[rbx rdi] ; byrRegs -[rsi r15]
- jmp SHORT G_M4386_IG05
+ jmp SHORT G_M4386_IG04
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 166, prolog size 22, PerfScore 49.25, instruction count 50, allocated bytes for code 166 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
+; Total bytes of code 140, prolog size 18, PerfScore 24.00, instruction count 40, allocated bytes for code 140 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -137,14 +124,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-26 (-15.57%) : 437728.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]> -; V01 loc0 [V01 ] ( 2, 2 ) byte -> [rbp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]> +; V01 loc0 [V01 ] ( 2, 2 ) byte -> [rbp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[byte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> @@ -19,23 +19,23 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> rdi single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> rdi single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> r14 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> rbx single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> r15 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> r15 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 @@ -43,64 +43,51 @@ G_M24034_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
xor eax, eax
- mov dword ptr [rbp-0x24], eax - ;; size=22 bbWeight=1 PerfScore 7.00
+ mov dword ptr [rbp-0x14], eax + ;; size=18 bbWeight=1 PerfScore 5.00
G_M24034_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rbx, gword ptr [rdi+0x08] ; gcrRegs +[rbx]
- lea r15, bword ptr [rbp-0x24]
+ lea r15, bword ptr [rbp-0x14]
; byrRegs +[r15] mov edi, 1 ; gcrRegs -[rdi] call [<unknown method>] mov rdi, 0xD1FFAB1E ; System.Random cmp qword ptr [rbx], rdi
- jne SHORT G_M24034_IG08
+ jne SHORT G_M24034_IG07
;; size=34 bbWeight=1 PerfScore 10.00 G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rax, 0xD1FFAB1E ; System.Random+Net5CompatSeedImpl cmp qword ptr [rdi], rax
- jne SHORT G_M24034_IG07 - lea rbx, bword ptr [rdi+0x08] - ; gcrRegs -[rbx] - ; byrRegs +[rbx] - xor r14d, r14d - ;; size=26 bbWeight=0.50 PerfScore 3.50 -G_M24034_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jne SHORT G_M24034_IG06 + add rdi, 8
; gcrRegs -[rdi]
- mov r13d, r14d - mov rdi, rbx
; byrRegs +[rdi] call [System.Random+CompatPrng:InternalSample():int:this]
+ ; gcrRegs -[rbx]
; byrRegs -[rdi]
- mov byte ptr [r15+r13], al - inc r14d - test r14d, r14d - jle SHORT G_M24034_IG04 - ;; size=24 bbWeight=4 PerfScore 24.00 -G_M24034_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx r15] - movsx rax, byte ptr [rbp-0x24]
+ mov byte ptr [r15], al + ;; size=32 bbWeight=0.50 PerfScore 5.25 +G_M24034_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r15] + movsx rax, byte ptr [rbp-0x14]
;; size=5 bbWeight=1 PerfScore 3.00
-G_M24034_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M24034_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 3.75 -G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M24034_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, gcvars, byref, isz
; gcrRegs +[rdi] ; byrRegs +[r15] mov rsi, r15 @@ -111,9 +98,9 @@ G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 { call [rax+0x30]<unknown method> ; gcrRegs -[rdi] ; byrRegs -[rsi r15]
- jmp SHORT G_M24034_IG05
+ jmp SHORT G_M24034_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-G_M24034_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M24034_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[rbx] ; byrRegs +[r15] mov rsi, r15 @@ -126,10 +113,10 @@ G_M24034_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, call [rax+0x28]System.Random:NextBytes(System.Span`1[ubyte]):this ; gcrRegs -[rbx rdi] ; byrRegs -[rsi r15]
- jmp SHORT G_M24034_IG05
+ jmp SHORT G_M24034_IG04
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 22, PerfScore 51.25, instruction count 50, allocated bytes for code 167 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
+; Total bytes of code 141, prolog size 18, PerfScore 26.00, instruction count 40, allocated bytes for code 141 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
; ============================================================ Unwind Info: @@ -137,14 +124,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-45 (-13.72%) : 705781.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,82 +8,77 @@ ; 5 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 21, 91 ) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T00] ( 21, 17.50) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T02] ( 7, 42 ) int -> r15 single-def -; V04 loc2 [V04,T22] ( 2, 2 ) int -> r15 single-def
+; V03 loc1 [V03,T01] ( 7, 7 ) int -> r15 single-def +; V04 loc2 [V04,T17] ( 2, 2 ) int -> r15 single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 12, 89 ) int -> r14
+;* V06 loc4 [V06,T08] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-;* V08 loc6 [V08,T13] ( 0, 0 ) int -> zero-ref -; V09 loc7 [V09,T07] ( 4, 32 ) int -> r13
+;* V08 loc6 [V08,T18] ( 0, 0 ) int -> zero-ref +;* V09 loc7 [V09,T19] ( 0, 0 ) int -> zero-ref
;* V10 loc8 [V10 ] ( 0, 0 ) int -> zero-ref ;* V11 loc9 [V11 ] ( 0, 0 ) int -> zero-ref ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T03] ( 3, 48 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>> -; V14 tmp2 [V14,T12] ( 2, 32 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V13 tmp1 [V13,T02] ( 3, 6 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>> +; V14 tmp2 [V14,T14] ( 2, 4 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp4 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V17 tmp5 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18,T15] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V19 tmp7 [V19,T16] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V18 tmp6 [V18,T20] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V19 tmp7 [V19,T21] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp8 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V21 tmp9 [V21,T08] ( 4, 32 ) int -> rdi "Inline stloc first use temp" -; V22 tmp10 [V22,T04] ( 3, 48 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> -;* V23 tmp11 [V23,T17] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V24 tmp12 [V24,T05] ( 2, 18 ) int -> r13 "Inlining Arg"
+; V21 tmp9 [V21,T09] ( 4, 4 ) int -> rdi "Inline stloc first use temp" +; V22 tmp10 [V22,T03] ( 3, 6 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> +;* V23 tmp11 [V23,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V24 tmp12 [V24,T05] ( 2, 4 ) int -> r15 "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V26 tmp14 [V26,T20] ( 4, 4 ) int -> rdi single-def "Inline stloc first use temp" -; V27 tmp15 [V27,T19] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> -; V28 tmp16 [V28,T21] ( 1, 1 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V29 tmp17 [V29,T18] ( 3, 10 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V26 tmp14 [V26,T10] ( 4, 4 ) int -> rdi single-def "Inline stloc first use temp" +; V27 tmp15 [V27,T04] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> +; V28 tmp16 [V28,T16] ( 1, 1 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V29 tmp17 [V29,T06] ( 3, 3 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V30 tmp18 [V30 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP ;* V31 tmp19 [V31 ] ( 0, 0 ) int -> zero-ref single-def "field V02._length (fldOffset=0x8)" P-INDEP ;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp21 [V33 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V34 tmp22 [V34 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V36 tmp24 [V36,T10] ( 2, 32 ) ref -> rdi "arr expr" -; V37 tmp25 [V37,T11] ( 2, 32 ) ref -> rcx "arr expr" -; V38 cse0 [V38,T06] ( 4, 32 ) ref -> rcx "CSE - moderate" -; V39 cse1 [V39,T14] ( 3, 24 ) int -> rsi "CSE - moderate" -; V40 cse2 [V40,T09] ( 4, 32 ) int -> rax "CSE - moderate"
+; V36 tmp24 [V36,T12] ( 2, 4 ) ref -> rdi "arr expr" +; V37 tmp25 [V37,T13] ( 2, 4 ) ref -> rcx "arr expr" +; V38 cse0 [V38,T07] ( 4, 4 ) ref -> rcx "CSE - moderate" +; V39 cse1 [V39,T15] ( 3, 3 ) int -> rsi "CSE - moderate" +; V40 cse2 [V40,T23] ( 2, 0.50) byref -> rdi "CSE - moderate" +; V41 cse3 [V41,T11] ( 4, 4 ) int -> rax "CSE - moderate"
; ; Lcl frame size = 0 G_M37340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13
push rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75 -G_M37340_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 3.75 +G_M37340_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, dword ptr [rbx+0x4C]
- xor r14d, r14d
cmp r15d, edx
- ja G_M37340_IG10 - ;; size=16 bbWeight=1 PerfScore 3.50 -G_M37340_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ja G_M37340_IG09
sub edx, r15d mov edi, edx not edi shr edi, 31 call [<unknown method>]
- xor r13d, r13d
mov rsi, gword ptr [rbx+0x18] ; gcrRegs +[rsi] mov esi, dword ptr [rsi+0x08] ; gcrRegs -[rsi] add esi, -2
- cmp esi, r14d - jg SHORT G_M37340_IG05 - ;; size=34 bbWeight=8 PerfScore 80.00 -G_M37340_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test esi, esi + jg SHORT G_M37340_IG04 + ;; size=43 bbWeight=1 PerfScore 13.00 +G_M37340_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x18] ; gcrRegs +[rsi] mov esi, dword ptr [rsi+0x08] @@ -93,8 +88,8 @@ G_M37340_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; byrRegs +[rdi] call [System.Array:Resize[int](byref,int)] ; byrRegs -[rdi]
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M37340_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M37340_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rdi, rcx @@ -106,35 +101,29 @@ G_M37340_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov esi, dword ptr [rbx+0x58] sub edx, esi mov eax, dword ptr [rdi+0x08]
- cmp r14d, eax - jae G_M37340_IG09 - mov r8d, r14d - mov dword ptr [rdi+4*r8+0x10], edx - inc r14d
+ test eax, eax + je G_M37340_IG08 + mov dword ptr [rdi+0x10], edx
mov rdi, rcx
- cmp r14d, eax - jae G_M37340_IG09 - mov edx, r14d - mov dword ptr [rdi+4*rdx+0x10], r13d - inc r14d - cmp r14d, eax - jae G_M37340_IG09 - mov edi, r14d - ; gcrRegs -[rdi] - mov dword ptr [rcx+4*rdi+0x10], r15d - mov r13d, r15d
+ cmp eax, 1 + jbe G_M37340_IG08 + xor edx, edx + mov dword ptr [rdi+0x14], edx + cmp eax, 2 + jbe SHORT G_M37340_IG08 + mov dword ptr [rcx+0x18], r15d
test esi, esi
- je G_M37340_IG11 - ;; size=93 bbWeight=8 PerfScore 162.00 -G_M37340_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx]
+ je SHORT G_M37340_IG10 + ;; size=63 bbWeight=1 PerfScore 19.00 +G_M37340_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx rdi]
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] mov edi, dword ptr [rbx+0x58] dec edi mov dword ptr [rbx+0x58], edi cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M37340_IG09
+ jae SHORT G_M37340_IG08
mov dword ptr [rcx+4*rdi+0x10], 1 xor ecx, ecx ; gcrRegs -[rcx] @@ -147,61 +136,59 @@ G_M37340_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdi] mov dword ptr [rbx+0x4C], r15d cmp dword ptr [rbx+0x58], 0
- je SHORT G_M37340_IG12 - ;; size=57 bbWeight=8 PerfScore 192.00 -G_M37340_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M37340_IG11 + ;; size=57 bbWeight=1 PerfScore 24.00 +G_M37340_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] mov edi, dword ptr [rbx+0x58] dec edi mov dword ptr [rbx+0x58], edi cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M37340_IG09
+ jae SHORT G_M37340_IG08
xor edx, edx mov dword ptr [rcx+4*rdi+0x10], edx xor ecx, ecx ; gcrRegs -[rcx] mov rdi, gword ptr [rbx+0x28] ; gcrRegs +[rdi]
- mov edx, r13d
+ mov edx, r15d
xor esi, esi cmp dword ptr [rdi], edi call [<unknown method>] ; gcrRegs -[rbx rdi] mov eax, 1 ;; size=47 bbWeight=1 PerfScore 19.50
-G_M37340_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M37340_IG07: ; bbWeight=1, epilog, nogc, extend
pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 3.50 -G_M37340_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=1 PerfScore 2.50 +G_M37340_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M37340_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37340_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M37340_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M37340_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rdi]
- jmp G_M37340_IG06
+ jmp G_M37340_IG05
;; size=14 bbWeight=0 PerfScore 0.00
-G_M37340_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M37340_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rdi]
- jmp SHORT G_M37340_IG07
+ jmp SHORT G_M37340_IG06
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 13, PerfScore 481.75, instruction count 98, allocated bytes for code 328 (MethodHash=5e586e23) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 283, prolog size 9, PerfScore 83.69, instruction count 87, allocated bytes for code 283 (MethodHash=5e586e23) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex1785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
...

+47 (+77.05%) : 182848.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive

@@ -10,12 +10,13 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.89) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> -; V02 loc1 [V02,T02] ( 3, 0.33) ushort -> rax
+; V01 loc0 [V01,T01] ( 12, 4.39) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> +; V02 loc1 [V02,T02] ( 6, 0.63) ushort -> rdx
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V06 tmp2 [V06,T03] ( 2, 0.22) ref -> rax "field V03._node (fldOffset=0x0)" P-INDEP
+; V06 tmp2 [V06,T04] ( 4, 0.42) ref -> rcx "field V03._node (fldOffset=0x0)" P-INDEP +; V07 cse0 [V07,T03] ( 3, 0.62) ref -> rax "CSE - conservative"
; ; Lcl frame size = 0 @@ -23,40 +24,63 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M207_IG02: ; bbWeight=1.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M207_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M207_IG04 - ;; size=5 bbWeight=1.11 PerfScore 1.39 -G_M207_IG03: ; bbWeight=0.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M207_IG07 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M207_IG03: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
- cmp rdi, gword ptr [rax] - jne SHORT G_M207_IG06 - ;; size=15 bbWeight=0.22 PerfScore 0.94 -G_M207_IG04: ; bbWeight=0.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp rdi, rax + jne SHORT G_M207_IG09 + jmp SHORT G_M207_IG07 + ;; size=20 bbWeight=0.20 PerfScore 1.10 +G_M207_IG04: ; bbWeight=0.11, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx] + cmp ecx, 2 + jbe SHORT G_M207_IG07 + cmp edx, 0x2168 + je SHORT G_M207_IG07 + mov rdi, gword ptr [rdi+0x08] + ;; size=31 bbWeight=0.11 PerfScore 1.00 +G_M207_IG05: ; bbWeight=1.11, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + test rdi, rdi + je SHORT G_M207_IG07 + ;; size=5 bbWeight=1.11 PerfScore 1.39 +G_M207_IG06: ; bbWeight=0.22, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + cmp rdi, rax + jne SHORT G_M207_IG04 + ;; size=5 bbWeight=0.22 PerfScore 0.28 +G_M207_IG07: ; bbWeight=0.22, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rax, rdi ; gcrRegs +[rax] ;; size=3 bbWeight=0.22 PerfScore 0.06
-G_M207_IG05: ; bbWeight=0.22, epilog, nogc, extend
+G_M207_IG08: ; bbWeight=0.22, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.22 PerfScore 0.33
-G_M207_IG06: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rax, gword ptr [rdi+0x10] - ; gcrRegs +[rax] - movzx rax, word ptr [rax+0x0C] - ; gcrRegs -[rax] - lea ecx, [rax-0x2164]
+G_M207_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz + mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx]
cmp ecx, 2
- jbe SHORT G_M207_IG04 - cmp eax, 0x2168 - je SHORT G_M207_IG04
+ jbe SHORT G_M207_IG07 + cmp edx, 0x2168 + je SHORT G_M207_IG07
mov rdi, gword ptr [rdi+0x08]
- jmp SHORT G_M207_IG02 - ;; size=32 bbWeight=0.11 PerfScore 1.22
+ jmp SHORT G_M207_IG05 + ;; size=33 bbWeight=0.10 PerfScore 1.10
-; Total bytes of code 61, prolog size 4, PerfScore 5.19, instruction count 19, allocated bytes for code 61 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 108, prolog size 4, PerfScore 7.76, instruction count 33, allocated bytes for code 108 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================ Unwind Info:

+47 (+77.05%) : 707904.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive

@@ -9,55 +9,82 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> -; V01 loc0 [V01,T00] ( 7, 11.60) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> -; V02 loc1 [V02,T02] ( 3, 4.91) ushort -> rax
+; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> +; V01 loc0 [V01,T00] ( 12, 15.24) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> +; V02 loc1 [V02,T01] ( 6, 6.78) ushort -> rdx
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V06 tmp2 [V06,T03] ( 2, 3.28) ref -> rax "field V03._node (fldOffset=0x0)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 4.52) ref -> rcx "field V03._node (fldOffset=0x0)" P-INDEP +; V07 cse0 [V07,T04] ( 3, 3.60) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0
-G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M207_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25 -G_M207_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1.00 PerfScore 1.25 +G_M207_IG02: ; bbWeight=1.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- jmp SHORT G_M207_IG04 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M207_IG03: ; bbWeight=1.64, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov rax, gword ptr [rdi+0x10] - ; gcrRegs +[rax] - movzx rax, word ptr [rax+0x0C] - ; gcrRegs -[rax] - lea ecx, [rax-0x2164] - cmp ecx, 2 - jbe SHORT G_M207_IG06 - cmp eax, 0x2168 - je SHORT G_M207_IG06 - mov rdi, gword ptr [rdi+0x08] - ;; size=30 bbWeight=1.64 PerfScore 14.74 -G_M207_IG04: ; bbWeight=2.64, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M207_IG06 - ;; size=5 bbWeight=2.64 PerfScore 3.30 -G_M207_IG05: ; bbWeight=2.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M207_IG08 + ;; size=5 bbWeight=1.00 PerfScore 1.25 +G_M207_IG03: ; bbWeight=0.78, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
- cmp rdi, gword ptr [rax] - jne SHORT G_M207_IG03 - ;; size=15 bbWeight=2.05 PerfScore 8.70 -G_M207_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp rdi, rax + jne SHORT G_M207_IG10 + ;; size=18 bbWeight=0.78 PerfScore 2.72 +G_M207_IG04: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M207_IG08 + ;; size=2 bbWeight=0.38 PerfScore 0.76 +G_M207_IG05: ; bbWeight=1.64, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax] + mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx] + cmp ecx, 2 + jbe SHORT G_M207_IG08 + cmp edx, 0x2168 + je SHORT G_M207_IG08 + mov rdi, gword ptr [rdi+0x08] + ;; size=31 bbWeight=1.64 PerfScore 14.74 +G_M207_IG06: ; bbWeight=2.64, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + test rdi, rdi + je SHORT G_M207_IG08 + ;; size=5 bbWeight=2.64 PerfScore 3.30 +G_M207_IG07: ; bbWeight=2.05, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + cmp rdi, rax + jne SHORT G_M207_IG05 + ;; size=5 bbWeight=2.05 PerfScore 2.56 +G_M207_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rax, rdi ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M207_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M207_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M207_IG10: ; bbWeight=0.62, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz + mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx] + cmp ecx, 2 + jbe SHORT G_M207_IG08 + cmp edx, 0x2168 + je SHORT G_M207_IG08 + mov rdi, gword ptr [rdi+0x08] + jmp SHORT G_M207_IG06 + ;; size=33 bbWeight=0.62 PerfScore 6.83
-; Total bytes of code 61, prolog size 4, PerfScore 31.74, instruction count 19, allocated bytes for code 61 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 108, prolog size 4, PerfScore 35.15, instruction count 33, allocated bytes for code 108 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================ Unwind Info:

+33 (+80.49%) : 721837.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (Tier1)

@@ -8,13 +8,14 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 9 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 4.33) ref -> rdi this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> -; V01 arg1 [V01,T01] ( 6, 4.11) int -> rsi
+; V00 this [V00,T01] ( 13, 5.53) ref -> rdi this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 6.01) int -> rsi
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 0 ) int -> rsi "arg temp" -; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> rdi single-def "arg temp" -; V05 tmp3 [V05,T03] ( 2, 0.44) ref -> rdi single-def "arg temp" -; V06 cse0 [V06,T02] ( 4, 3.22) int -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T06] ( 4, 0 ) int -> rsi "arg temp" +; V04 tmp2 [V04,T05] ( 4, 0 ) ref -> rdi "arg temp" +; V05 tmp3 [V05,T04] ( 4, 0.84) ref -> rdi "arg temp" +; V06 cse0 [V06,T02] ( 4, 3.22) int -> rdx "CSE - aggressive" +; V07 cse1 [V07,T03] ( 4, 2.90) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,38 +23,63 @@ G_M39152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M39152_IG02: ; bbWeight=1.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M39152_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x10] ; gcrRegs +[rax] mov ecx, dword ptr [rax+0x20] cmp esi, ecx
- jl SHORT G_M39152_IG05 - ;; size=11 bbWeight=1.11 PerfScore 5.83 -G_M39152_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M39152_IG09 + ;; size=11 bbWeight=1 PerfScore 5.25 +G_M39152_IG03: ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp esi, ecx
- jg SHORT G_M39152_IG06
+ jg SHORT G_M39152_IG11 + ;; size=4 bbWeight=0.90 PerfScore 1.12 +G_M39152_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rdi+0x08] ; byrRegs +[rax]
- ;; size=8 bbWeight=1 PerfScore 1.75 -G_M39152_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M39152_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M39152_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39152_IG06: ; bbWeight=1.11, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
+ mov rax, gword ptr [rdi+0x10] + ; gcrRegs +[rax] + mov edx, dword ptr [rax+0x20] + cmp esi, edx + jl SHORT G_M39152_IG08 + ;; size=11 bbWeight=1.11 PerfScore 5.83 +G_M39152_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp esi, edx + jg SHORT G_M39152_IG10 + jmp SHORT G_M39152_IG04 + ;; size=6 bbWeight=1 PerfScore 3.25 +G_M39152_IG08: ; bbWeight=0.11, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rdi+0x10]
- jmp SHORT G_M39152_IG02
+ jmp SHORT G_M39152_IG06
;; size=6 bbWeight=0.11 PerfScore 0.44
-G_M39152_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M39152_IG09: ; bbWeight=0.10, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rdi+0x10] + jmp SHORT G_M39152_IG06 + ;; size=6 bbWeight=0.10 PerfScore 0.40 +G_M39152_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + sub esi, edx + dec esi + mov rdi, gword ptr [rdi+0x18] + jmp SHORT G_M39152_IG06 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M39152_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
sub esi, ecx dec esi mov rdi, gword ptr [rdi+0x18]
- jmp SHORT G_M39152_IG02
+ jmp SHORT G_M39152_IG06
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 41, prolog size 4, PerfScore 10.78, instruction count 17, allocated bytes for code 41 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (Tier1)
+; Total bytes of code 74, prolog size 4, PerfScore 19.55, instruction count 30, allocated bytes for code 74 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-37 (-11.38%) : 274855.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,69 +8,67 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 21, 93.50) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T00] ( 21, 18.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T02] ( 7, 35 ) int -> r15 single-def -; V04 loc2 [V04,T22] ( 2, 2.00) int -> r15 single-def
+; V03 loc1 [V03,T01] ( 7, 7.00) int -> r15 single-def +; V04 loc2 [V04,T17] ( 2, 2.00) int -> r15 single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 12, 89 ) int -> r14
+;* V06 loc4 [V06,T08] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-;* V08 loc6 [V08,T13] ( 0, 0 ) int -> zero-ref -; V09 loc7 [V09,T07] ( 4, 32 ) int -> r13
+;* V08 loc6 [V08,T18] ( 0, 0 ) int -> zero-ref +;* V09 loc7 [V09,T19] ( 0, 0 ) int -> zero-ref
;* V10 loc8 [V10 ] ( 0, 0 ) int -> zero-ref ;* V11 loc9 [V11 ] ( 0, 0 ) int -> zero-ref ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T03] ( 3, 48 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> -; V14 tmp2 [V14,T12] ( 2, 32 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V13 tmp1 [V13,T02] ( 3, 6.00) ref -> rax class-hnd "impAppendStmt" <<unknown class>> +; V14 tmp2 [V14,T14] ( 2, 4.00) int -> rcx "Strict ordering of exceptions for Array store"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp4 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V17 tmp5 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp8 [V20,T15] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V21 tmp9 [V21,T16] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V20 tmp8 [V20,T20] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V21 tmp9 [V21,T21] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp11 [V23,T08] ( 4, 32 ) int -> rdi "Inline stloc first use temp" -; V24 tmp12 [V24,T04] ( 3, 48 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> -;* V25 tmp13 [V25,T17] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V26 tmp14 [V26,T05] ( 2, 18 ) int -> r13 "Inlining Arg"
+; V23 tmp11 [V23,T09] ( 4, 4.00) int -> rdi "Inline stloc first use temp" +; V24 tmp12 [V24,T03] ( 3, 6.00) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> +;* V25 tmp13 [V25,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V26 tmp14 [V26,T05] ( 2, 4.00) int -> r15 "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V28 tmp16 [V28,T20] ( 4, 4 ) int -> rdi single-def "Inline stloc first use temp" -; V29 tmp17 [V29,T18] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> -; V30 tmp18 [V30,T21] ( 1, 1 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V31 tmp19 [V31,T19] ( 3, 3.00) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V28 tmp16 [V28,T10] ( 4, 4 ) int -> rdi single-def "Inline stloc first use temp" +; V29 tmp17 [V29,T04] ( 3, 6 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> +; V30 tmp18 [V30,T16] ( 1, 1 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V31 tmp19 [V31,T06] ( 3, 3.00) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp21 [V33 ] ( 0, 0 ) int -> zero-ref single-def "field V02._length (fldOffset=0x8)" P-INDEP ;* V34 tmp22 [V34 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V38 tmp26 [V38,T10] ( 2, 32 ) ref -> rax "arr expr" -; V39 tmp27 [V39,T11] ( 2, 32 ) ref -> rdi "arr expr" -; V40 cse0 [V40,T06] ( 4, 32 ) ref -> rdi "CSE - moderate" -; V41 cse1 [V41,T14] ( 3, 24 ) int -> rdx "CSE - moderate" -; V42 cse2 [V42,T09] ( 4, 32 ) int -> rsi "CSE - moderate" -; V43 cse3 [V43,T23] ( 3, 1.50) ref -> rsi "CSE - moderate"
+; V38 tmp26 [V38,T12] ( 2, 4.00) ref -> rax "arr expr" +; V39 tmp27 [V39,T13] ( 2, 4.00) ref -> rdi "arr expr" +; V40 cse0 [V40,T07] ( 4, 4.00) ref -> rdi "CSE - moderate" +; V41 cse1 [V41,T15] ( 3, 3.00) int -> rdx "CSE - moderate" +; V42 cse2 [V42,T11] ( 4, 4.00) int -> rsi "CSE - moderate" +; V43 cse3 [V43,T24] ( 2, 0.50) byref -> rdi "CSE - moderate" +; V44 cse4 [V44,T23] ( 3, 1.50) ref -> rsi "CSE - moderate"
; ; Lcl frame size = 0 G_M40445_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13
push rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1.00 PerfScore 5.75
+ ;; size=12 bbWeight=1.00 PerfScore 3.75
G_M40445_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov r15d, dword ptr [rbx+0x4C]
- xor r14d, r14d
cmp r15d, edx ja G_M40445_IG14
- ;; size=16 bbWeight=1.00 PerfScore 3.50
+ ;; size=13 bbWeight=1.00 PerfScore 3.25
G_M40445_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz sub edx, r15d jns SHORT G_M40445_IG05 @@ -83,17 +81,16 @@ G_M40445_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M40445_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - xor r13d, r13d
+G_M40445_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x18] ; gcrRegs +[rsi] mov esi, dword ptr [rsi+0x08] ; gcrRegs -[rsi] add esi, -2
- cmp esi, r14d
+ test esi, esi
jg SHORT G_M40445_IG07
- ;; size=18 bbWeight=8 PerfScore 46.00 -G_M40445_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1.00 PerfScore 5.50 +G_M40445_IG06: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x18] ; gcrRegs +[rsi] mov esi, dword ptr [rsi+0x08] @@ -103,8 +100,8 @@ G_M40445_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; byrRegs +[rdi] call [System.Array:Resize[int](byref,int)] ; byrRegs -[rdi]
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M40445_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M40445_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov rax, rdi @@ -116,34 +113,28 @@ G_M40445_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov edx, dword ptr [rbx+0x58] sub ecx, edx mov esi, dword ptr [rax+0x08]
- cmp r14d, esi - jae G_M40445_IG13 - mov r8d, r14d - mov dword ptr [rax+4*r8+0x10], ecx - inc r14d
+ test esi, esi + je G_M40445_IG13 + mov dword ptr [rax+0x10], ecx
mov rax, rdi
- cmp r14d, esi - jae G_M40445_IG13 - mov ecx, r14d - mov dword ptr [rax+4*rcx+0x10], r13d - inc r14d - cmp r14d, esi - jae G_M40445_IG13 - mov eax, r14d - ; gcrRegs -[rax] - mov dword ptr [rdi+4*rax+0x10], r15d - mov r13d, r15d
+ cmp esi, 1 + jbe G_M40445_IG13 + xor ecx, ecx + mov dword ptr [rax+0x14], ecx + cmp esi, 2 + jbe G_M40445_IG13 + mov dword ptr [rdi+0x18], r15d
test edx, edx jne SHORT G_M40445_IG09
- ;; size=89 bbWeight=8 PerfScore 162.00 -G_M40445_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi]
+ ;; size=67 bbWeight=1.00 PerfScore 19.00 +G_M40445_IG08: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdi]
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rdi]
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M40445_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M40445_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x20] ; gcrRegs +[rcx] mov edi, dword ptr [rbx+0x58] @@ -164,7 +155,7 @@ G_M40445_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x4C], r15d cmp dword ptr [rbx+0x58], 0 jne SHORT G_M40445_IG11
- ;; size=57 bbWeight=8 PerfScore 192.00
+ ;; size=57 bbWeight=1.00 PerfScore 24.00
G_M40445_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx ; gcrRegs +[rdi] @@ -185,7 +176,7 @@ G_M40445_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] mov rdi, gword ptr [rbx+0x28] ; gcrRegs +[rdi]
- mov edx, r13d
+ mov edx, r15d
xor esi, esi cmp dword ptr [rdi], edi call [<unknown method>] @@ -194,12 +185,10 @@ G_M40445_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=47 bbWeight=1 PerfScore 19.50 G_M40445_IG12: ; bbWeight=1, epilog, nogc, extend pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M40445_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 @@ -208,7 +197,7 @@ G_M40445_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 325, prolog size 13, PerfScore 458.88, instruction count 96, allocated bytes for code 325 (MethodHash=9f2a6202) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex2383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 288, prolog size 9, PerfScore 84.88, instruction count 85, allocated bytes for code 288 (MethodHash=9f2a6202) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex2383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -216,13 +205,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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)

-29 (-11.15%) : 225365.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)

@@ -9,15 +9,15 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 5, 4 ) ref -> r15 this class-hnd single-def <System.Security.Cryptography.RC2>
-; V01 arg1 [V01,T01] ( 7, 9 ) int -> rbx single-def
+; V01 arg1 [V01,T02] ( 7, 5.50) int -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V05 tmp3 [V05,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V06 tmp4 [V06,T02] ( 2, 9 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> -; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V06 tmp4 [V06,T01] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> +; V07 tmp5 [V07 ] ( 2, 0.50) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 16.50) int -> r13 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V11 tmp9 [V11,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V12 tmp10 [V12,T10] ( 2, 0 ) ref -> rsi single-def "argument with side effect" @@ -27,18 +27,16 @@ G_M43684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15, rdi ; gcrRegs +[r15] mov ebx, esi
- ;; size=22 bbWeight=1 PerfScore 6.25
+ ;; size=18 bbWeight=1 PerfScore 4.25
G_M43684_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz cmp ebx, dword ptr [r15+0x38]
- jg SHORT G_M43684_IG09
+ jg SHORT G_M43684_IG07
test ebx, ebx jne SHORT G_M43684_IG05 ;; size=10 bbWeight=1 PerfScore 5.25 @@ -49,49 +47,33 @@ G_M43684_IG03: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, G_M43684_IG04: ; bbWeight=0.50, epilog, nogc, extend add rsp, 16 pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.38
G_M43684_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz cmp ebx, 40
- jl SHORT G_M43684_IG10
+ jl SHORT G_M43684_IG08
mov rsi, 0xD1FFAB1E ; const ptr
- mov r14, gword ptr [rsi] - ; gcrRegs +[r14] - xor r13d, r13d - ;; size=21 bbWeight=0.50 PerfScore 1.88 -G_M43684_IG06: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz - mov esi, r13d - mov rsi, gword ptr [r14+8*rsi+0x10]
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- lea rdx, [rbp-0x28]
+ mov rsi, gword ptr [rsi+0x10] + lea rdx, [rbp-0x18]
mov edi, ebx call [System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte] ; gcrRegs -[rsi] test eax, eax
- jne SHORT G_M43684_IG07 - inc r13d - test r13d, r13d - jg SHORT G_M43684_IG11 - jmp SHORT G_M43684_IG06 - ;; size=34 bbWeight=4 PerfScore 43.00 -G_M43684_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14]
+ je SHORT G_M43684_IG09
mov dword ptr [r15+0x3C], ebx
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M43684_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=42 bbWeight=0.50 PerfScore 5.75 +G_M43684_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16 pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88 -G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.38 +G_M43684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -110,7 +92,7 @@ G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_THROW ; gcrRegs -[rbx rdi] ;; size=44 bbWeight=0 PerfScore 0.00
-G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -128,8 +110,8 @@ G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_THROW ; gcrRegs -[rbx rdi] ;; size=44 bbWeight=0 PerfScore 0.00
-G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov byte ptr [rbp-0x28], 0
+G_M43684_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov byte ptr [rbp-0x18], 0
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -149,7 +131,7 @@ G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 17, PerfScore 61.25, instruction count 75, allocated bytes for code 260 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
+; Total bytes of code 231, prolog size 13, PerfScore 18.62, instruction count 63, allocated bytes for code 231 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -157,14 +139,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-31 (-10.88%) : 214504.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)

@@ -13,65 +13,49 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V05 tmp3 [V05,T02] ( 2, 10 ) int -> r14 "Inlining Arg" -; V06 tmp4 [V06,T01] ( 2, 10 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> -; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V05 tmp3 [V05,T02] ( 2, 4 ) int -> rdi "Inlining Arg" +; V06 tmp4 [V06,T01] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> +; V07 tmp5 [V07 ] ( 2, 1 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> r12 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T08] ( 2, 0 ) ref -> r15 single-def "argument with side effect" ; V11 tmp9 [V11,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V12 tmp10 [V12,T10] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V13 tmp11 [V13,T11] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M39649_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14 - push r13 - push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ sub rsp, 16 + lea rbp, [rsp+0x20]
mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 4.25
G_M39649_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test rbx, rbx
- je SHORT G_M39649_IG06 - mov r14d, dword ptr [rbx+0x08] - shl r14d, 3
+ je SHORT G_M39649_IG04 + mov edi, dword ptr [rbx+0x08] + shl edi, 3
mov rsi, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rsi] - ; gcrRegs +[r13] - xor r12d, r12d - ;; size=29 bbWeight=1 PerfScore 6.25 -G_M39649_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - mov esi, r12d - mov rsi, gword ptr [r13+8*rsi+0x10]
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- lea rdx, [rbp-0x30] - mov edi, r14d
+ mov rsi, gword ptr [rsi+0x10] + lea rdx, [rbp-0x18]
call [System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte] ; gcrRegs -[rsi] test eax, eax
- jne SHORT G_M39649_IG04 - inc r12d - test r12d, r12d - jg SHORT G_M39649_IG07 - jmp SHORT G_M39649_IG03 - ;; size=35 bbWeight=4 PerfScore 43.00 -G_M39649_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r13]
+ je SHORT G_M39649_IG05
mov rdi, rbx ; gcrRegs +[rdi] call [System.Security.Cryptography.TripleDES:IsWeakKey(ubyte[]):ubyte] ; gcrRegs -[rdi] test eax, eax
- jne SHORT G_M39649_IG08
+ jne SHORT G_M39649_IG06
mov rdi, r15 ; gcrRegs +[rdi] mov rsi, rbx @@ -79,18 +63,15 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [System.Security.Cryptography.SymmetricAlgorithm:set_Key(ubyte[]):this] ; gcrRegs -[rbx rsi rdi r15] nop
- ;; size=26 bbWeight=1 PerfScore 8.25 -G_M39649_IG05: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=68 bbWeight=1 PerfScore 21.00 +G_M39649_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop r12 - pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=1 PerfScore 2.75 +G_M39649_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 0x41EB mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -101,8 +82,8 @@ G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rax rdi] int3 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov byte ptr [rbp-0x30], 0
+G_M39649_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov byte ptr [rbp-0x18], 0
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -120,7 +101,7 @@ G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_THROW ; gcrRegs -[rbx rdi] ;; size=48 bbWeight=0 PerfScore 0.00
-G_M39649_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -151,7 +132,7 @@ G_M39649_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 285, prolog size 16, PerfScore 69.75, instruction count 77, allocated bytes for code 285 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
+; Total bytes of code 254, prolog size 13, PerfScore 28.00, instruction count 64, allocated bytes for code 254 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -159,15 +140,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 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: 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)

+41 (+77.36%) : 144788.dasm - System.SpanHelpers:IndexOfAnyInRangeSystem.TimeSpan:int (FullOpts)

@@ -8,28 +8,27 @@ ; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 6 ) byref -> rdi single-def
+; V00 arg0 [V00,T04] ( 4, 7 ) byref -> rdi single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V03 arg3 [V03,T02] ( 4, 7 ) int -> rcx single-def -; V04 loc0 [V04,T00] ( 6, 17.50) int -> rax -; V05 loc1 [V05,T05] ( 2, 8 ) byref -> r8
+; V03 arg3 [V03,T03] ( 5, 8 ) int -> rcx single-def +; V04 loc0 [V04,T00] ( 7, 18.50) int -> rax +; V05 loc1 [V05,T01] ( 6, 12.50) byref -> r8
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan>
-;* V09 tmp3 [V09,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V09 tmp3 [V09,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V11 tmp5 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan> ;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan>
-;* V13 tmp7 [V13,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp7 [V13,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp9 [V15,T06] ( 3, 5.76) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T07] ( 2, 3 ) long -> rdx single-def "field V02._ticks (fldOffset=0x0)" P-INDEP -; V17 tmp11 [V17,T03] ( 3, 8.76) long -> r9 "field V07._ticks (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T05] ( 5, 6.94) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T06] ( 4, 4.26) long -> rdx single-def "field V02._ticks (fldOffset=0x0)" P-INDEP +; V17 tmp11 [V17,T02] ( 6, 10.94) long -> r9 "field V07._ticks (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "field V08._ticks (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T08] ( 2, 4 ) long -> r8 "field V11._ticks (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T07] ( 5, 5.76) long -> r10 "field V11._ticks (fldOffset=0x0)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T01] ( 3, 10 ) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,45 +40,73 @@ G_M35202_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr ; byrRegs +[rdi] xor eax, eax test ecx, ecx
- jle SHORT G_M35202_IG07 - ;; size=6 bbWeight=1 PerfScore 1.50 -G_M35202_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jle SHORT G_M35202_IG12 + mov r8, rdi + ; byrRegs +[r8] + mov r9, qword ptr [r8] + cmp rsi, r9 + jl SHORT G_M35202_IG04 + ;; size=17 bbWeight=1 PerfScore 5.00 +G_M35202_IG03: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + cmp rsi, r9 + jg SHORT G_M35202_IG05 + ;; size=5 bbWeight=0.19 PerfScore 0.24 +G_M35202_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + mov r10, qword ptr [r8] + cmp rdx, r10 + jge SHORT G_M35202_IG14 + ;; size=8 bbWeight=0.50 PerfScore 1.62 +G_M35202_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs -[r8] + mov eax, 1 + cmp ecx, 1 + jle SHORT G_M35202_IG12 + ;; size=10 bbWeight=1 PerfScore 1.50 +G_M35202_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
movsxd r8, eax lea r8, bword ptr [rdi+8*r8] ; byrRegs +[r8]
- mov r8, qword ptr [r8] - ; byrRegs -[r8] - mov r9, r8
+ mov r9, qword ptr [r8]
cmp rsi, r9
- jl SHORT G_M35202_IG05 - ;; size=18 bbWeight=4 PerfScore 17.00 -G_M35202_IG04: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jl SHORT G_M35202_IG08 + ;; size=15 bbWeight=4 PerfScore 16.00 +G_M35202_IG07: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz
cmp rsi, r9
- jg SHORT G_M35202_IG06
+ jg SHORT G_M35202_IG11
;; size=5 bbWeight=0.76 PerfScore 0.94
-G_M35202_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz - cmp rdx, r8 - jge SHORT G_M35202_IG09 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M35202_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M35202_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0180 {rdi r8}, byref, isz + mov r10, qword ptr [r8] + cmp rdx, r10 + jl SHORT G_M35202_IG11 + ;; size=8 bbWeight=2 PerfScore 6.50 +G_M35202_IG09: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdi r8] + cmp rdx, r10 + jle SHORT G_M35202_IG14 + ;; size=5 bbWeight=0.76 PerfScore 0.94 +G_M35202_IG10: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35202_IG14 + ;; size=2 bbWeight=0.72 PerfScore 1.44 +G_M35202_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs +[rdi]
inc eax cmp eax, ecx
- jl SHORT G_M35202_IG03
+ jl SHORT G_M35202_IG06
;; size=6 bbWeight=4 PerfScore 6.00
-G_M35202_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35202_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35202_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M35202_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M35202_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35202_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 53, prolog size 4, PerfScore 30.82, instruction count 23, allocated bytes for code 53 (MethodHash=d886767d) for method System.SpanHelpers:IndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
+; Total bytes of code 94, prolog size 4, PerfScore 43.07, instruction count 38, allocated bytes for code 94 (MethodHash=d886767d) for method System.SpanHelpers:IndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
; ============================================================ Unwind Info:

+49 (+80.33%) : 48611.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive

@@ -9,12 +9,13 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T00] ( 7, 20 ) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> -; V02 loc1 [V02,T01] ( 3, 6 ) ushort -> rax
+; V01 loc0 [V01,T00] ( 12, 22.25) ref -> rdi class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]> +; V02 loc1 [V02,T01] ( 6, 6.75) ushort -> rdx
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V06 tmp2 [V06,T03] ( 2, 4 ) ref -> rax "field V03._node (fldOffset=0x0)" P-INDEP
+; V06 tmp2 [V06,T04] ( 4, 4.50) ref -> rcx "field V03._node (fldOffset=0x0)" P-INDEP +; V07 cse0 [V07,T03] ( 3, 5 ) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,37 +27,68 @@ G_M207_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs +[rdi] jmp SHORT G_M207_IG04 ;; size=2 bbWeight=1 PerfScore 2.00
-G_M207_IG03: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov rax, gword ptr [rdi+0x10]
+G_M207_IG03: ; bbWeight=0.25, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rax]
- movzx rax, word ptr [rax+0x0C] - ; gcrRegs -[rax] - lea ecx, [rax-0x2164]
+ mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx]
cmp ecx, 2
- jbe SHORT G_M207_IG06 - cmp eax, 0x2168 - je SHORT G_M207_IG06
+ jbe SHORT G_M207_IG10 + cmp edx, 0x2168 + je SHORT G_M207_IG10
mov rdi, gword ptr [rdi+0x08]
- ;; size=30 bbWeight=2 PerfScore 18.00 -G_M207_IG04: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M207_IG08 + ;; size=33 bbWeight=0.25 PerfScore 2.75 +G_M207_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
test rdi, rdi
- je SHORT G_M207_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M207_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M207_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M207_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr
- cmp rdi, gword ptr [rax]
+ mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp rdi, rax
jne SHORT G_M207_IG03
- ;; size=15 bbWeight=4 PerfScore 17.00 -G_M207_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 1.75 +G_M207_IG06: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M207_IG10 + ;; size=2 bbWeight=0.06 PerfScore 0.12 +G_M207_IG07: ; bbWeight=2, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax] + mov rcx, gword ptr [rdi+0x10] + ; gcrRegs +[rcx] + movzx rdx, word ptr [rcx+0x0C] + lea ecx, [rdx-0x2164] + ; gcrRegs -[rcx] + cmp ecx, 2 + jbe SHORT G_M207_IG10 + cmp edx, 0x2168 + je SHORT G_M207_IG10 + mov rdi, gword ptr [rdi+0x08] + ;; size=31 bbWeight=2 PerfScore 18.00 +G_M207_IG08: ; bbWeight=8, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + test rdi, rdi + je SHORT G_M207_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M207_IG09: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz + cmp rdi, rax + jne SHORT G_M207_IG07 + ;; size=5 bbWeight=4 PerfScore 5.00 +G_M207_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rax, rdi ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M207_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M207_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 61, prolog size 4, PerfScore 50.00, instruction count 19, allocated bytes for code 61 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
+; Total bytes of code 110, prolog size 4, PerfScore 43.88, instruction count 34, allocated bytes for code 110 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
; ============================================================ Unwind Info:

+28 (+116.67%) : 191533.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> rsi -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,44 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=6 bbWeight=1 PerfScore 1.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test esi, esi
- je SHORT G_M22426_IG04 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, esi mov eax, esi mov esi, edx test esi, esi
- jne SHORT G_M22426_IG03 - ;; size=12 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=16 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, esi + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=10 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, esi + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, esi + mov esi, ecx + jmp SHORT G_M22426_IG03 + ;; size=8 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov esi, eax + jmp SHORT G_M22426_IG04 + ;; size=4 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 24, prolog size 6, PerfScore 112.25, instruction count 13, allocated bytes for code 24 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 146.25, instruction count 27, allocated bytes for code 52 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

realworld.run.linux.x64.checked.mch

-34 (-31.19%) : 1182.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)

@@ -8,18 +8,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) byref -> rdi single-def -; V01 arg1 [V01,T05] ( 4, 4 ) byref -> rsi single-def -; V02 arg2 [V02,T06] ( 4, 4 ) byref -> rdx single-def -;* V03 loc0 [V03,T10] ( 0, 0 ) int -> zero-ref -; V04 loc1 [V04,T07] ( 2, 5 ) byref -> rdx single-def -; V05 loc2 [V05,T08] ( 2, 5 ) byref -> rsi single-def -; V06 loc3 [V06,T00] ( 5, 17 ) int -> rax -; V07 loc4 [V07,T01] ( 4, 16 ) byref -> r8 -; V08 loc5 [V08,T03] ( 3, 12 ) byref -> r9
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> rdi single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rsi single-def +; V02 arg2 [V02,T02] ( 4, 4 ) byref -> rdx single-def +;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref +; V04 loc1 [V04,T05] ( 2, 2 ) byref -> rdx single-def +; V05 loc2 [V05,T06] ( 2, 2 ) byref -> rsi single-def +;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref +; V07 loc4 [V07,T03] ( 4, 4 ) byref -> rdi +; V08 loc5 [V08,T04] ( 3, 3 ) byref -> rdx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T09] ( 2, 5 ) byref -> rdi hoist "CSE - aggressive" -; V11 cse1 [V11,T02] ( 4, 16 ) long -> rcx "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> rdi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,39 +35,23 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C4 {rdx rsi r vmovdqu ymmword ptr [rdx], ymm0 vmovdqu ymmword ptr [rdx+0x18], ymm0 add rsi, 4
- ;; size=22 bbWeight=1 PerfScore 5.83 -G_M31235_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C4 {rdx rsi rdi}, byref
cmp byte ptr [rdi], dil add rdi, 28
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M31235_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00C4 {rdx rsi rdi}, byref, isz - movsxd rcx, eax - lea r8, [rcx+4*rcx] - lea r8, bword ptr [rdi+4*r8] - ; byrRegs +[r8] - mov r9, rcx - shl r9, 4 - add r9, rdx - ; byrRegs +[r9] - mov r10d, dword ptr [r8+0x10] - mov dword ptr [rsi+4*rcx], r10d - vmovsd xmm0, qword ptr [r8] - vinsertps xmm0, xmm0, dword ptr [r8+0x08], 40 - vmovsd qword ptr [r9], xmm0 - vextractps dword ptr [r9+0x08], xmm0, 2 - vmovss xmm0, dword ptr [r8+0x0C] - vmovss dword ptr [r9+0x0C], xmm0 - inc eax - test eax, eax - jle SHORT G_M31235_IG04 - ;; size=71 bbWeight=4 PerfScore 103.00 -G_M31235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[rdx rsi rdi r8-r9]
+ mov eax, dword ptr [rdi+0x10] + mov dword ptr [rsi], eax + vmovsd xmm0, qword ptr [rdi] + vinsertps xmm0, xmm0, dword ptr [rdi+0x08], 40 + vmovsd qword ptr [rdx], xmm0 + vextractps dword ptr [rdx+0x08], xmm0, 2 + vmovss xmm0, dword ptr [rdi+0x0C] + vmovss dword ptr [rdx+0x0C], xmm0 + ;; size=66 bbWeight=1 PerfScore 31.08 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 109, prolog size 7, PerfScore 115.83, instruction count 30, allocated bytes for code 109 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 75, prolog size 7, PerfScore 34.83, instruction count 21, allocated bytes for code 75 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info:

-19 (-10.80%) : 22886.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
+; V00 this [V00,T04] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 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]]>
-; V02 loc1 [V02 ] ( 2, 4 ) struct (64) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V02 loc1 [V02 ] ( 2, 0.50) struct (64) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> ;# 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" @@ -18,42 +18,39 @@ ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V11 tmp7 [V11,T04] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
+;* V10 tmp6 [V10,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V11 tmp7 [V11,T03] ( 3, 0.75) ubyte -> rax "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V15 tmp11 [V15,T02] ( 3, 11 ) ref -> r15 "field V01._builder (fldOffset=0x0)" P-INDEP -; V16 tmp12 [V16,T00] ( 5, 27 ) int -> r14 "field V01._index (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T01] ( 3, 2.25) ref -> r15 "field V01._builder (fldOffset=0x0)" P-INDEP +; V16 tmp12 [V16,T00] ( 5, 4.25) int -> r14 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)" ;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> r13 "CSE - aggressive" -; V20 rat0 [V20,T07] ( 2, 4 ) long -> rdi "Spilling to split statement for tree" -;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V19 cse1 [V19,T12] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V20 rat0 [V20,T06] ( 2, 4 ) long -> rdi "Spilling to split statement for tree" +;* V21 rat1 [V21,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
; V22 rat2 [V22,T05] ( 2, 4 ) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup" -;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V23 rat3 [V23,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V24 rat4 [V24,T10] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V25 rat5 [V25,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
- sub rsp, 80 - lea rbp, [rsp+0x70] - xor eax, eax - mov qword ptr [rbp-0x68], rax
+ sub rsp, 72 + lea rbp, [rsp+0x60]
vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqa xmmword ptr [rbp-0x40], xmm8 - mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0x28], rdi
+ vmovdqu ymmword ptr [rbp-0x40], ymm8 + mov qword ptr [rbp-0x20], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=49 bbWeight=1 PerfScore 13.58
+ ;; size=37 bbWeight=1 PerfScore 10.33
G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] @@ -63,66 +60,63 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov r15, rax ; gcrRegs +[r15] mov r14d, edx
- mov r13, qword ptr [rbx] - mov rdi, r13
+ mov rdi, qword ptr [rbx]
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x30] test rdi, rdi jne SHORT G_M864_IG04 jmp SHORT G_M864_IG04
- ;; size=42 bbWeight=1 PerfScore 20.00 -G_M864_IG03: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=39 bbWeight=1 PerfScore 19.75 +G_M864_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rdi, gword ptr [r15+0x08] ; gcrRegs +[rdi]
- lea rsi, [rbp-0x68]
+ lea rsi, [rbp-0x60]
mov edx, r14d cmp dword ptr [rdi], edi call [System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this] ; gcrRegs -[rdi]
- movzx rax, byte ptr [rbp-0x4C]
+ movzx rax, byte ptr [rbp-0x44]
lea ecx, [rax-0x01] cmp ecx, 1 jbe SHORT G_M864_IG07 add eax, -22 cmp eax, 1 jbe SHORT G_M864_IG07
- ;; size=39 bbWeight=2 PerfScore 26.00 -G_M864_IG04: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=39 bbWeight=0.25 PerfScore 3.25 +G_M864_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
inc r14d mov rdi, gword ptr [r15+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x10] jl SHORT G_M864_IG03
- ;; size=13 bbWeight=8 PerfScore 50.00 -G_M864_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=1 PerfScore 6.25 +G_M864_IG05: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r15] xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ ;; size=2 bbWeight=0.06 PerfScore 0.02
G_M864_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 80
+ add rsp, 72
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M864_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 80
+ add rsp, 72
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 176, prolog size 46, PerfScore 113.58, instruction count 60, allocated bytes for code 176 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+; Total bytes of code 157, prolog size 34, PerfScore 42.97, instruction count 53, allocated bytes for code 157 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -130,14 +124,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 + 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)

-16 (-8.00%) : 32049.dasm - System.Linq.Expressions.CachedReflectionInfo:getMethodBaseGetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)

@@ -11,11 +11,11 @@ ; V00 OutArgs [V00 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V01 tmp1 [V01,T02] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill" <System.Reflection.MethodInfo> ; V02 tmp2 [V02,T03] ( 4, 3.50) ref -> rax
-; V03 tmp3 [V03,T01] ( 4, 11 ) ref -> rax class-hnd exact single-def "dup spill" <System.Type[]>
+; V03 tmp3 [V03,T01] ( 4, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Type[]>
;* V04 tmp4 [V04,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V06 tmp6 [V06,T04] ( 3, 3 ) ref -> r15 class-hnd single-def "dup spill" <System.Reflection.MethodInfo>
-; V07 tmp7 [V07,T00] ( 5, 16.50) int -> rdi "Inline stloc first use temp"
+;* V07 tmp7 [V07,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; V09 cse0 [V09,T05] ( 3, 2.50) long -> rbx "CSE - aggressive" ; @@ -28,14 +28,14 @@ G_M10374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 16 lea rbp, [rsp+0x20] ;; size=13 bbWeight=1 PerfScore 3.75
-G_M10374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rbx] ; gcrRegs +[rax] test rax, rax
- jne G_M10374_IG06 - ;; size=22 bbWeight=1 PerfScore 3.50 -G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M10374_IG04 + ;; size=18 bbWeight=1 PerfScore 3.50 +G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; System.Type[] mov esi, 1 @@ -45,22 +45,11 @@ G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov gword ptr [rax+0x10], rdi
- xor edi, edi - ; gcrRegs -[rdi] - ;; size=36 bbWeight=0.50 PerfScore 1.50 -G_M10374_IG04: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov esi, edi - cmp gword ptr [rax+8*rsi+0x10], 0 - je SHORT G_M10374_IG07 - inc edi - cmp edi, 1 - jl SHORT G_M10374_IG04 - ;; size=17 bbWeight=4 PerfScore 23.00 -G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ cmp gword ptr [rax+0x10], 0 + je SHORT G_M10374_IG05
mov gword ptr [rsp], rax ; gcr arg write xor rdi, rdi
- ; gcrRegs +[rdi]
mov gword ptr [rsp+0x08], rdi ; gcr arg write mov rdi, 0xD1FFAB1E @@ -84,8 +73,8 @@ G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, ; gcrRegs -[rax rsi] mov rax, r15 ; gcrRegs +[rax]
- ;; size=73 bbWeight=0.50 PerfScore 4.38 -G_M10374_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=114 bbWeight=0.50 PerfScore 7.75 +G_M10374_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r15] add rsp, 16 pop rbx @@ -93,7 +82,7 @@ G_M10374_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr pop rbp ret ;; size=9 bbWeight=1 PerfScore 2.75
-G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10374_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov edi, 0x1E00 mov rsi, 0xD1FFAB1E @@ -108,7 +97,7 @@ G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 13, PerfScore 38.88, instruction count 47, allocated bytes for code 200 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 184, prolog size 13, PerfScore 17.75, instruction count 42, allocated bytes for code 184 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info:

+42 (+87.50%) : 8461.dasm - FSharp.Compiler.TypedTreeOps:stripExpr(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)

@@ -8,48 +8,76 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 21 ) ref -> rax class-hnd <FSharp.Compiler.TypedTree+Expr>
+; V00 arg0 [V00,T00] ( 13, 23.75) ref -> rax class-hnd <FSharp.Compiler.TypedTree+Expr>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 18 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T02] ( 3, 12 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 6, 20.25) long -> rdi "fgMakeTemp is creating a new local variable" +; V05 tmp2 [V05,T02] ( 6, 14.50) ref -> rax class-hnd "spilling QMark2" <<unknown class>> +; V06 cse0 [V06,T03] ( 3, 5 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M7715_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M7715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
+ push rbx + push rax + lea rbp, [rsp+0x10]
mov rax, rdi ; gcrRegs +[rax]
- ;; size=7 bbWeight=8 PerfScore 12.00 -G_M7715_IG02: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M7715_IG02: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rax+0x08], 15
- jne SHORT G_M7715_IG06 - ;; size=6 bbWeight=8 PerfScore 32.00 -G_M7715_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; <unknown class>
+ jne SHORT G_M7715_IG10 + ;; size=6 bbWeight=1 PerfScore 4.00 +G_M7715_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rbx, 0xD1FFAB1E ; <unknown class> + mov rdi, rbx
cmp qword ptr [rax], rdi je SHORT G_M7715_IG05
- ;; size=15 bbWeight=4 PerfScore 17.00 -G_M7715_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=0.50 PerfScore 2.25 +G_M7715_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rsi, rax + ; gcrRegs +[rsi] + call CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[rsi] + ; gcr arg pop 0 + ;; size=8 bbWeight=0.12 PerfScore 0.16 +G_M7715_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rax+0x10] + ; gcrRegs +[rdi] + mov rax, gword ptr [rdi+0x08] + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M7715_IG06: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + cmp dword ptr [rax+0x08], 15 + jne SHORT G_M7715_IG10 + ;; size=6 bbWeight=8 PerfScore 32.00 +G_M7715_IG07: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rdi, rbx + cmp qword ptr [rax], rdi + je SHORT G_M7715_IG09 + ;; size=8 bbWeight=4 PerfScore 17.00 +G_M7715_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 1.25
-G_M7715_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M7715_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rax+0x10] mov rax, gword ptr [rax+0x08]
- jmp SHORT G_M7715_IG02
+ jmp SHORT G_M7715_IG06
;; size=10 bbWeight=4 PerfScore 24.00
-G_M7715_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7715_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 48, prolog size 7, PerfScore 87.75, instruction count 16, allocated bytes for code 48 (MethodHash=8dade1dc) for method FSharp.Compiler.TypedTreeOps:stripExpr(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
+; Total bytes of code 90, prolog size 11, PerfScore 90.66, instruction count 31, allocated bytes for code 90 (MethodHash=8dade1dc) for method FSharp.Compiler.TypedTreeOps:stripExpr(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
; ============================================================ Unwind Info: @@ -57,9 +85,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
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)

+43 (+87.76%) : 30111.dasm - System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)

@@ -8,35 +8,64 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) ref -> rdi this class-hnd <System.Management.Automation.FunctionInfo>
+; V00 this [V00,T04] ( 7, 17 ) ref -> rdi this class-hnd <System.Management.Automation.FunctionInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 17 ) ref -> rsi single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T04] ( 3, 17 ) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 4, 25 ) ref -> rdi class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
+; V02 tmp1 [V02,T02] ( 6, 19.12) ref -> rsi "CASTCLASS eval op1" +; V03 tmp2 [V03,T03] ( 6, 19.12) long -> rax "fgMakeTemp is creating a new local variable" +; V04 tmp3 [V04,T00] ( 8, 29.12) ref -> rdi class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
; V05 cse0 [V05,T01] ( 3, 20 ) ref -> rsi "CSE - aggressive"
+; V06 cse1 [V06,T06] ( 3, 2.50) ref -> rsi "CSE - aggressive" +; V07 cse2 [V07,T05] ( 3, 5 ) long -> rbx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M40934_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50 +G_M40934_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x20] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M40934_IG06 - ;; size=9 bbWeight=8 PerfScore 26.00 -G_M40934_IG03: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M40934_IG09 + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M40934_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rdi, rsi ; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E ; System.Management.Automation.FunctionInfo
+ mov rbx, 0xD1FFAB1E ; System.Management.Automation.FunctionInfo + mov rax, rbx
cmp qword ptr [rdi], rax je SHORT G_M40934_IG05
- ;; size=18 bbWeight=4 PerfScore 18.00 -G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 2.38 +G_M40934_IG04: ; bbWeight=0.06, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + mov rdi, rax + call CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov rdi, rax + ; gcrRegs +[rdi] + ;; size=11 bbWeight=0.06 PerfScore 0.09 +G_M40934_IG05: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, gword ptr [rdi+0x20] + ; gcrRegs +[rsi] + test rsi, rsi + je SHORT G_M40934_IG09 + ;; size=9 bbWeight=8 PerfScore 26.00 +G_M40934_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + mov rdi, rsi + ; gcrRegs +[rdi] + mov rax, rbx + cmp qword ptr [rdi], rax + je SHORT G_M40934_IG08 + ;; size=11 bbWeight=4 PerfScore 18.00 +G_M40934_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, rax call CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -45,19 +74,21 @@ G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, mov rdi, rax ; gcrRegs +[rdi] ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M40934_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M40934_IG08: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M40934_IG02
+ jmp SHORT G_M40934_IG05
;; size=2 bbWeight=4 PerfScore 8.00
-G_M40934_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M40934_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rdi+0x64] ;; size=3 bbWeight=1 PerfScore 2.00
-G_M40934_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M40934_IG10: ; bbWeight=1, epilog, nogc, extend + add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 49, prolog size 4, PerfScore 57.50, instruction count 16, allocated bytes for code 49 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 66.22, instruction count 31, allocated bytes for code 92 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
; ============================================================ Unwind Info: @@ -65,9 +96,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
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)

+44 (+93.62%) : 8460.dasm - FSharp.Compiler.TypedTreeOps:stripDebugPoints(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)

@@ -8,49 +8,77 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 14 ) ref -> rdi class-hnd <FSharp.Compiler.TypedTree+Expr> -; V01 loc0 [V01,T00] ( 6, 23 ) ref -> rax class-hnd <FSharp.Compiler.TypedTree+Expr>
+; V00 arg0 [V00,T02] ( 6, 16 ) ref -> rdi class-hnd <FSharp.Compiler.TypedTree+Expr> +; V01 loc0 [V01,T00] ( 11, 25.75) ref -> rax class-hnd <FSharp.Compiler.TypedTree+Expr>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 18 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T03] ( 3, 12 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 6, 20.25) long -> rdi "fgMakeTemp is creating a new local variable" +; V05 tmp2 [V05,T03] ( 6, 14.50) ref -> rax class-hnd "spilling QMark2" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 5 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M63826_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M63826_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp - ;; size=4 bbWeight=8 PerfScore 10.00 -G_M63826_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50 +G_M63826_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] call [FSharp.Compiler.TypedTreeOps:stripExpr(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr] ; gcrRegs -[rdi] +[rax] cmp dword ptr [rax+0x08], 16
- jne SHORT G_M63826_IG06 - ;; size=12 bbWeight=8 PerfScore 56.00 -G_M63826_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; <unknown class>
+ jne SHORT G_M63826_IG10 + ;; size=12 bbWeight=1 PerfScore 7.00 +G_M63826_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rbx, 0xD1FFAB1E ; <unknown class> + mov rdi, rbx
cmp qword ptr [rax], rdi je SHORT G_M63826_IG05
- ;; size=15 bbWeight=4 PerfScore 17.00 -G_M63826_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=0.50 PerfScore 2.25 +G_M63826_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rsi, rax + ; gcrRegs +[rsi] + call CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[rsi] + ;; size=8 bbWeight=0.12 PerfScore 0.16 +G_M63826_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rax+0x18] + ; gcrRegs +[rdi] + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M63826_IG06: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + call [FSharp.Compiler.TypedTreeOps:stripExpr(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr] + ; gcrRegs -[rdi] +[rax] + cmp dword ptr [rax+0x08], 16 + jne SHORT G_M63826_IG10 + ;; size=12 bbWeight=8 PerfScore 56.00 +G_M63826_IG07: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rdi, rbx + cmp qword ptr [rax], rdi + je SHORT G_M63826_IG09 + ;; size=8 bbWeight=4 PerfScore 17.00 +G_M63826_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi] ;; size=8 bbWeight=1 PerfScore 1.25
-G_M63826_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M63826_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rax+0x18] ; gcrRegs +[rdi]
- jmp SHORT G_M63826_IG02
+ jmp SHORT G_M63826_IG06
;; size=6 bbWeight=4 PerfScore 16.00
-G_M63826_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63826_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 47, prolog size 4, PerfScore 101.75, instruction count 15, allocated bytes for code 47 (MethodHash=9b8306ad) for method FSharp.Compiler.TypedTreeOps:stripDebugPoints(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
+; Total bytes of code 91, prolog size 8, PerfScore 107.41, instruction count 30, allocated bytes for code 91 (MethodHash=9b8306ad) for method FSharp.Compiler.TypedTreeOps:stripDebugPoints(FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
; ============================================================ Unwind Info: @@ -58,9 +86,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
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)

smoke_tests.nativeaot.linux.x64.checked.mch

-2 (-2.06%) : 8455.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -8,21 +8,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rdi this class-hnd exact single-def <Internal.TypeSystem.InstantiatedType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> rbx single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> r15 single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> r14 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> r15 single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> r14 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> r15 single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> r15 single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> rdi "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> r13 hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> rdi "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -43,10 +43,10 @@ G_M56611_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr mov r13d, dword ptr [r15+0x08] jmp SHORT G_M56611_IG04 ;; size=16 bbWeight=1 PerfScore 6.25
-G_M56611_IG03: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M56611_IG03: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] cmp r14d, r13d
- jae SHORT G_M56611_IG10
+ jae SHORT G_M56611_IG09
mov edi, r14d mov rdi, gword ptr [r15+8*rdi+0x10] ; gcrRegs +[rdi] @@ -55,32 +55,18 @@ G_M56611_IG03: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr call [rax+0x40]<unknown method> ; gcrRegs -[rdi] test eax, eax
- jne SHORT G_M56611_IG06 - ;; size=25 bbWeight=2 PerfScore 20.00 -G_M56611_IG04: ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M56611_IG07 + ;; size=25 bbWeight=0.25 PerfScore 2.50 +G_M56611_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
inc r14d cmp r13d, r14d jg SHORT G_M56611_IG03
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M56611_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M56611_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- jmp SHORT G_M56611_IG08 - ;; size=2 bbWeight=4 PerfScore 8.00 -G_M56611_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M56611_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.50 PerfScore 1.75 -G_M56611_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56611_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M56611_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -88,12 +74,23 @@ G_M56611_IG09: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M56611_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M56611_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M56611_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M56611_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 13, PerfScore 55.75, instruction count 40, allocated bytes for code 97 (MethodHash=a2bd22dc) for method Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 95, prolog size 13, PerfScore 19.75, instruction count 39, allocated bytes for code 95 (MethodHash=a2bd22dc) for method Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Cfi Info:

-2 (-1.80%) : 16473.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -7,12 +7,13 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> rdi this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> rdi this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> rsi -; V03 loc1 [V03,T02] ( 4, 8 ) int -> rsi
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> rsi +; V03 loc1 [V03,T02] ( 4, 1 ) int -> rsi
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,38 +29,37 @@ G_M27287_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr cmp eax, dword ptr [rsi+0x34] jne SHORT G_M27287_IG10 ;; size=11 bbWeight=1 PerfScore 8.00
-G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M27287_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rsi] mov eax, dword ptr [rdi+0x14] mov rsi, gword ptr [rdi] ; gcrRegs +[rsi]
- cmp eax, dword ptr [rsi+0x28] - jb SHORT G_M27287_IG06 - ;; size=11 bbWeight=8 PerfScore 64.00 -G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov esi, dword ptr [rsi+0x28]
; gcrRegs -[rsi]
- mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x28] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rdi+0x14], eax
+ cmp eax, esi + jb SHORT G_M27287_IG06 + ;; size=13 bbWeight=1 PerfScore 7.25 +G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref + inc esi + mov dword ptr [rdi+0x14], esi
xor rax, rax ; gcrRegs +[rax] mov gword ptr [rdi+0x08], rax
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.25
G_M27287_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax] ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+G_M27287_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; byrRegs +[rdi]
- mov rax, gword ptr [rdi]
+ mov rsi, gword ptr [rdi] + ; gcrRegs +[rsi] + mov rax, gword ptr [rsi+0x10]
; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x10]
mov esi, dword ptr [rdi+0x14]
+ ; gcrRegs -[rsi]
lea ecx, [rsi+0x01] mov dword ptr [rdi+0x14], ecx cmp esi, dword ptr [rax+0x08] @@ -68,8 +68,9 @@ G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { lea rsi, bword ptr [rax+rsi+0x10] ; byrRegs +[rsi] cmp dword ptr [rsi+0x0C], -1
- jl SHORT G_M27287_IG03 - ;; size=36 bbWeight=2 PerfScore 34.00
+ jge SHORT G_M27287_IG07 + jmp SHORT G_M27287_IG03 + ;; size=38 bbWeight=0.25 PerfScore 4.75
G_M27287_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref ; gcrRegs -[rax] mov rsi, gword ptr [rsi] @@ -95,7 +96,7 @@ G_M27287_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 4, PerfScore 113.88, instruction count 38, allocated bytes for code 111 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 109, prolog size 4, PerfScore 25.88, instruction count 38, allocated bytes for code 109 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Cfi Info:

-2 (-1.80%) : 4702.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)

@@ -7,16 +7,17 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 14, 28.50) byref -> rdi this single-def -; V01 loc0 [V01,T03] ( 4, 5 ) byref -> rcx -; V02 loc1 [V02,T02] ( 4, 8 ) int -> rcx
+; V00 this [V00,T00] ( 13, 8.75) byref -> rdi this single-def +; V01 loc0 [V01,T03] ( 4, 1.50) byref -> rcx +; V02 loc1 [V02,T02] ( 4, 1 ) int -> rcx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 12 ) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 1.50) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
-; V06 tmp3 [V06,T04] ( 2, 2 ) int -> rax "Inlining Arg" -; V07 tmp4 [V07,T05] ( 2, 2 ) int -> rcx "Inlining Arg" -; V08 tmp5 [V08,T06] ( 2, 1 ) int -> rax "field V05.key (fldOffset=0x0)" P-INDEP -; V09 tmp6 [V09,T07] ( 2, 1 ) int -> rcx "field V05.value (fldOffset=0x4)" P-INDEP
+; V06 tmp3 [V06,T05] ( 2, 2 ) int -> rax "Inlining Arg" +; V07 tmp4 [V07,T06] ( 2, 2 ) int -> rcx "Inlining Arg" +; V08 tmp5 [V08,T07] ( 2, 1 ) int -> rax "field V05.key (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T08] ( 2, 1 ) int -> rcx "field V05.value (fldOffset=0x4)" P-INDEP +; V10 cse0 [V10,T04] ( 3, 2.50) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,36 +33,35 @@ G_M20310_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr cmp eax, dword ptr [rcx+0x44] jne SHORT G_M20310_IG10 ;; size=11 bbWeight=1 PerfScore 8.00
-G_M20310_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M20310_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rcx] mov eax, dword ptr [rdi+0x0C] mov rcx, gword ptr [rdi] ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x38] - jb SHORT G_M20310_IG06 - ;; size=11 bbWeight=8 PerfScore 64.00 -G_M20310_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov ecx, dword ptr [rcx+0x38]
; gcrRegs -[rcx]
- mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x38] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rdi+0x0C], eax
+ cmp eax, ecx + jb SHORT G_M20310_IG06 + ;; size=13 bbWeight=1 PerfScore 7.25 +G_M20310_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref + inc ecx + mov dword ptr [rdi+0x0C], ecx
xor eax, eax mov qword ptr [rdi+0x14], rax
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.25
G_M20310_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M20310_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+G_M20310_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; byrRegs +[rdi]
- mov rax, gword ptr [rdi]
+ mov rcx, gword ptr [rdi] + ; gcrRegs +[rcx] + mov rax, gword ptr [rcx+0x10]
; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x10]
mov ecx, dword ptr [rdi+0x0C]
+ ; gcrRegs -[rcx]
lea edx, [rcx+0x01] mov dword ptr [rdi+0x0C], edx cmp ecx, dword ptr [rax+0x08] @@ -70,8 +70,9 @@ G_M20310_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { lea rcx, bword ptr [rax+rcx+0x10] ; byrRegs +[rcx] cmp dword ptr [rcx+0x04], -1
- jl SHORT G_M20310_IG03 - ;; size=36 bbWeight=2 PerfScore 34.00
+ jge SHORT G_M20310_IG07 + jmp SHORT G_M20310_IG03 + ;; size=38 bbWeight=0.25 PerfScore 4.75
G_M20310_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0082 {rcx rdi}, byref ; gcrRegs -[rax] mov eax, dword ptr [rcx+0x08] @@ -96,7 +97,7 @@ G_M20310_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 4, PerfScore 115.12, instruction count 39, allocated bytes for code 111 (MethodHash=5c1ab0a9) for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 109, prolog size 4, PerfScore 27.12, instruction count 39, allocated bytes for code 109 (MethodHash=5c1ab0a9) for method System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Cfi Info:

+21 (+77.78%) : 26759.dasm - System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 12 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
+; V00 this [V00,T01] ( 6, 14 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt return temp"
-; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rax single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 8, 46 ) ref -> rax "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Hashtable> ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Hashtable+SyncHashtable> ; @@ -20,27 +20,41 @@ G_M30653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M30653_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M30653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x40] ; gcrRegs +[rax] lea rdi, [(reloc)] ; gcrRegs -[rdi] cmp qword ptr [rax], rdi
- je SHORT G_M30653_IG04 - ;; size=16 bbWeight=8 PerfScore 52.00 -G_M30653_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M30653_IG05
mov rdi, rax ; gcrRegs +[rdi]
- jmp SHORT G_M30653_IG02 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M30653_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=19 bbWeight=1 PerfScore 6.75 +G_M30653_IG03: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, gword ptr [rdi+0x40] + ; gcrRegs +[rax] + lea rdi, [(reloc)]
; gcrRegs -[rdi]
+ cmp qword ptr [rax], rdi + je SHORT G_M30653_IG05 + ;; size=16 bbWeight=8 PerfScore 52.00 +G_M30653_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rdi, rax + ; gcrRegs +[rdi] + jmp SHORT G_M30653_IG03 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M30653_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + cmp byte ptr [rax], al + ;; size=2 bbWeight=1 PerfScore 3.00 +G_M30653_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 4, PerfScore 59.25, instruction count 10, allocated bytes for code 27 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 69.00, instruction count 16, allocated bytes for code 48 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
; ============================================================ Cfi Info:

+21 (+77.78%) : 2136.dasm - System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 12 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
+; V00 this [V00,T01] ( 6, 14 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt return temp"
-; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rax single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 8, 46 ) ref -> rax "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Hashtable> ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Hashtable+SyncHashtable> ; @@ -20,27 +20,41 @@ G_M30653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M30653_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M30653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x40] ; gcrRegs +[rax] lea rdi, [(reloc)] ; gcrRegs -[rdi] cmp qword ptr [rax], rdi
- je SHORT G_M30653_IG04 - ;; size=16 bbWeight=8 PerfScore 52.00 -G_M30653_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M30653_IG05
mov rdi, rax ; gcrRegs +[rdi]
- jmp SHORT G_M30653_IG02 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M30653_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=19 bbWeight=1 PerfScore 6.75 +G_M30653_IG03: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, gword ptr [rdi+0x40] + ; gcrRegs +[rax] + lea rdi, [(reloc)]
; gcrRegs -[rdi]
+ cmp qword ptr [rax], rdi + je SHORT G_M30653_IG05 + ;; size=16 bbWeight=8 PerfScore 52.00 +G_M30653_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rdi, rax + ; gcrRegs +[rdi] + jmp SHORT G_M30653_IG03 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M30653_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + cmp byte ptr [rax], al + ;; size=2 bbWeight=1 PerfScore 3.00 +G_M30653_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 4, PerfScore 59.25, instruction count 10, allocated bytes for code 27 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 69.00, instruction count 16, allocated bytes for code 48 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
; ============================================================ Cfi Info:

+21 (+77.78%) : 22936.dasm - System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 12 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
+; V00 this [V00,T01] ( 6, 14 ) ref -> rdi this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt return temp"
-; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rax single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 8, 46 ) ref -> rax "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Hashtable> ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Hashtable+SyncHashtable> ; @@ -20,27 +20,41 @@ G_M30653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25
-G_M30653_IG02: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M30653_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x40] ; gcrRegs +[rax] lea rdi, [(reloc)] ; gcrRegs -[rdi] cmp qword ptr [rax], rdi
- je SHORT G_M30653_IG04 - ;; size=16 bbWeight=8 PerfScore 52.00 -G_M30653_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M30653_IG05
mov rdi, rax ; gcrRegs +[rdi]
- jmp SHORT G_M30653_IG02 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M30653_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=19 bbWeight=1 PerfScore 6.75 +G_M30653_IG03: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, gword ptr [rdi+0x40] + ; gcrRegs +[rax] + lea rdi, [(reloc)]
; gcrRegs -[rdi]
+ cmp qword ptr [rax], rdi + je SHORT G_M30653_IG05 + ;; size=16 bbWeight=8 PerfScore 52.00 +G_M30653_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rdi, rax + ; gcrRegs +[rdi] + jmp SHORT G_M30653_IG03 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M30653_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + cmp byte ptr [rax], al + ;; size=2 bbWeight=1 PerfScore 3.00 +G_M30653_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 27, prolog size 4, PerfScore 59.25, instruction count 10, allocated bytes for code 27 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
+; Total bytes of code 48, prolog size 4, PerfScore 69.00, instruction count 16, allocated bytes for code 48 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 10,204 36 10,163 5 -841 +2,069,583
benchmarks.run_pgo.linux.x64.checked.mch 39,764 52 39,623 89 -1,702 +9,686,586
benchmarks.run_tiered.linux.x64.checked.mch 3,818 11 3,804 3 -306 +901,166
coreclr_tests.run.linux.x64.checked.mch 37,459 1,648 35,740 71 -36,786 +8,207,471
libraries.crossgen2.linux.x64.checked.mch 21,891 34 21,833 24 -395 +4,092,477
libraries.pmi.linux.x64.checked.mch 25,379 101 25,222 56 -1,221 +6,572,936
libraries_tests.run.linux.x64.Release.mch 78,630 861 77,671 98 -28,018 +42,009,252
librariestestsnotieredcompilation.run.linux.x64.Release.mch 25,570 158 25,387 25 -8,149 +9,486,571
realworld.run.linux.x64.checked.mch 5,057 21 5,029 7 -398 +1,869,438
smoke_tests.nativeaot.linux.x64.checked.mch 3,012 12 2,997 3 -23 +595,667
250,784 2,934 247,469 381 -77,839 +85,491,147

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 42,507 3,142 39,365 324 (0.76%) 350 (0.82%)
benchmarks.run_pgo.linux.x64.checked.mch 158,112 60,171 97,941 156 (0.10%) 265 (0.17%)
benchmarks.run_tiered.linux.x64.checked.mch 56,406 42,280 14,126 84 (0.15%) 94 (0.17%)
coreclr_tests.run.linux.x64.checked.mch 596,092 354,685 241,407 459 (0.08%) 679 (0.11%)
libraries.crossgen2.linux.x64.checked.mch 234,003 15 233,988 0 (0.00%) 29 (0.01%)
libraries.pmi.linux.x64.checked.mch 294,121 6 294,115 2,052 (0.69%) 2,113 (0.71%)
libraries_tests.run.linux.x64.Release.mch 759,643 495,575 264,068 1,402 (0.18%) 2,009 (0.26%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 303,154 21,873 281,281 2,099 (0.69%) 2,194 (0.72%)
realworld.run.linux.x64.checked.mch 32,713 9 32,704 341 (1.03%) 356 (1.08%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,379 10 27,369 5 (0.02%) 43 (0.16%)
2,504,130 977,766 1,526,364 6,922 (0.28%) 8,132 (0.32%)

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: 16134263 (overridden on cmd)
Total bytes of diff: 18203005 (overridden on cmd)
Total bytes of delta: 2068742 (12.82 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24044 : 4620.dasm (67.69 % of base)
       14460 : 28903.dasm (110.09 % of base)
       12583 : 34438.dasm (42.17 % of base)
       12583 : 16600.dasm (42.17 % of base)
        9367 : 5015.dasm (94.78 % of base)
        8060 : 34404.dasm (82.81 % of base)
        7747 : 4805.dasm (42.16 % of base)
        7728 : 34374.dasm (41.91 % of base)
        6928 : 21350.dasm (57.28 % of base)
        6790 : 14054.dasm (73.18 % of base)
        6790 : 3588.dasm (73.18 % of base)
        6723 : 26134.dasm (74.89 % of base)
        6529 : 27973.dasm (86.11 % of base)
        6443 : 30793.dasm (79.58 % of base)
        6433 : 28855.dasm (83.85 % of base)
        6416 : 41604.dasm (85.88 % of base)
        5815 : 29159.dasm (101.91 % of base)
        5662 : 25155.dasm (67.16 % of base)
        5549 : 34801.dasm (86.74 % of base)
        5198 : 34381.dasm (61.65 % of base)

Top file improvements (bytes):
        -167 : 10567.dasm (-2.00 % of base)
        -167 : 16807.dasm (-2.00 % of base)
         -77 : 9216.dasm (-9.24 % of base)
         -77 : 618.dasm (-9.24 % of base)
         -54 : 13585.dasm (-5.83 % of base)
         -54 : 7114.dasm (-5.83 % of base)
         -36 : 42542.dasm (-0.80 % of base)
         -22 : 33943.dasm (-2.80 % of base)
         -22 : 42279.dasm (-1.61 % of base)
         -21 : 33800.dasm (-2.42 % of base)
         -21 : 14511.dasm (-9.86 % of base)
         -21 : 22031.dasm (-9.86 % of base)
         -12 : 34762.dasm (-1.05 % of base)
         -12 : 4639.dasm (-0.83 % of base)
         -12 : 21343.dasm (-1.80 % of base)
         -11 : 3064.dasm (-3.24 % of base)
         -11 : 34080.dasm (-4.89 % of base)
          -4 : 28538.dasm (-0.78 % of base)
          -3 : 1101.dasm (-1.27 % of base)
          -3 : 2145.dasm (-1.29 % of base)

86 total files with Code Size differences (27 improved, 59 regressed), 5 unchanged.

Top method regressions (bytes):
       24044 (67.69 % of base) : 4620.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       14460 (110.09 % of base) : 28903.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12583 (42.17 % of base) : 34438.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       12583 (42.17 % of base) : 16600.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        9367 (94.78 % of base) : 5015.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        8060 (82.81 % of base) : 34404.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        7747 (42.16 % of base) : 4805.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7728 (41.91 % of base) : 34374.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6928 (57.28 % of base) : 21350.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6790 (73.18 % of base) : 14054.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6790 (73.18 % of base) : 3588.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6723 (74.89 % of base) : 26134.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6529 (86.11 % of base) : 27973.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6443 (79.58 % of base) : 30793.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        6433 (83.85 % of base) : 28855.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        6416 (85.88 % of base) : 41604.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5815 (101.91 % of base) : 29159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5662 (67.16 % of base) : 25155.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
        5549 (86.74 % of base) : 34801.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5198 (61.65 % of base) : 34381.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)

Top method improvements (bytes):
        -167 (-2.00 % of base) : 10567.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -167 (-2.00 % of base) : 16807.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -77 (-9.24 % of base) : 9216.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -77 (-9.24 % of base) : 618.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -54 (-5.83 % of base) : 13585.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -54 (-5.83 % of base) : 7114.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -36 (-0.80 % of base) : 42542.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (FullOpts)
         -22 (-2.80 % of base) : 33943.dasm - BenchmarksGame.FannkuchRedux_9:Bench(int,ubyte):int (FullOpts)
         -22 (-1.61 % of base) : 42279.dasm - BenchmarksGame.ReverseComplement_6:Grouper() (FullOpts)
         -21 (-2.42 % of base) : 33800.dasm - BenchmarksGame.FannkuchRedux_5:Bench(int,ubyte):int (FullOpts)
         -21 (-9.86 % of base) : 14511.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -21 (-9.86 % of base) : 22031.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-0.83 % of base) : 4639.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
         -12 (-1.05 % of base) : 34762.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
         -12 (-1.80 % of base) : 21343.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -11 (-3.24 % of base) : 3064.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -11 (-4.89 % of base) : 34080.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
          -4 (-0.78 % of base) : 28538.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
          -3 (-4.76 % of base) : 26885.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
          -3 (-1.27 % of base) : 1101.dasm - System.Reflection.CustomAttribute:IsDefined(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):ubyte (FullOpts)

Top method regressions (percentages):
         323 (154.55 % of base) : 27391.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
         152 (118.75 % of base) : 24207.dasm - AssignRect:CopyToAssign(int[,],int[,]) (FullOpts)
          28 (116.67 % of base) : 3282.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
         229 (115.66 % of base) : 7151.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         229 (115.66 % of base) : 13630.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         182 (113.75 % of base) : 24321.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
        1930 (112.01 % of base) : 34046.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
        1605 (110.31 % of base) : 24210.dasm - AssignRect:first_assignments(int[,],short[,]):int (FullOpts)
       14460 (110.09 % of base) : 28903.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        2066 (109.66 % of base) : 40067.dasm - Benchstone.MDBenchI.MDMulMatrix:Inner(int[,],int[,],int[,]) (FullOpts)
         828 (109.23 % of base) : 40526.dasm - System.Tests.Perf_Array:ArrayRetrieve3D():int:this (FullOpts)
          99 (106.45 % of base) : 8880.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (FullOpts)
          99 (106.45 % of base) : 282.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (FullOpts)
        4305 (106.43 % of base) : 25710.dasm - Jil.Deserialize.Methods:_ReadEncodedStringWithCharArrayThunkReader(byref,byref):System.String (FullOpts)
         142 (105.97 % of base) : 27390.dasm - Benchstone.MDBenchI.MDArray2:Initialize(int[,,]) (FullOpts)
        1436 (105.12 % of base) : 28164.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
         370 (104.82 % of base) : 5706.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
         370 (104.82 % of base) : 12109.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
         442 (104.49 % of base) : 10465.dasm - System.Text.RegularExpressions.RegexParser:ScanBlank():this (FullOpts)
         442 (104.49 % of base) : 4959.dasm - System.Text.RegularExpressions.RegexParser:ScanBlank():this (FullOpts)

Top method improvements (percentages):
         -21 (-9.86 % of base) : 14511.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -21 (-9.86 % of base) : 22031.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -77 (-9.24 % of base) : 9216.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -77 (-9.24 % of base) : 618.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -54 (-5.83 % of base) : 13585.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -54 (-5.83 % of base) : 7114.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -11 (-4.89 % of base) : 34080.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
          -3 (-4.76 % of base) : 26885.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
         -11 (-3.24 % of base) : 3064.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -22 (-2.80 % of base) : 33943.dasm - BenchmarksGame.FannkuchRedux_9:Bench(int,ubyte):int (FullOpts)
         -21 (-2.42 % of base) : 33800.dasm - BenchmarksGame.FannkuchRedux_5:Bench(int,ubyte):int (FullOpts)
        -167 (-2.00 % of base) : 10567.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -167 (-2.00 % of base) : 16807.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          -2 (-1.90 % of base) : 21674.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.90 % of base) : 13981.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.80 % of base) : 21343.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
          -2 (-1.79 % of base) : 13933.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 8709.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 9854.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 2074.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (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: 69995881 (overridden on cmd)
Total bytes of diff: 79680765 (overridden on cmd)
Total bytes of delta: 9684884 (13.84 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24044 : 20391.dasm (67.69 % of base)
       12583 : 27837.dasm (42.17 % of base)
        8637 : 125761.dasm (78.24 % of base)
        8433 : 125745.dasm (78.24 % of base)
        8258 : 115885.dasm (112.03 % of base)
        8073 : 125760.dasm (82.18 % of base)
        7747 : 21087.dasm (42.16 % of base)
        7728 : 124205.dasm (41.91 % of base)
        7218 : 130872.dasm (100.64 % of base)
        6928 : 49809.dasm (57.28 % of base)
        6723 : 72806.dasm (74.89 % of base)
        6647 : 96312.dasm (73.04 % of base)
        6599 : 96327.dasm (72.26 % of base)
        6482 : 36523.dasm (88.41 % of base)
        6471 : 135323.dasm (88.16 % of base)
        6467 : 139971.dasm (87.69 % of base)
        6451 : 96326.dasm (78.75 % of base)
        6440 : 42593.dasm (87.54 % of base)
        6323 : 155639.dasm (94.16 % of base)
        6060 : 104229.dasm (89.09 % of base)

Top file improvements (bytes):
        -176 : 142726.dasm (-9.64 % of base)
        -176 : 142769.dasm (-9.64 % of base)
        -141 : 80858.dasm (-9.13 % of base)
        -138 : 137844.dasm (-7.54 % of base)
        -138 : 143943.dasm (-7.54 % of base)
         -85 : 86284.dasm (-11.42 % of base)
         -83 : 121996.dasm (-11.13 % of base)
         -79 : 61435.dasm (-11.21 % of base)
         -78 : 77357.dasm (-10.58 % of base)
         -75 : 17786.dasm (-10.64 % of base)
         -70 : 135364.dasm (-0.94 % of base)
         -62 : 126223.dasm (-7.66 % of base)
         -61 : 102582.dasm (-9.84 % of base)
         -52 : 42687.dasm (-0.70 % of base)
         -51 : 140010.dasm (-0.69 % of base)
         -27 : 93609.dasm (-6.67 % of base)
         -24 : 104039.dasm (-5.58 % of base)
         -21 : 93607.dasm (-2.17 % of base)
         -18 : 59223.dasm (-4.21 % of base)
         -15 : 140151.dasm (-0.22 % of base)

86 total files with Code Size differences (24 improved, 62 regressed), 20 unchanged.

Top method regressions (bytes):
       24044 (67.69 % of base) : 20391.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       12583 (42.17 % of base) : 27837.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        8637 (78.24 % of base) : 125761.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8433 (78.24 % of base) : 125745.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8258 (112.03 % of base) : 115885.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8073 (82.18 % of base) : 125760.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        7747 (42.16 % of base) : 21087.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7728 (41.91 % of base) : 124205.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7218 (100.64 % of base) : 130872.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        6928 (57.28 % of base) : 49809.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6723 (74.89 % of base) : 72806.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6647 (73.04 % of base) : 96312.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6599 (72.26 % of base) : 96327.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6482 (88.41 % of base) : 36523.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6471 (88.16 % of base) : 135323.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6467 (87.69 % of base) : 139971.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6451 (78.75 % of base) : 96326.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6440 (87.54 % of base) : 42593.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6323 (94.16 % of base) : 155639.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        6060 (89.09 % of base) : 104229.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:ToDictionary[System.ReadOnlyMemory`1[ushort]](System.Func`2[System.__Canon,System.ReadOnlyMemory`1[ushort]],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]]:this (Tier1)

Top method improvements (bytes):
        -176 (-9.64 % of base) : 142726.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -176 (-9.64 % of base) : 142769.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -141 (-9.13 % of base) : 80858.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -138 (-7.54 % of base) : 137844.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -138 (-7.54 % of base) : 143943.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
         -85 (-11.42 % of base) : 86284.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -83 (-11.13 % of base) : 121996.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -79 (-11.21 % of base) : 61435.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -78 (-10.58 % of base) : 77357.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -75 (-10.64 % of base) : 17786.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -70 (-0.94 % of base) : 135364.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
         -62 (-7.66 % of base) : 126223.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -61 (-9.84 % of base) : 102582.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -52 (-0.70 % of base) : 42687.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
         -51 (-0.69 % of base) : 140010.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
         -27 (-6.67 % of base) : 93609.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -24 (-5.58 % of base) : 104039.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -21 (-2.17 % of base) : 93607.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -18 (-4.21 % of base) : 59223.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -15 (-0.22 % of base) : 140151.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)

Top method regressions (percentages):
         308 (157.95 % of base) : 94432.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:ComputeOffsets():this (Tier1)
        1601 (122.03 % of base) : 122401.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        1601 (122.03 % of base) : 116237.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        5653 (121.96 % of base) : 145951.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        5653 (121.96 % of base) : 156148.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        3884 (121.26 % of base) : 132989.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[int](System.String,System.ReadOnlySpan`1[ushort],int,byref,System.Text.RegularExpressions.MatchCallback`1[int],int,ubyte):this (Tier1)
        3954 (120.55 % of base) : 108391.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
         240 (120.00 % of base) : 92856.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        3945 (119.95 % of base) : 115912.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
         298 (119.20 % of base) : 92870.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
         152 (118.75 % of base) : 60012.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier1)
        2940 (114.93 % of base) : 5517.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
         224 (114.29 % of base) : 102815.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        3730 (113.41 % of base) : 140150.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[int](System.String,System.ReadOnlySpan`1[ushort],int,byref,System.Text.RegularExpressions.MatchCallback`1[int],int,ubyte):this (Tier1-OSR)
        2309 (113.35 % of base) : 150391.dasm - Benchstone.MDBenchI.MDMulMatrix:Inner(int[,],int[,],int[,]) (Tier1)
        1923 (112.72 % of base) : 147854.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:InsertionSort(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]) (Tier1)
        2369 (112.49 % of base) : 146768.dasm - NumericSortJagged:Run():double:this (Tier1)
        8258 (112.03 % of base) : 115885.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        1509 (111.53 % of base) : 155913.dasm - Benchstone.MDBenchI.MDPuzzle:Trial(int):ubyte:this (Tier1)
        3983 (110.24 % of base) : 140157.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[int](System.String,System.ReadOnlySpan`1[ushort],int,byref,System.Text.RegularExpressions.MatchCallback`1[int],int,ubyte):this (Tier1)

Top method improvements (percentages):
         -85 (-11.42 % of base) : 86284.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -79 (-11.21 % of base) : 61435.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -83 (-11.13 % of base) : 121996.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -75 (-10.64 % of base) : 17786.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -78 (-10.58 % of base) : 77357.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -61 (-9.84 % of base) : 102582.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
        -176 (-9.64 % of base) : 142726.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -176 (-9.64 % of base) : 142769.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -141 (-9.13 % of base) : 80858.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
         -62 (-7.66 % of base) : 126223.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -138 (-7.54 % of base) : 137844.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -138 (-7.54 % of base) : 143943.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
         -27 (-6.67 % of base) : 93609.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -24 (-5.58 % of base) : 104039.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -18 (-4.21 % of base) : 59223.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -12 (-2.70 % of base) : 119583.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -12 (-2.70 % of base) : 44770.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -12 (-2.70 % of base) : 147800.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -21 (-2.17 % of base) : 93607.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
          -7 (-1.55 % of base) : 75185.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)


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: 15913368 (overridden on cmd)
Total bytes of diff: 16814228 (overridden on cmd)
Total bytes of delta: 900860 (5.66 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24044 : 6825.dasm (67.69 % of base)
       12583 : 19891.dasm (42.17 % of base)
        9367 : 56145.dasm (95.05 % of base)
        9329 : 48024.dasm (107.29 % of base)
        8060 : 50244.dasm (82.81 % of base)
        7747 : 7107.dasm (42.16 % of base)
        7728 : 50270.dasm (41.91 % of base)
        6928 : 28619.dasm (57.28 % of base)
        6723 : 33096.dasm (74.89 % of base)
        6443 : 36085.dasm (79.58 % of base)
        5662 : 32715.dasm (67.16 % of base)
        5185 : 56329.dasm (83.35 % of base)
        5018 : 2971.dasm (76.70 % of base)
        4947 : 50780.dasm (85.35 % of base)
        3932 : 20176.dasm (76.89 % of base)
        3900 : 46166.dasm (68.64 % of base)
        3692 : 28289.dasm (88.73 % of base)
        3641 : 50807.dasm (35.78 % of base)
        3558 : 53529.dasm (34.86 % of base)
        3541 : 49800.dasm (83.32 % of base)

Top file improvements (bytes):
        -167 : 20181.dasm (-2.00 % of base)
         -65 : 5462.dasm (-8.43 % of base)
         -36 : 56359.dasm (-0.80 % of base)
         -21 : 46898.dasm (-9.86 % of base)
          -4 : 42745.dasm (-0.78 % of base)
          -3 : 31481.dasm (-1.29 % of base)
          -2 : 18639.dasm (-1.79 % of base)
          -2 : 5210.dasm (-1.37 % of base)
          -2 : 1504.dasm (-1.79 % of base)
          -2 : 28521.dasm (-1.79 % of base)
          -2 : 44768.dasm (-1.90 % of base)

82 total files with Code Size differences (11 improved, 71 regressed), 3 unchanged.

Top method regressions (bytes):
       24044 (67.69 % of base) : 6825.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       12583 (42.17 % of base) : 19891.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        9367 (95.05 % of base) : 56145.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        9329 (107.29 % of base) : 48024.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8060 (82.81 % of base) : 50244.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        7747 (42.16 % of base) : 7107.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7728 (41.91 % of base) : 50270.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6928 (57.28 % of base) : 28619.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6723 (74.89 % of base) : 33096.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6443 (79.58 % of base) : 36085.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        5662 (67.16 % of base) : 32715.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        5185 (83.35 % of base) : 56329.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5018 (76.70 % of base) : 2971.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        4947 (85.35 % of base) : 50780.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        3932 (76.89 % of base) : 20176.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
        3900 (68.64 % of base) : 46166.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
        3692 (88.73 % of base) : 28289.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        3641 (35.78 % of base) : 50807.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        3558 (34.86 % of base) : 53529.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        3541 (83.32 % of base) : 49800.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

Top method improvements (bytes):
        -167 (-2.00 % of base) : 20181.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
         -65 (-8.43 % of base) : 5462.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -36 (-0.80 % of base) : 56359.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1)
         -21 (-9.86 % of base) : 46898.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.78 % of base) : 42745.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
          -3 (-1.29 % of base) : 31481.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddElementStatus(Interop+Crypto+X509VerifyStatusCode,System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (Tier1)
          -2 (-1.37 % of base) : 5210.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 1504.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 18639.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.90 % of base) : 44768.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 28521.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
         152 (118.75 % of base) : 30490.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier1)
        1605 (110.31 % of base) : 30491.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
        2066 (109.66 % of base) : 53648.dasm - Benchstone.MDBenchI.MDMulMatrix:Inner(int[,],int[,],int[,]) (Tier1)
        9329 (107.29 % of base) : 48024.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
         307 (106.97 % of base) : 53211.dasm - Benchstone.BenchI.Array1:Test():ubyte:this (Tier1-OSR)
        3385 (106.68 % of base) : 18367.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
          99 (106.45 % of base) : 2253.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
        1549 (105.52 % of base) : 46696.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         712 (105.48 % of base) : 50896.dasm - Burgers:GetCalculated0(int,int,double,double,double,double[]):double[] (Tier1-OSR)
         422 (105.24 % of base) : 29964.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         442 (104.49 % of base) : 20082.dasm - System.Text.RegularExpressions.RegexParser:ScanBlank():this (Tier1)
        1930 (104.04 % of base) : 48485.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
        3455 (103.94 % of base) : 45717.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxExtensions:VisitRankSpecifiers[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]](Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,System.Action`2[System.__Canon,System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]],byref) (Tier1)
        1506 (103.15 % of base) : 44153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:Microsoft.Cci.ICustomAttribute.GetArguments(Microsoft.CodeAnalysis.Emit.EmitContext):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IMetadataExpression]:this (Tier1)
        1935 (102.93 % of base) : 38874.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (Tier1)
        2135 (101.62 % of base) : 46136.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,ubyte,ubyte,byref):this (Tier1)
        1224 (100.99 % of base) : 29540.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        1780 (99.66 % of base) : 50652.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
         620 (99.20 % of base) : 24428.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1-OSR)
         137 (98.56 % of base) : 32416.dasm - PerfLabTests.LowLevelPerf:ForeachOverList100Elements():int:this (Tier1-OSR)

Top method improvements (percentages):
         -21 (-9.86 % of base) : 46898.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -65 (-8.43 % of base) : 5462.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -167 (-2.00 % of base) : 20181.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
          -2 (-1.90 % of base) : 44768.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 1504.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 18639.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.79 % of base) : 28521.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.37 % of base) : 5210.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -3 (-1.29 % of base) : 31481.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddElementStatus(Interop+Crypto+X509VerifyStatusCode,System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (Tier1)
         -36 (-0.80 % of base) : 56359.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1)
          -4 (-0.78 % of base) : 42745.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)


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: 402389388 (overridden on cmd)
Total bytes of diff: 410560073 (overridden on cmd)
Total bytes of delta: 8170685 (2.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
      137635 : 497100.dasm (99.88 % of base)
       20702 : 583615.dasm (99.79 % of base)
       14748 : 499595.dasm (110.32 % of base)
       14354 : 582676.dasm (96.02 % of base)
       13020 : 583894.dasm (99.43 % of base)
       12502 : 383537.dasm (96.38 % of base)
       12304 : 382800.dasm (93.83 % of base)
       12196 : 384765.dasm (86.25 % of base)
       11848 : 383155.dasm (100.14 % of base)
       11709 : 390389.dasm (98.79 % of base)
       11476 : 392116.dasm (97.18 % of base)
       11124 : 397295.dasm (97.28 % of base)
       11088 : 384661.dasm (97.12 % of base)
       10824 : 397790.dasm (91.90 % of base)
       10690 : 383882.dasm (86.27 % of base)
        9973 : 383650.dasm (88.47 % of base)
        9973 : 383266.dasm (88.39 % of base)
        8106 : 581048.dasm (84.00 % of base)
        8065 : 503590.dasm (82.82 % of base)
        7711 : 516459.dasm (75.52 % of base)

Top file improvements (bytes):
        -265 : 475579.dasm (-12.65 % of base)
        -265 : 475643.dasm (-12.65 % of base)
        -200 : 482439.dasm (-13.12 % of base)
        -200 : 482454.dasm (-13.12 % of base)
        -194 : 482424.dasm (-12.39 % of base)
        -192 : 482574.dasm (-12.70 % of base)
        -192 : 482589.dasm (-12.70 % of base)
        -188 : 482559.dasm (-12.07 % of base)
        -145 : 396819.dasm (-1.69 % of base)
        -140 : 502128.dasm (-42.04 % of base)
        -132 : 483460.dasm (-7.37 % of base)
        -127 : 502130.dasm (-38.14 % of base)
        -117 : 392117.dasm (-0.73 % of base)
        -107 : 482841.dasm (-6.81 % of base)
         -93 : 387270.dasm (-1.97 % of base)
         -91 : 475483.dasm (-5.21 % of base)
         -91 : 475451.dasm (-5.21 % of base)
         -91 : 475675.dasm (-5.21 % of base)
         -91 : 475611.dasm (-5.24 % of base)
         -90 : 440722.dasm (-14.00 % of base)

90 total files with Code Size differences (30 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
      137635 (99.88 % of base) : 497100.dasm - Program:TestEntryPoint():int (FullOpts)
       20702 (99.79 % of base) : 583615.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
       14748 (110.32 % of base) : 499595.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       14354 (96.02 % of base) : 582676.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
       13020 (99.43 % of base) : 583894.dasm - SimpleArray_01.Test:Test1() (FullOpts)
       12502 (96.38 % of base) : 383537.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       12304 (93.83 % of base) : 382800.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       12196 (86.25 % of base) : 384765.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       11848 (100.14 % of base) : 383155.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       11709 (98.79 % of base) : 390389.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       11476 (97.18 % of base) : 392116.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       11124 (97.28 % of base) : 397295.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       11088 (97.12 % of base) : 384661.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
       10824 (91.90 % of base) : 397790.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       10690 (86.27 % of base) : 383882.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
        9973 (88.47 % of base) : 383650.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
        9973 (88.39 % of base) : 383266.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
        8106 (84.00 % of base) : 581048.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        8065 (82.82 % of base) : 503590.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        7711 (75.52 % of base) : 516459.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)

Top method improvements (bytes):
        -265 (-12.65 % of base) : 475579.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplyAddSubtractDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -265 (-12.65 % of base) : 475643.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -200 (-13.12 % of base) : 482439.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -200 (-13.12 % of base) : 482454.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -194 (-12.39 % of base) : 482424.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
        -192 (-12.70 % of base) : 482574.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -192 (-12.70 % of base) : 482589.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -188 (-12.07 % of base) : 482559.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
        -145 (-1.69 % of base) : 396819.dasm - Internal.JitInterface.CorInfoImpl:ceeInfoGetCallInfo(byref,ulong,ulong,int,ulong,byref,byref,byref,byref,byref,byref,byref,byref):this (Tier1)
        -140 (-42.04 % of base) : 502128.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
        -132 (-7.37 % of base) : 483460.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -127 (-38.14 % of base) : 502130.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
        -117 (-0.73 % of base) : 392117.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -107 (-6.81 % of base) : 482841.dasm - JIT.HardwareIntrinsics.X86._Sse3.AlternatingBinaryOpTest__AddSubtractDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         -93 (-1.97 % of base) : 387270.dasm - Internal.TypeSystem.CastingHelper:CanCastGenericParameterTo(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
         -91 (-5.21 % of base) : 475451.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
         -91 (-5.21 % of base) : 475483.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
         -91 (-5.24 % of base) : 475611.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
         -91 (-5.21 % of base) : 475675.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractNegatedDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
         -90 (-14.00 % of base) : 440722.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)

Top method regressions (percentages):
         323 (154.55 % of base) : 503570.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
         300 (153.85 % of base) : 524552.dasm - class1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         300 (153.85 % of base) : 524869.dasm - Test_jaggedarr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
         288 (152.38 % of base) : 525234.dasm - struct1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         288 (152.38 % of base) : 524616.dasm - Test_doublearr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
         293 (150.26 % of base) : 524607.dasm - Test_doublearr_basics.double1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         290 (148.72 % of base) : 524860.dasm - Test_jaggedarr_basics.double1:Init3DMatrix(double[,,],double[][]) (FullOpts)
        1493 (147.82 % of base) : 396860.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:FindValue(Internal.TypeSystem.Instantiation):byref:this (Tier1)
        1580 (135.39 % of base) : 396859.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:TryGetValue(Internal.TypeSystem.Instantiation,byref):ubyte:this (Tier1)
         321 (131.56 % of base) : 524817.dasm - Test_intarr_InnerProd.intmm:Init3DMatrix(int[,,],int[][]) (FullOpts)
        1156 (127.03 % of base) : 525232.dasm - struct1:Process2DArray(byref) (FullOpts)
        1440 (126.65 % of base) : 389373.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:FindValue(Internal.TypeSystem.Instantiation):byref:this (Tier1)
        3570 (123.36 % of base) : 525008.dasm - plainarr:gaussj(double[,],int,double[,],int) (FullOpts)
        3570 (123.36 % of base) : 525239.dasm - structarr:gaussj(MatrixStruct,int,MatrixStruct,int) (FullOpts)
        1528 (119.19 % of base) : 389372.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:TryGetValue(Internal.TypeSystem.Instantiation,byref):ubyte:this (Tier1)
        2013 (119.04 % of base) : 387337.dasm - Internal.TypeSystem.RuntimeDeterminedCanonicalizationAlgorithm:ConvertInstantiationToCanonForm(Internal.TypeSystem.Instantiation,int,byref):Internal.TypeSystem.Instantiation (Tier1)
         152 (118.75 % of base) : 502031.dasm - AssignRect:CopyToAssign(int[,],int[,]) (FullOpts)
        1179 (118.37 % of base) : 528003.dasm - JitTest_lcs2_lcs_cs.LCS:findLCS(byref,byref,byref,byref) (FullOpts)
        1128 (117.99 % of base) : 524550.dasm - class1:Process2DArray(byref) (FullOpts)
         229 (117.44 % of base) : 293919.dasm - System.Type:GetRootElementType():System.Type:this (Instrumented Tier1)

Top method improvements (percentages):
         -40 (-59.70 % of base) : 541428.dasm - foo:Main():int (FullOpts)
        -140 (-42.04 % of base) : 502128.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
        -127 (-38.14 % of base) : 502130.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
         -39 (-23.49 % of base) : 502149.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
         -50 (-16.18 % of base) : 413444.dasm - Mutual_recursion:seventhMethodFirstCalleeFastTailCallReversed@331(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -50 (-16.18 % of base) : 413445.dasm - Mutual_recursion:seventhMethodSecondCalleeFastTailCallReversed@349(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -11 (-15.71 % of base) : 284409.dasm - Test_b99969:DoSpoof() (Tier1-OSR)
         -88 (-14.19 % of base) : 426232.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
         -88 (-14.19 % of base) : 426267.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)
         -90 (-14.00 % of base) : 440722.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)
         -88 (-13.69 % of base) : 426211.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperDouble:ValidateWithResult(double[],double[],System.String):this (FullOpts)
        -200 (-13.12 % of base) : 482439.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -200 (-13.12 % of base) : 482454.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -192 (-12.70 % of base) : 482574.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -192 (-12.70 % of base) : 482589.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -265 (-12.65 % of base) : 475579.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplyAddSubtractDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -265 (-12.65 % of base) : 475643.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -194 (-12.39 % of base) : 482424.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         -77 (-12.36 % of base) : 440762.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementInt640:ValidateWithResult(long[],long[],long,System.String):this (FullOpts)
         -77 (-12.36 % of base) : 440832.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementUInt640:ValidateWithResult(ulong[],ulong[],ulong,System.String):this (FullOpts)


libraries.crossgen2.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: 38669752 (overridden on cmd)
Total bytes of diff: 42761834 (overridden on cmd)
Total bytes of delta: 4092082 (10.58 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       54186 : 8951.dasm (76.08 % of base)
       16963 : 194163.dasm (66.15 % of base)
       12249 : 67090.dasm (102.35 % of base)
       10775 : 66986.dasm (97.94 % of base)
        9703 : 96180.dasm (76.27 % of base)
        8886 : 6894.dasm (78.55 % of base)
        6938 : 18450.dasm (76.77 % of base)
        6906 : 85780.dasm (96.21 % of base)
        6800 : 197306.dasm (74.33 % of base)
        6310 : 214339.dasm (46.47 % of base)
        5990 : 92306.dasm (89.36 % of base)
        4836 : 99789.dasm (76.71 % of base)
        4818 : 86095.dasm (84.27 % of base)
        4805 : 214392.dasm (101.46 % of base)
        4695 : 33585.dasm (90.43 % of base)
        4688 : 6827.dasm (82.36 % of base)
        4676 : 7081.dasm (82.81 % of base)
        4656 : 8433.dasm (37.76 % of base)
        4358 : 149062.dasm (84.25 % of base)
        4358 : 177857.dasm (84.25 % of base)

Top file improvements (bytes):
         -92 : 190130.dasm (-1.27 % of base)
         -75 : 36872.dasm (-11.16 % of base)
         -21 : 136414.dasm (-1.76 % of base)
         -20 : 29302.dasm (-3.04 % of base)
         -15 : 60111.dasm (-3.10 % of base)
         -15 : 156236.dasm (-1.22 % of base)
         -14 : 123602.dasm (-7.65 % of base)
         -14 : 123472.dasm (-8.54 % of base)
         -14 : 123705.dasm (-7.82 % of base)
         -14 : 231969.dasm (-2.63 % of base)
         -10 : 40476.dasm (-0.83 % of base)
          -8 : 137340.dasm (-6.15 % of base)
          -8 : 155166.dasm (-2.03 % of base)
          -8 : 166618.dasm (-6.15 % of base)
          -8 : 181470.dasm (-2.25 % of base)
          -8 : 228309.dasm (-2.27 % of base)
          -8 : 133327.dasm (-2.25 % of base)
          -4 : 202877.dasm (-1.24 % of base)
          -4 : 212950.dasm (-1.59 % of base)
          -4 : 158230.dasm (-0.52 % of base)

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

Top method regressions (bytes):
       54186 (76.08 % of base) : 8951.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
       16963 (66.15 % of base) : 194163.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       12249 (102.35 % of base) : 67090.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       10775 (97.94 % of base) : 66986.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        9703 (76.27 % of base) : 96180.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
        8886 (78.55 % of base) : 6894.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        6938 (76.77 % of base) : 18450.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6906 (96.21 % of base) : 85780.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        6800 (74.33 % of base) : 197306.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        6310 (46.47 % of base) : 214339.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
        5990 (89.36 % of base) : 92306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        4836 (76.71 % of base) : 99789.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        4818 (84.27 % of base) : 86095.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        4805 (101.46 % of base) : 214392.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
        4695 (90.43 % of base) : 33585.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        4688 (82.36 % of base) : 6827.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        4676 (82.81 % of base) : 7081.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        4656 (37.76 % of base) : 8433.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
        4358 (84.25 % of base) : 149062.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ReferencedAssemblyIdentity[System.__Canon,System.__Canon]]],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        4358 (84.25 % of base) : 177857.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ReferencedAssemblyIdentity[System.__Canon,System.__Canon]]],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)

Top method improvements (bytes):
         -92 (-1.27 % of base) : 190130.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -75 (-11.16 % of base) : 36872.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -21 (-1.76 % of base) : 136414.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
         -20 (-3.04 % of base) : 29302.dasm - System.Numerics.Vector`1[System.__Canon]:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
         -15 (-1.22 % of base) : 156236.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseDistinguishedName(System.String,System.String,ubyte,ubyte):System.Collections.Generic.List`1[ubyte[]] (FullOpts)
         -15 (-3.10 % of base) : 60111.dasm - Xunit.Assert:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (FullOpts)
         -14 (-8.54 % of base) : 123472.dasm - Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)
         -14 (-7.65 % of base) : 123602.dasm - Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)
         -14 (-7.82 % of base) : 123705.dasm - Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)
         -14 (-2.63 % of base) : 231969.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SetEquals(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -10 (-0.83 % of base) : 40476.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLog:DebugWarn(ubyte,System.String,Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
          -8 (-2.27 % of base) : 228309.dasm - Interop+cgroups:TryGetMemoryStatField(System.String,byref):ubyte (FullOpts)
          -8 (-6.15 % of base) : 137340.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -8 (-6.15 % of base) : 166618.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -8 (-2.25 % of base) : 181470.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -8 (-2.25 % of base) : 133327.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -8 (-2.03 % of base) : 155166.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
          -4 (-0.52 % of base) : 158230.dasm - PathExtensions+<DeleteSubtreesAsync>d__14:MoveNext():this (FullOpts)
          -4 (-1.24 % of base) : 202877.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.59 % of base) : 212950.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (FullOpts)

Top method regressions (percentages):
          28 (116.67 % of base) : 193392.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
         231 (114.93 % of base) : 188896.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         182 (113.04 % of base) : 188845.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
         487 (112.47 % of base) : 189006.dasm - System.Xml.XmlBufferReader:GetEscapedChars(int,int,ushort[]):int:this (FullOpts)
        1537 (111.86 % of base) : 83747.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MergeEquivalentTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,short,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
        1485 (110.74 % of base) : 233867.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        1444 (109.64 % of base) : 161499.dasm - System.Net.HttpListenerRequest+Helpers:UrlDecodeStringFromStringInternal(System.String,System.Text.Encoding):System.String (FullOpts)
         927 (109.19 % of base) : 89896.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
         561 (108.93 % of base) : 61863.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:<ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest>g__isRuntimeSimilar|42_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (FullOpts)
        1632 (108.66 % of base) : 120612.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
        2401 (107.24 % of base) : 109410.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this (FullOpts)
        3650 (106.73 % of base) : 7419.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         270 (106.72 % of base) : 70972.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxExtensions:IsInContextWhichNeedsDynamicAttribute(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):ubyte (FullOpts)
        1441 (106.66 % of base) : 226059.dasm - System.Web.Util.HttpEncoder:UrlDecode(System.String,System.Text.Encoding):System.String (FullOpts)
        3621 (105.88 % of base) : 7461.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
          93 (105.68 % of base) : 77922.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         279 (105.28 % of base) : 134136.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
        1231 (105.12 % of base) : 37897.dasm - System.Array+SorterGenericArray:InsertionSort(int,int):this (FullOpts)
         803 (104.97 % of base) : 210810.dasm - System.Xml.XmlUtf8RawTextWriter:WriteCommentOrPi(System.String,int):this (FullOpts)
         370 (104.82 % of base) : 35919.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)

Top method improvements (percentages):
         -75 (-11.16 % of base) : 36872.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -14 (-8.54 % of base) : 123472.dasm - Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)
         -14 (-7.82 % of base) : 123705.dasm - Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)
         -14 (-7.65 % of base) : 123602.dasm - Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)
          -8 (-6.15 % of base) : 137340.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -8 (-6.15 % of base) : 166618.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -15 (-3.10 % of base) : 60111.dasm - Xunit.Assert:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (FullOpts)
         -20 (-3.04 % of base) : 29302.dasm - System.Numerics.Vector`1[System.__Canon]:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
         -14 (-2.63 % of base) : 231969.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SetEquals(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
          -8 (-2.27 % of base) : 228309.dasm - Interop+cgroups:TryGetMemoryStatField(System.String,byref):ubyte (FullOpts)
          -8 (-2.25 % of base) : 181470.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -8 (-2.25 % of base) : 133327.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -8 (-2.03 % of base) : 155166.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
          -2 (-1.92 % of base) : 123506.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.89 % of base) : 38882.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.85 % of base) : 38887.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
         -21 (-1.76 % of base) : 136414.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
          -2 (-1.75 % of base) : 38401.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.75 % of base) : 29897.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.75 % of base) : 152586.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)


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: 58849984 (overridden on cmd)
Total bytes of diff: 65421699 (overridden on cmd)
Total bytes of delta: 6571715 (11.17 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       20588 : 104569.dasm (84.33 % of base)
       19455 : 247452.dasm (67.79 % of base)
       19005 : 104528.dasm (109.37 % of base)
       14678 : 94684.dasm (110.20 % of base)
       11540 : 71834.dasm (96.04 % of base)
       10887 : 71940.dasm (95.03 % of base)
       10271 : 240879.dasm (103.76 % of base)
        9793 : 29668.dasm (83.77 % of base)
        9367 : 225681.dasm (94.78 % of base)
        8886 : 108734.dasm (91.35 % of base)
        8494 : 101826.dasm (92.36 % of base)
        8165 : 63506.dasm (83.65 % of base)
        7711 : 249347.dasm (75.52 % of base)
        7460 : 63099.dasm (72.90 % of base)
        7224 : 104844.dasm (75.35 % of base)
        7201 : 104518.dasm (91.55 % of base)
        6347 : 274061.dasm (61.44 % of base)
        6186 : 95032.dasm (83.87 % of base)
        6025 : 94696.dasm (103.31 % of base)
        5813 : 107561.dasm (106.92 % of base)

Top file improvements (bytes):
        -164 : 139.dasm (-1.96 % of base)
         -58 : 38689.dasm (-7.28 % of base)
         -28 : 260467.dasm (-4.53 % of base)
         -25 : 284478.dasm (-6.44 % of base)
         -23 : 291755.dasm (-6.52 % of base)
         -22 : 180179.dasm (-3.56 % of base)
         -21 : 221009.dasm (-9.86 % of base)
         -21 : 221043.dasm (-9.59 % of base)
         -21 : 244442.dasm (-9.50 % of base)
         -20 : 94650.dasm (-1.07 % of base)
         -20 : 291754.dasm (-6.39 % of base)
         -19 : 66145.dasm (-1.50 % of base)
         -18 : 151021.dasm (-3.19 % of base)
         -18 : 172381.dasm (-3.19 % of base)
         -18 : 203961.dasm (-3.19 % of base)
         -18 : 224364.dasm (-4.40 % of base)
         -18 : 244443.dasm (-10.40 % of base)
         -17 : 166833.dasm (-0.46 % of base)
         -17 : 233710.dasm (-2.85 % of base)
         -16 : 140573.dasm (-2.33 % of base)

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

Top method regressions (bytes):
       20588 (84.33 % of base) : 104569.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       19455 (67.79 % of base) : 247452.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       19005 (109.37 % of base) : 104528.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
       14678 (110.20 % of base) : 94684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11540 (96.04 % of base) : 71834.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10887 (95.03 % of base) : 71940.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       10271 (103.76 % of base) : 240879.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
        9793 (83.77 % of base) : 29668.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        9367 (94.78 % of base) : 225681.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        8886 (91.35 % of base) : 108734.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        8494 (92.36 % of base) : 101826.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8165 (83.65 % of base) : 63506.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        7711 (75.52 % of base) : 249347.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        7460 (72.90 % of base) : 63099.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        7224 (75.35 % of base) : 104844.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        7201 (91.55 % of base) : 104518.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        6347 (61.44 % of base) : 274061.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
        6186 (83.87 % of base) : 95032.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        6025 (103.31 % of base) : 94696.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5813 (106.92 % of base) : 107561.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:ReportIndirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref) (FullOpts)

Top method improvements (bytes):
        -164 (-1.96 % of base) : 139.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -58 (-7.28 % of base) : 38689.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -28 (-4.53 % of base) : 260467.dasm - System.Xml.XmlDictionaryReader:ReadString(int):System.String:this (FullOpts)
         -25 (-6.44 % of base) : 284478.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
         -23 (-6.52 % of base) : 291755.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -22 (-3.56 % of base) : 180179.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -21 (-9.50 % of base) : 244442.dasm - Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectorySequence(System.String,int):int (FullOpts)
         -21 (-9.86 % of base) : 221009.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -21 (-9.59 % of base) : 221043.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
         -20 (-1.07 % of base) : 94650.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
         -20 (-6.39 % of base) : 291754.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -19 (-1.50 % of base) : 66145.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
         -18 (-10.40 % of base) : 244443.dasm - Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectoryOrRecursiveSequence(System.String,int):int (FullOpts)
         -18 (-3.19 % of base) : 151021.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -18 (-3.19 % of base) : 172381.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -18 (-3.19 % of base) : 203961.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -18 (-4.40 % of base) : 224364.dasm - System.CodeDom.Compiler.CompilerInfo:CreateProvider(System.Collections.Generic.IDictionary`2[System.String,System.String]):System.CodeDom.Compiler.CodeDomProvider:this (FullOpts)
         -17 (-2.85 % of base) : 233710.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
         -17 (-0.46 % of base) : 166833.dasm - System.Xml.Xsl.Runtime.XsltMethods:.cctor() (FullOpts)
         -16 (-2.33 % of base) : 140573.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetTriviaThatContainsPosition(byref,int):Microsoft.CodeAnalysis.SyntaxTrivia (FullOpts)

Top method regressions (percentages):
         206 (137.33 % of base) : 84575.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        1891 (120.91 % of base) : 108229.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ImplicitNamedTypeSymbol:AddDeclaredNonTypeMembers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        3890 (119.73 % of base) : 267924.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
        2746 (117.85 % of base) : 211107.dasm - System.Net.Http.Http3RequestStream:BufferHeaderCollection(System.Net.Http.Headers.HttpHeaders):int:this (FullOpts)
          28 (116.67 % of base) : 271500.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
        1424 (116.63 % of base) : 148626.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
        1424 (116.63 % of base) : 201594.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
         136 (116.24 % of base) : 150789.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:ReadNextInteger():int:this (FullOpts)
         136 (116.24 % of base) : 203743.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:ReadNextInteger():int:this (FullOpts)
        2791 (115.71 % of base) : 107528.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAttributeData:GetTargetAttributeSignatureIndex(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.AttributeDescription):int:this (FullOpts)
         229 (115.66 % of base) : 263273.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         128 (115.32 % of base) : 213179.dasm - System.Data.Odbc.CStringTokenizer:GetTokenFromBracket(int):int:this (FullOpts)
         182 (113.75 % of base) : 262515.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
         748 (113.33 % of base) : 26406.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[short](short):this (FullOpts)
         166 (112.93 % of base) : 31011.dasm - System.Data.DataSet:FindTable(System.Data.DataTable,System.ComponentModel.PropertyDescriptor[],int):System.Data.DataTable (FullOpts)
         487 (112.73 % of base) : 260180.dasm - System.Xml.XmlBufferReader:GetEscapedChars(int,int,ushort[]):int:this (FullOpts)
         170 (112.58 % of base) : 148057.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`1[double]:BinarySearch(Microsoft.CodeAnalysis.Collections.SegmentedArray`1[double],int,int,double):int (FullOpts)
         170 (112.58 % of base) : 201076.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`1[double]:BinarySearch(Microsoft.CodeAnalysis.Collections.SegmentedArray`1[double],int,int,double):int (FullOpts)
        3121 (112.51 % of base) : 31043.dasm - System.Data.DataTable:SerializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
        1691 (111.91 % of base) : 111883.dasm - Microsoft.CodeAnalysis.VisualBasic.ClsComplianceChecker:CheckParameterCompliance(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol):this (FullOpts)

Top method improvements (percentages):
         -18 (-10.40 % of base) : 244443.dasm - Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectoryOrRecursiveSequence(System.String,int):int (FullOpts)
         -21 (-9.86 % of base) : 221009.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -21 (-9.59 % of base) : 221043.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
         -21 (-9.50 % of base) : 244442.dasm - Microsoft.Build.Shared.FileMatcher:LastIndexOfDirectorySequence(System.String,int):int (FullOpts)
         -14 (-8.92 % of base) : 173723.dasm - Internal.TypeSystem.DefType:get_IsRuntimeDeterminedSubtype():ubyte:this (FullOpts)
         -14 (-8.28 % of base) : 173975.dasm - Internal.TypeSystem.TypeDesc:get_HasTypeEquivalence():ubyte:this (FullOpts)
         -14 (-8.19 % of base) : 173863.dasm - Internal.TypeSystem.MethodDesc:get_IsRuntimeDeterminedExactMethod():ubyte:this (FullOpts)
         -16 (-8.00 % of base) : 184635.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Byte():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184643.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Char():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184637.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int16():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184639.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int32():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184641.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int64():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184636.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_SByte():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184638.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt16():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184640.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt32():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184642.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt64():System.Reflection.MethodInfo (FullOpts)
         -16 (-8.00 % of base) : 184626.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -12 (-7.69 % of base) : 278798.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -58 (-7.28 % of base) : 38689.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -23 (-6.52 % of base) : 291755.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (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: 339241076 (overridden on cmd)
Total bytes of diff: 381222310 (overridden on cmd)
Total bytes of delta: 41981234 (12.38 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       26504 : 601636.dasm (94.37 % of base)
       25234 : 672748.dasm (91.47 % of base)
       24822 : 66578.dasm (98.73 % of base)
       21202 : 60516.dasm (90.53 % of base)
       20879 : 670442.dasm (89.21 % of base)
       20328 : 719928.dasm (103.97 % of base)
       19910 : 533106.dasm (95.11 % of base)
       19424 : 719892.dasm (102.39 % of base)
       19315 : 487742.dasm (89.04 % of base)
       19292 : 673257.dasm (89.46 % of base)
       19197 : 692991.dasm (97.08 % of base)
       18813 : 184545.dasm (85.61 % of base)
       18789 : 94164.dasm (98.91 % of base)
       17293 : 692484.dasm (76.60 % of base)
       17268 : 129442.dasm (77.44 % of base)
       17226 : 191757.dasm (93.86 % of base)
       17157 : 700849.dasm (82.83 % of base)
       17092 : 70283.dasm (79.22 % of base)
       16489 : 699038.dasm (79.79 % of base)
       16265 : 55440.dasm (94.44 % of base)

Top file improvements (bytes):
       -1298 : 445718.dasm (-30.69 % of base)
       -1298 : 448700.dasm (-30.75 % of base)
       -1289 : 441785.dasm (-30.88 % of base)
       -1272 : 448640.dasm (-31.35 % of base)
       -1272 : 445499.dasm (-31.56 % of base)
       -1272 : 448740.dasm (-31.38 % of base)
        -910 : 449567.dasm (-26.21 % of base)
        -739 : 84244.dasm (-5.47 % of base)
        -592 : 228595.dasm (-2.67 % of base)
        -374 : 60551.dasm (-5.59 % of base)
        -367 : 185248.dasm (-14.45 % of base)
        -266 : 575938.dasm (-3.26 % of base)
        -196 : 586359.dasm (-2.54 % of base)
        -193 : 63532.dasm (-10.93 % of base)
        -181 : 700921.dasm (-3.86 % of base)
        -160 : 338342.dasm (-1.00 % of base)
        -157 : 409880.dasm (-4.51 % of base)
        -146 : 425181.dasm (-4.24 % of base)
        -146 : 63622.dasm (-7.63 % of base)
        -137 : 62267.dasm (-5.98 % of base)

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

Top method regressions (bytes):
       26504 (94.37 % of base) : 601636.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
       25234 (91.47 % of base) : 672748.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       24822 (98.73 % of base) : 66578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
       21202 (90.53 % of base) : 60516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       20879 (89.21 % of base) : 670442.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       20328 (103.97 % of base) : 719928.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (Tier1)
       19910 (95.11 % of base) : 533106.dasm - System.Runtime.Serialization.ReflectionXmlFormatWriter:ReflectionWriteCollection(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (Tier1-OSR)
       19424 (102.39 % of base) : 719892.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeDefTableRows():this (Tier1)
       19315 (89.04 % of base) : 487742.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
       19292 (89.46 % of base) : 673257.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1)
       19197 (97.08 % of base) : 692991.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       18813 (85.61 % of base) : 184545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       18789 (98.91 % of base) : 94164.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       17293 (76.60 % of base) : 692484.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       17268 (77.44 % of base) : 129442.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (Tier1)
       17226 (93.86 % of base) : 191757.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       17157 (82.83 % of base) : 700849.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
       17092 (79.22 % of base) : 70283.dasm - Microsoft.Interop.Analyzers.RuntimeComApiUsageWithSourceGeneratedComAnalyzer+<>c:<Initialize>b__2_0(Microsoft.CodeAnalysis.Diagnostics.CompilationStartAnalysisContext):this (Tier1)
       16489 (79.79 % of base) : 699038.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       16265 (94.44 % of base) : 55440.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)

Top method improvements (bytes):
       -1298 (-30.69 % of base) : 445718.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Span`1[long]) (Tier1)
       -1298 (-30.75 % of base) : 448700.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong],System.Span`1[ulong]) (Tier1)
       -1289 (-30.88 % of base) : 441785.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Span`1[long]) (Tier1)
       -1272 (-31.56 % of base) : 445499.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long],long]](System.ReadOnlySpan`1[long],long,System.Span`1[long]) (Tier1)
       -1272 (-31.38 % of base) : 448740.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],ulong,System.Span`1[ulong]) (Tier1)
       -1272 (-31.35 % of base) : 448640.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong],ulong]](System.ReadOnlySpan`1[ulong],ulong,System.Span`1[ulong]) (Tier1)
        -910 (-26.21 % of base) : 449567.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__VectorizedSmall8|223_6[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](byref,ulong,byref,ulong) (Tier1)
        -739 (-5.47 % of base) : 84244.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -592 (-2.67 % of base) : 228595.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (Tier1)
        -374 (-5.59 % of base) : 60551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:MakeModifiersAndFlags(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax,int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.ValueTuple`2[uint,Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol+Flags] (Tier1)
        -367 (-14.45 % of base) : 185248.dasm - Microsoft.CodeAnalysis.Compilation:<IsSymbolAccessibleWithin>g__assemblyIsInCompilationReferences|195_2(Microsoft.CodeAnalysis.IAssemblySymbol,Microsoft.CodeAnalysis.Compilation):ubyte (Tier1)
        -266 (-3.26 % of base) : 575938.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (Tier1)
        -196 (-2.54 % of base) : 586359.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (Tier1)
        -193 (-10.93 % of base) : 63532.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:this (Tier1)
        -181 (-3.86 % of base) : 700921.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitWhileStatement(Microsoft.CodeAnalysis.CSharp.BoundWhileStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
        -160 (-1.00 % of base) : 338342.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -157 (-4.51 % of base) : 409880.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseDistinguishedName(System.String,System.String,ubyte,ubyte):System.Collections.Generic.List`1[ubyte[]] (Tier1)
        -146 (-7.63 % of base) : 63622.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax:this (Tier1)
        -146 (-4.24 % of base) : 425181.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:ParseDistinguishedName(System.String,System.String,ubyte,ubyte):System.Collections.Generic.List`1[ubyte[]] (Tier1)
        -137 (-5.98 % of base) : 62267.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroup(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)

Top method regressions (percentages):
        3723 (156.36 % of base) : 185671.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
       11859 (155.65 % of base) : 96032.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
        7543 (130.37 % of base) : 684020.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<<MultipleThreads>g__RunTestAsync|16_5>d:MoveNext():this (Tier1)
         190 (129.25 % of base) : 592977.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (Tier1)
         190 (129.25 % of base) : 415684.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (Tier1)
         190 (129.25 % of base) : 425540.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (Tier1)
        1789 (128.15 % of base) : 301751.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:GetApplicableUserDefinedBinaryOperatorCandidatesInBaseTypes(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.CandidateFunctionMember],int,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,ubyte,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType):Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType:this (Tier1)
        5274 (125.21 % of base) : 62716.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        5260 (124.47 % of base) : 93855.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
         270 (123.85 % of base) : 183003.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
         187 (123.03 % of base) : 60426.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (Tier1)
         187 (123.03 % of base) : 95602.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (Tier1)
         187 (123.03 % of base) : 189071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (Tier1)
        9496 (122.70 % of base) : 67861.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
         241 (121.72 % of base) : 54647.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        1477 (121.26 % of base) : 378970.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchLastIndexOfAny_String_ManyByte() (Tier1-OSR)
        1472 (121.15 % of base) : 379322.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchIndexOfAny_ManyString() (Tier1-OSR)
         235 (121.13 % of base) : 192334.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
       10712 (120.25 % of base) : 700076.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
        4708 (120.22 % of base) : 704692.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildLabels():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol]:this (Tier1)

Top method improvements (percentages):
       -1272 (-31.56 % of base) : 445499.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long],long]](System.ReadOnlySpan`1[long],long,System.Span`1[long]) (Tier1)
       -1272 (-31.38 % of base) : 448740.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],ulong,System.Span`1[ulong]) (Tier1)
       -1272 (-31.35 % of base) : 448640.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong],ulong]](System.ReadOnlySpan`1[ulong],ulong,System.Span`1[ulong]) (Tier1)
       -1289 (-30.88 % of base) : 441785.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Span`1[long]) (Tier1)
       -1298 (-30.75 % of base) : 448700.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong],System.Span`1[ulong]) (Tier1)
       -1298 (-30.69 % of base) : 445718.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],System.Span`1[long]) (Tier1)
        -910 (-26.21 % of base) : 449567.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__VectorizedSmall8|223_6[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](byref,ulong,byref,ulong) (Tier1)
         -72 (-20.28 % of base) : 705782.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1786_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -72 (-19.89 % of base) : 705786.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1789_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -72 (-19.89 % of base) : 705790.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1791_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -94 (-18.40 % of base) : 59591.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
        -112 (-16.59 % of base) : 705853.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1830_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -26 (-15.66 % of base) : 443200.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
         -26 (-15.57 % of base) : 437728.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
        -367 (-14.45 % of base) : 185248.dasm - Microsoft.CodeAnalysis.Compilation:<IsSymbolAccessibleWithin>g__assemblyIsInCompilationReferences|195_2(Microsoft.CodeAnalysis.IAssemblySymbol,Microsoft.CodeAnalysis.Compilation):ubyte (Tier1)
         -98 (-14.12 % of base) : 721783.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4779_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -45 (-13.72 % of base) : 705781.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -103 (-13.68 % of base) : 694240.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -63 (-13.49 % of base) : 182910.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -56 (-12.99 % of base) : 694487.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)


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: 130891574 (overridden on cmd)
Total bytes of diff: 140369996 (overridden on cmd)
Total bytes of delta: 9478422 (7.24 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24724 : 113327.dasm (36.95 % of base)
       24656 : 113606.dasm (37.71 % of base)
       19555 : 59308.dasm (68.01 % of base)
       16047 : 175002.dasm (88.58 % of base)
       14748 : 7121.dasm (110.32 % of base)
       14599 : 49317.dasm (109.48 % of base)
       14570 : 44239.dasm (109.48 % of base)
       12449 : 296057.dasm (112.84 % of base)
       11871 : 199391.dasm (62.08 % of base)
       11801 : 198975.dasm (62.41 % of base)
       10856 : 54761.dasm (95.23 % of base)
        9424 : 92691.dasm (83.26 % of base)
        9367 : 266947.dasm (94.78 % of base)
        9123 : 176383.dasm (89.00 % of base)
        8954 : 53958.dasm (81.30 % of base)
        8953 : 114590.dasm (96.16 % of base)
        8662 : 23183.dasm (81.14 % of base)
        8620 : 6478.dasm (92.70 % of base)
        8402 : 93707.dasm (73.40 % of base)
        8224 : 111298.dasm (91.90 % of base)

Top file improvements (bytes):
       -1193 : 50569.dasm (-9.14 % of base)
       -1193 : 44919.dasm (-9.14 % of base)
        -833 : 69024.dasm (-11.41 % of base)
        -388 : 68372.dasm (-5.52 % of base)
        -246 : 143690.dasm (-5.16 % of base)
        -177 : 275292.dasm (-25.62 % of base)
        -164 : 3930.dasm (-1.96 % of base)
        -160 : 112627.dasm (-9.57 % of base)
        -155 : 230305.dasm (-4.44 % of base)
        -134 : 277129.dasm (-17.94 % of base)
        -131 : 277130.dasm (-13.95 % of base)
        -122 : 281767.dasm (-17.40 % of base)
        -114 : 272649.dasm (-10.80 % of base)
        -114 : 272805.dasm (-10.69 % of base)
         -88 : 103261.dasm (-1.49 % of base)
         -74 : 273126.dasm (-12.67 % of base)
         -64 : 281722.dasm (-17.83 % of base)
         -64 : 281724.dasm (-17.83 % of base)
         -64 : 281718.dasm (-18.18 % of base)
         -58 : 174988.dasm (-13.81 % of base)

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

Top method regressions (bytes):
       24724 (36.95 % of base) : 113327.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
       24656 (37.71 % of base) : 113606.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
       19555 (68.01 % of base) : 59308.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       16047 (88.58 % of base) : 175002.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
       14748 (110.32 % of base) : 7121.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       14599 (109.48 % of base) : 49317.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       14570 (109.48 % of base) : 44239.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12449 (112.84 % of base) : 296057.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
       11871 (62.08 % of base) : 199391.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       11801 (62.41 % of base) : 198975.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       10856 (95.23 % of base) : 54761.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9424 (83.26 % of base) : 92691.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        9367 (94.78 % of base) : 266947.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        9123 (89.00 % of base) : 176383.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
        8954 (81.30 % of base) : 53958.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
        8953 (96.16 % of base) : 114590.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test4():ubyte (FullOpts)
        8662 (81.14 % of base) : 23183.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+ProjectIndex+<CreateIndexAsync>d__8:MoveNext():this (FullOpts)
        8620 (92.70 % of base) : 6478.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8402 (73.40 % of base) : 93707.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        8224 (91.90 % of base) : 111298.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array010.array010.Test:MainMethod():int (FullOpts)

Top method improvements (bytes):
       -1193 (-9.14 % of base) : 50569.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
       -1193 (-9.14 % of base) : 44919.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -833 (-11.41 % of base) : 69024.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[int]:ComparingWithOtherSets(int):this (FullOpts)
        -388 (-5.52 % of base) : 68372.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
        -246 (-5.16 % of base) : 143690.dasm - System.SpanTests.SpanTests:TestMatchIndexOfAny_ManyString() (FullOpts)
        -177 (-25.62 % of base) : 275292.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2615_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -164 (-1.96 % of base) : 3930.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -160 (-9.57 % of base) : 112627.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test4a():ubyte (FullOpts)
        -155 (-4.44 % of base) : 230305.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
        -134 (-17.94 % of base) : 277129.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2790_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -131 (-13.95 % of base) : 277130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2791_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -122 (-17.40 % of base) : 281767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3749_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -114 (-10.80 % of base) : 272649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex713_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -114 (-10.69 % of base) : 272805.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex829_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -88 (-1.49 % of base) : 103261.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.property.regproperty.genclass.genclass012.genclass012.Test:MainMethod():int (FullOpts)
         -74 (-12.67 % of base) : 273126.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1268_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-18.18 % of base) : 281718.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3705_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-17.83 % of base) : 281722.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3708_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-17.83 % of base) : 281724.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3710_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-7.82 % of base) : 200925.dasm - System.Tests.ArraySegment_Tests:IList_IndexOf() (FullOpts)

Top method regressions (percentages):
         206 (137.33 % of base) : 48300.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         206 (137.33 % of base) : 45487.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         206 (137.33 % of base) : 9322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        1450 (127.08 % of base) : 80016.dasm - System.ComponentModel.DataAnnotations.Tests.AssociatedMetadataTypeTypeDescriptionProviderTests:GetTypeDescriptorGetAttributes_WithAssociatedMetadataType_ReturnsExpected():this (FullOpts)
         894 (126.63 % of base) : 175642.dasm - System.Xml.XmlWriterApiTests.TCIndent:indent_29(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
        2253 (125.66 % of base) : 227877.dasm - System.Security.Cryptography.Xml.Tests.Reference_ArbitraryElements:ExtraAttributes() (FullOpts)
         740 (118.97 % of base) : 83472.dasm - Tests.Integration.CompositionContainerAttributedModelCycleTests:AssertCycle(System.Type[]) (FullOpts)
          28 (116.67 % of base) : 191533.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
        1424 (116.63 % of base) : 267371.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
         665 (115.85 % of base) : 130417.dasm - System.IO.Tests.StringWriterTests:WriteWithLargeIndex() (FullOpts)
         229 (115.66 % of base) : 102110.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         971 (115.18 % of base) : 192456.dasm - System.Numerics.Tests.op_modulusTest:RunRemainderTestsPositive() (FullOpts)
         971 (115.18 % of base) : 191769.dasm - System.Numerics.Tests.remainderTest:RunRemainderPositive() (FullOpts)
         678 (115.11 % of base) : 130463.dasm - System.IO.Tests.StringWriterTests:WriteWithLargeCount() (FullOpts)
        1426 (115.00 % of base) : 181495.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:LinkChildToParentNamespace(System.Collections.Generic.Dictionary`2[System.String,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder],System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder,byref):this (FullOpts)
        2985 (114.50 % of base) : 37771.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
         182 (113.75 % of base) : 193827.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
        1509 (113.46 % of base) : 30659.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDisjunctivePattern(uint,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.PatternSyntax:this (FullOpts)
        3037 (112.90 % of base) : 92191.dasm - System.Data.DataTable:SerializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
       12449 (112.84 % of base) : 296057.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)

Top method improvements (percentages):
        -177 (-25.62 % of base) : 275292.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2615_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-18.18 % of base) : 281718.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3705_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -134 (-17.94 % of base) : 277129.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2790_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-17.83 % of base) : 281722.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3708_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-17.83 % of base) : 281724.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3710_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -122 (-17.40 % of base) : 281767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3749_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -131 (-13.95 % of base) : 277130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2791_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-13.81 % of base) : 174988.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -74 (-12.67 % of base) : 273126.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1268_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -53 (-11.73 % of base) : 281761.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3743_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -55 (-11.55 % of base) : 272530.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex573_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -55 (-11.55 % of base) : 272531.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex575_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -55 (-11.55 % of base) : 272534.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex579_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -55 (-11.55 % of base) : 272537.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex582_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -833 (-11.41 % of base) : 69024.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[int]:ComparingWithOtherSets(int):this (FullOpts)
         -37 (-11.38 % of base) : 274855.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -29 (-11.15 % of base) : 225365.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
         -31 (-10.88 % of base) : 214504.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
        -114 (-10.80 % of base) : 272649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex713_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -114 (-10.69 % of base) : 272805.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex829_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 12750565 (overridden on cmd)
Total bytes of diff: 14619605 (overridden on cmd)
Total bytes of delta: 1869040 (14.66 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       14460 : 20233.dasm (110.09 % of base)
       11364 : 25096.dasm (95.95 % of base)
       10960 : 23929.dasm (95.75 % of base)
        8799 : 19144.dasm (92.85 % of base)
        7075 : 1496.dasm (95.09 % of base)
        6790 : 31598.dasm (73.18 % of base)
        6426 : 24432.dasm (81.33 % of base)
        6322 : 20172.dasm (83.46 % of base)
        6309 : 18104.dasm (85.71 % of base)
        6179 : 8739.dasm (76.95 % of base)
        6141 : 13279.dasm (81.67 % of base)
        6086 : 20895.dasm (92.51 % of base)
        5815 : 20629.dasm (101.91 % of base)
        5514 : 5099.dasm (97.49 % of base)
        5135 : 24202.dasm (59.16 % of base)
        5018 : 1323.dasm (76.70 % of base)
        4954 : 1717.dasm (92.60 % of base)
        4786 : 17875.dasm (110.20 % of base)
        4776 : 10423.dasm (82.76 % of base)
        4707 : 1637.dasm (128.82 % of base)

Top file improvements (bytes):
        -167 : 29610.dasm (-1.99 % of base)
         -77 : 619.dasm (-9.24 % of base)
         -34 : 1182.dasm (-31.19 % of base)
         -20 : 21921.dasm (-1.11 % of base)
         -19 : 22886.dasm (-10.80 % of base)
         -16 : 32049.dasm (-8.00 % of base)
         -13 : 2286.dasm (-2.10 % of base)
         -13 : 12939.dasm (-3.28 % of base)
         -11 : 21237.dasm (-0.93 % of base)
          -4 : 18976.dasm (-0.78 % of base)
          -3 : 13389.dasm (-0.36 % of base)
          -3 : 30601.dasm (-0.28 % of base)
          -3 : 11533.dasm (-1.37 % of base)
          -2 : 112.dasm (-1.79 % of base)
          -2 : 214.dasm (-1.45 % of base)
          -2 : 4615.dasm (-1.69 % of base)
          -2 : 3158.dasm (-1.77 % of base)
          -2 : 13144.dasm (-1.79 % of base)
          -2 : 14829.dasm (-1.79 % of base)
          -2 : 23527.dasm (-1.56 % of base)

80 total files with Code Size differences (20 improved, 60 regressed), 7 unchanged.

Top method regressions (bytes):
       14460 (110.09 % of base) : 20233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11364 (95.95 % of base) : 25096.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10960 (95.75 % of base) : 23929.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        8799 (92.85 % of base) : 19144.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        7075 (95.09 % of base) : 1496.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        6790 (73.18 % of base) : 31598.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6426 (81.33 % of base) : 24432.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
        6322 (83.46 % of base) : 20172.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        6309 (85.71 % of base) : 18104.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6179 (76.95 % of base) : 8739.dasm - FSharp.Compiler.CheckExpressions:TcLinearExprs(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]]]]],FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv],System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
        6141 (81.67 % of base) : 13279.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
        6086 (92.51 % of base) : 20895.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        5815 (101.91 % of base) : 20629.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5514 (97.49 % of base) : 5099.dasm - FSharp.Compiler.LexFilter:scanAhead@1017(FSharp.Compiler.LexFilter+LexFilterImpl,ubyte,Internal.Utilities.Text.Lexing.Position,Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.LexFilter+TokenTup,ubyte]]],int):ubyte (FullOpts)
        5135 (59.16 % of base) : 24202.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
        5018 (76.70 % of base) : 1323.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        4954 (92.60 % of base) : 1717.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        4786 (110.20 % of base) : 17875.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseSwitchExpressionArms():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SwitchExpressionArmSyntax]:this (FullOpts)
        4776 (82.76 % of base) : 10423.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckEntityDefn$cont@2269(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.TypedTree+Entity,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Core.Unit) (FullOpts)
        4707 (128.82 % of base) : 1637.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)

Top method improvements (bytes):
        -167 (-1.99 % of base) : 29610.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -77 (-9.24 % of base) : 619.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -34 (-31.19 % of base) : 1182.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -20 (-1.11 % of base) : 21921.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
         -19 (-10.80 % of base) : 22886.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -16 (-8.00 % of base) : 32049.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -13 (-2.10 % of base) : 2286.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -13 (-3.28 % of base) : 12939.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -11 (-0.93 % of base) : 21237.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:FindMethodSymbolInSuperType(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle):System.__Canon:this (FullOpts)
          -4 (-0.78 % of base) : 18976.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
          -3 (-0.36 % of base) : 13389.dasm - Microsoft.ML.Data.PredictedLabelScorerBase+BindingsImpl+<GetAnnotationTypesCore>d__13:MoveNext():ubyte:this (FullOpts)
          -3 (-0.28 % of base) : 30601.dasm - System.Management.Automation.LanguagePrimitives:FigureParseConversion(System.Type,System.Type):System.Management.Automation.LanguagePrimitives+PSConverter`1[System.Object] (FullOpts)
          -3 (-1.37 % of base) : 11533.dasm - System.Reflection.CustomAttribute:IsDefined(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):ubyte (FullOpts)
          -2 (-1.79 % of base) : 13144.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 214.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 112.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.69 % of base) : 4615.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.77 % of base) : 3158.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.56 % of base) : 23527.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 14829.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
         206 (137.33 % of base) : 16537.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        4707 (128.82 % of base) : 1637.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        3203 (121.83 % of base) : 1168.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
        1482 (111.60 % of base) : 17190.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDisjunctivePattern(uint,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.PatternSyntax:this (FullOpts)
         153 (110.87 % of base) : 15582.dasm - Microsoft.ML.Transforms.MinMaxSngAggregator:Finish():this (FullOpts)
         181 (110.37 % of base) : 11405.dasm - System.Diagnostics.Process:ParseArgumentsIntoList(System.String,System.Collections.Generic.List`1[System.String]) (FullOpts)
        4786 (110.20 % of base) : 17875.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseSwitchExpressionArms():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SwitchExpressionArmSyntax]:this (FullOpts)
       14460 (110.09 % of base) : 20233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        4101 (110.06 % of base) : 1266.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        2958 (109.68 % of base) : 23441.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindRegularCSharpFieldInitializers(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundInitializer],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref) (FullOpts)
        1525 (108.93 % of base) : 27915.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodToStateMachineRewriter:GenerateHoistedLocalsCleanup(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.StateMachineFieldSymbol]):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
          99 (106.45 % of base) : 283.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (FullOpts)
        1049 (105.96 % of base) : 27591.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedParameterSymbol:DeriveParameters(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (FullOpts)
        3427 (105.51 % of base) : 23276.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxExtensions:VisitRankSpecifiers[System.ValueTuple`2[System.__Canon,System.__Canon]](Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,System.Action`2[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon]],byref) (FullOpts)
        1436 (105.12 % of base) : 18454.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
         370 (104.82 % of base) : 14306.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long,System.String):this (FullOpts)
        2167 (104.48 % of base) : 20439.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
        1724 (104.11 % of base) : 17212.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseConjunctivePattern(uint,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.PatternSyntax:this (FullOpts)
        4337 (103.56 % of base) : 16418.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        1758 (103.23 % of base) : 25085.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FailRemainingInferences(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -34 (-31.19 % of base) : 1182.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -19 (-10.80 % of base) : 22886.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -77 (-9.24 % of base) : 619.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-8.00 % of base) : 32049.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -13 (-3.28 % of base) : 12939.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -13 (-2.10 % of base) : 2286.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
        -167 (-1.99 % of base) : 29610.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 13144.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 112.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.79 % of base) : 14829.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.77 % of base) : 3158.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.69 % of base) : 4615.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.56 % of base) : 23527.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 214.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -3 (-1.37 % of base) : 11533.dasm - System.Reflection.CustomAttribute:IsDefined(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):ubyte (FullOpts)
         -20 (-1.11 % of base) : 21921.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
         -11 (-0.93 % of base) : 21237.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:FindMethodSymbolInSuperType(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle):System.__Canon:this (FullOpts)
          -4 (-0.78 % of base) : 18976.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
          -3 (-0.36 % of base) : 13389.dasm - Microsoft.ML.Data.PredictedLabelScorerBase+BindingsImpl+<GetAnnotationTypesCore>d__13:MoveNext():ubyte:this (FullOpts)
          -3 (-0.28 % of base) : 30601.dasm - System.Management.Automation.LanguagePrimitives:FigureParseConversion(System.Type,System.Type):System.Management.Automation.LanguagePrimitives+PSConverter`1[System.Object] (FullOpts)


smoke_tests.nativeaot.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: 4175394 (overridden on cmd)
Total bytes of diff: 4771038 (overridden on cmd)
Total bytes of delta: 595644 (14.27 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        6462 : 14832.dasm (76.46 % of base)
        5209 : 4190.dasm (76.58 % of base)
        5209 : 1181.dasm (76.57 % of base)
        5209 : 21915.dasm (76.51 % of base)
        5209 : 25729.dasm (76.51 % of base)
        3883 : 5581.dasm (90.22 % of base)
        3883 : 24338.dasm (90.16 % of base)
        2865 : 7044.dasm (102.18 % of base)
        2329 : 3325.dasm (84.05 % of base)
        2287 : 25152.dasm (80.64 % of base)
        2287 : 23897.dasm (80.30 % of base)
        2287 : 554.dasm (80.64 % of base)
        2287 : 21334.dasm (80.64 % of base)
        2162 : 15248.dasm (57.00 % of base)
        2082 : 1556.dasm (96.12 % of base)
        2082 : 22345.dasm (96.12 % of base)
        2082 : 26152.dasm (96.12 % of base)
        2082 : 4592.dasm (96.12 % of base)
        1916 : 994.dasm (80.44 % of base)
        1916 : 3992.dasm (80.54 % of base)

Top file improvements (bytes):
          -2 : 1793.dasm (-1.38 % of base)
          -2 : 23404.dasm (-0.91 % of base)
          -2 : 2607.dasm (-0.91 % of base)
          -2 : 4702.dasm (-1.80 % of base)
          -2 : 8455.dasm (-2.06 % of base)
          -2 : 16031.dasm (-1.80 % of base)
          -2 : 16473.dasm (-1.80 % of base)
          -2 : 3718.dasm (-1.46 % of base)
          -2 : 22587.dasm (-1.38 % of base)
          -2 : 26409.dasm (-1.38 % of base)
          -2 : 27214.dasm (-0.91 % of base)
          -1 : 10135.dasm (-0.19 % of base)

78 total files with Code Size differences (12 improved, 66 regressed), 3 unchanged.

Top method regressions (bytes):
        6462 (76.46 % of base) : 14832.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        5209 (76.58 % of base) : 4190.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        5209 (76.57 % of base) : 1181.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        5209 (76.51 % of base) : 21915.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        5209 (76.51 % of base) : 25729.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        3883 (90.22 % of base) : 5581.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        3883 (90.16 % of base) : 24338.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        2865 (102.18 % of base) : 7044.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
        2329 (84.05 % of base) : 3325.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2287 (80.64 % of base) : 25152.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2287 (80.30 % of base) : 23897.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2287 (80.64 % of base) : 554.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2287 (80.64 % of base) : 21334.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2162 (57.00 % of base) : 15248.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        2082 (96.12 % of base) : 1556.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 22345.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 26152.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 4592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1916 (80.44 % of base) : 994.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (FullOpts)
        1916 (80.54 % of base) : 3992.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (FullOpts)

Top method improvements (bytes):
          -2 (-2.06 % of base) : 8455.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 4702.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.46 % of base) : 3718.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 1793.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 22587.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 26409.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 23404.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 2607.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 27214.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 16031.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 16473.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -1 (-0.19 % of base) : 10135.dasm - System.Dynamic.Utils.TypeUtils:StrictHasReferenceConversionTo(System.Type,System.Type,ubyte):ubyte (FullOpts)

Top method regressions (percentages):
         179 (110.49 % of base) : 5509.dasm - System.Diagnostics.Process:ParseArgumentsIntoList(System.String,System.Collections.Generic.List`1[System.String]) (FullOpts)
        2865 (102.18 % of base) : 7044.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
         365 (101.67 % of base) : 1582.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
         365 (101.67 % of base) : 5153.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
         365 (101.67 % of base) : 22374.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
         365 (101.67 % of base) : 26186.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
          77 (97.47 % of base) : 15713.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (FullOpts)
        2082 (96.12 % of base) : 1556.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 22345.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 26152.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2082 (96.12 % of base) : 4592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
         121 (94.53 % of base) : 21583.dasm - Internal.Runtime.TypeLoader.NativeFormatModuleInfoEnumerator:MoveNext():ubyte:this (FullOpts)
         121 (94.53 % of base) : 25414.dasm - Internal.Runtime.TypeLoader.NativeFormatModuleInfoEnumerator:MoveNext():ubyte:this (FullOpts)
         121 (94.53 % of base) : 802.dasm - Internal.Runtime.TypeLoader.NativeFormatModuleInfoEnumerator:MoveNext():ubyte:this (FullOpts)
         121 (94.53 % of base) : 3805.dasm - Internal.Runtime.TypeLoader.NativeFormatModuleInfoEnumerator:MoveNext():ubyte:this (FullOpts)
          85 (93.41 % of base) : 1887.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (93.41 % of base) : 26495.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (93.41 % of base) : 22683.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (93.41 % of base) : 3922.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
         980 (92.54 % of base) : 21236.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)

Top method improvements (percentages):
          -2 (-2.06 % of base) : 8455.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 4702.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 16031.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.80 % of base) : 16473.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.46 % of base) : 3718.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 1793.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 22587.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.38 % of base) : 26409.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 23404.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 2607.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -2 (-0.91 % of base) : 27214.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
          -1 (-0.19 % of base) : 10135.dasm - System.Dynamic.Utils.TypeUtils:StrictHasReferenceConversionTo(System.Type,System.Type,ubyte):ubyte (FullOpts)



osx arm64

Diffs are based on 2,228,167 contexts (927,360 MinOpts, 1,300,807 FullOpts).

MISSED contexts: base: 6,095 (0.27%), diff: 7,850 (0.35%)

Overall (+61,409,324 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,173,472 +4,525,964
benchmarks.run_tiered.osx.arm64.checked.mch 15,534,704 +904,924
coreclr_tests.run.osx.arm64.checked.mch 482,896,688 +7,075,892
libraries.crossgen2.osx.arm64.checked.mch 55,476,760 +4,869,464
libraries.pmi.osx.arm64.checked.mch 78,203,768 +7,494,284
libraries_tests.run.osx.arm64.Release.mch 310,283,060 +24,468,928
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 160,885,512 +10,211,364
realworld.run.osx.arm64.checked.mch 14,574,520 +1,858,504

FullOpts (+61,409,324 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,766,124 +4,525,964
benchmarks.run_tiered.osx.arm64.checked.mch 4,035,456 +904,924
coreclr_tests.run.osx.arm64.checked.mch 151,603,736 +7,075,892
libraries.crossgen2.osx.arm64.checked.mch 55,475,132 +4,869,464
libraries.pmi.osx.arm64.checked.mch 78,082,640 +7,494,284
libraries_tests.run.osx.arm64.Release.mch 108,963,876 +24,468,928
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 147,748,988 +10,211,364
realworld.run.osx.arm64.checked.mch 14,010,564 +1,858,504

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

-32 (-5.88%) : 57618.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,55 +9,56 @@ ; 4 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 8.45) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 7, 6 ) byref -> x20 single-def
+; V00 this [V00,T00] ( 9, 8.37) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 7, 6 ) byref -> x20 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T05] ( 4, 4 ) int -> x22 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> x23 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T10] ( 4, 2 ) ref -> x21 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 12.28) int -> x22 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T11] ( 3, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T09] ( 5, 2.10) int -> x23 "Inline stloc first use temp" -; V14 tmp10 [V14,T15] ( 4, 1.90) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T06] ( 4, 3.41) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T09] ( 4, 2.04) int -> x22 "Inline stloc first use temp" +; V14 tmp10 [V14,T15] ( 4, 1.61) ref -> x23 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.26) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T19] ( 4, 0.95) ref -> x0 "guarded devirt return temp"
+; V17 tmp13 [V17,T20] ( 4, 0.64) ref -> x0 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V22 tmp18 [V22,T08] ( 4, 2.16) int -> x23 "Inline stloc first use temp" -;* V23 tmp19 [V23,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V24 tmp20 [V24,T04] ( 5, 4.69) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V22 tmp18 [V22,T08] ( 4, 2.16) int -> x22 "Inline stloc first use temp" +;* V23 tmp19 [V23,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V24 tmp20 [V24,T03] ( 5, 4.69) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V26 tmp22 [V26,T20] ( 7, 0.75) ref -> x0 "guarded devirt return temp"
+; V26 tmp22 [V26,T18] ( 7, 0.75) ref -> x0 "guarded devirt return temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax>
-; V28 tmp24 [V28,T21] ( 4, 0.01) int -> x23 "Inline stloc first use temp" -;* V29 tmp25 [V29,T17] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
+; V28 tmp24 [V28,T23] ( 4, 0.01) int -> x22 "Inline stloc first use temp" +;* V29 tmp25 [V29,T16] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
; V30 tmp26 [V30,T12] ( 2, 2 ) ref -> x21 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T13] ( 2, 2 ) int -> x23 single-def "field V07._index (fldOffset=0x10)" P-INDEP -; V32 tmp28 [V32,T14] ( 2, 2 ) int -> x22 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP -; V33 cse0 [V33,T16] ( 3, 1.11) long -> x25 "CSE - moderate"
+; V31 tmp27 [V31,T13] ( 2, 2 ) int -> x22 single-def "field V07._index (fldOffset=0x10)" P-INDEP +; V32 tmp28 [V32,T14] ( 2, 2 ) int -> x23 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP +; V33 cse0 [V33,T21] ( 2, 0.28) long -> x2 "CSE - conservative" +; V34 cse1 [V34,T19] ( 3, 0.75) long -> x24 "CSE - moderate" +; V35 cse2 [V35,T22] ( 2, 0.07) int -> x22 "CSE - conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M23983_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x8 ; byrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M23983_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x18] ; gcrRegs +[x0] @@ -66,14 +67,13 @@ G_M23983_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M23983_IG24
+ bne G_M23983_IG22
ldr x21, [x0, #0x18] ; gcrRegs +[x21]
- cbz x21, G_M23983_IG25
+ cbz x21, G_M23983_IG23
;; size=36 bbWeight=1 PerfScore 13.00 G_M23983_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- mov w22, #1
mov x0, x19 ; gcrRegs +[x0] mov w1, #1 @@ -82,75 +82,30 @@ G_M23983_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M23983_IG27 - mov w23, wzr - ldr x24, [x19, #0x18] - ; gcrRegs +[x24] - ;; size=44 bbWeight=1 PerfScore 11.50 -G_M23983_IG04: ; bbWeight=1.08, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - sub w22, w22, #1
+ cbnz x0, G_M23983_IG25 + mov w22, wzr + ldr x23, [x19, #0x18] + ; gcrRegs +[x23]
mov x0, x19
- ; gcrRegs +[x0] - mov w1, w22
+ mov w1, wzr
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M23983_IG11 - ;; size=36 bbWeight=1.08 PerfScore 8.63 -G_M23983_IG05: ; bbWeight=0.45, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - ldr x25, [x24] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - cmp x25, x0 - bne G_M23983_IG14 - ;; size=24 bbWeight=0.45 PerfScore 2.71 -G_M23983_IG06: ; bbWeight=0.24, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w22 - movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ;; size=28 bbWeight=0.24 PerfScore 1.58 -G_M23983_IG07: ; bbWeight=0.45, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - cbnz x0, G_M23983_IG10 - ;; size=4 bbWeight=0.45 PerfScore 0.45 -G_M23983_IG08: ; bbWeight=1.45, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - cmp w22, #0 - bgt G_M23983_IG04 - ;; size=8 bbWeight=1.45 PerfScore 2.18 -G_M23983_IG09: ; bbWeight=0.37, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] - ldr w0, [x19, #0x20] - add w22, w0, w23 - b G_M23983_IG12 - ;; size=12 bbWeight=0.37 PerfScore 1.67 -G_M23983_IG10: ; bbWeight=0.05, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs +[x0 x24] - ldr w0, [x0, #0x08] - ; gcrRegs -[x0] - add w23, w23, w0 - b G_M23983_IG08 - ;; size=12 bbWeight=0.05 PerfScore 0.23 -G_M23983_IG11: ; bbWeight=0.63, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] +[x0]
+ cbz x0, G_M23983_IG07 + ;; size=72 bbWeight=1 PerfScore 18.50 +G_M23983_IG04: ; bbWeight=0.63, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x23]
ldr w1, [x0, #0x20] ldr x0, [x0, #0x18] ldr w0, [x0, #0x08] ; gcrRegs -[x0] add w0, w1, w0
- add w22, w0, w23
+ add w23, w0, w22
;; size=20 bbWeight=0.63 PerfScore 6.28
-G_M23983_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz - mov w23, wzr
+G_M23983_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz + mov w22, wzr
ldr x0, [x19, #0x18] ; gcrRegs +[x0] ldr x1, [x0] @@ -158,26 +113,44 @@ G_M23983_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M23983_IG23
+ bne G_M23983_IG20
;; size=32 bbWeight=1 PerfScore 9.50
-G_M23983_IG13: ; bbWeight=0.24, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - b G_M23983_IG18
+G_M23983_IG06: ; bbWeight=0.24, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + b G_M23983_IG14
;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M23983_IG14: ; bbWeight=0.21, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0] +[x24] - mov x0, x24
+G_M23983_IG07: ; bbWeight=0.30, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs -[x0] +[x23] + ldr x24, [x23] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + cmp x24, x0 + bne G_M23983_IG19 + ;; size=24 bbWeight=0.30 PerfScore 1.83 +G_M23983_IG08: ; bbWeight=0.16, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref + mov x0, x23
; gcrRegs +[x0]
- mov w1, w22 - ldr x2, [x25, #0x50] - ldr x2, [x2, #0x20]
+ mov w1, wzr + movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2]
blr x2
- b G_M23983_IG07 - ;; size=24 bbWeight=0.21 PerfScore 1.87 -G_M23983_IG15: ; bbWeight=0.16, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0 x24] - mov w23, #1
+ ; gcrRegs -[x23] + ;; size=28 bbWeight=0.16 PerfScore 1.07 +G_M23983_IG09: ; bbWeight=0.30, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz + cbnz x0, G_M23983_IG21 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M23983_IG10: ; bbWeight=0.37, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x0] + ldr w0, [x19, #0x20] + add w23, w0, w22 + b G_M23983_IG05 + ;; size=12 bbWeight=0.37 PerfScore 1.67 +G_M23983_IG11: ; bbWeight=0.16, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + mov w22, #1
;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M23983_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
+G_M23983_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
mov x14, x20 ; byrRegs +[x14] mov x15, x19 @@ -192,17 +165,16 @@ G_M23983_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15 x21] ...

-32 (-5.88%) : 57623.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)

@@ -9,55 +9,56 @@ ; 4 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 8.45) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> -; V01 RetBuf [V01,T02] ( 7, 6 ) byref -> x20 single-def
+; V00 this [V00,T00] ( 9, 8.37) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax> +; V01 RetBuf [V01,T01] ( 7, 6 ) byref -> x20 single-def
; V02 loc0 [V02,T07] ( 5, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode> ;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T05] ( 4, 4 ) int -> x22 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 5, 6 ) ref -> x0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T04] ( 4, 4 ) int -> x23 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList> ; V08 tmp4 [V08,T10] ( 4, 2 ) ref -> x21 "guarded devirt return temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MethodDeclarationSyntax> ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 12.28) int -> x22 "Inlining Arg"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V12 tmp8 [V12,T11] ( 3, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T09] ( 5, 2.10) int -> x23 "Inline stloc first use temp" -; V14 tmp10 [V14,T15] ( 4, 1.90) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> -; V15 tmp11 [V15,T06] ( 4, 3.41) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V13 tmp9 [V13,T09] ( 4, 2.04) int -> x22 "Inline stloc first use temp" +; V14 tmp10 [V14,T15] ( 4, 1.61) ref -> x23 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode> +; V15 tmp11 [V15,T06] ( 4, 3.26) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V17 tmp13 [V17,T19] ( 4, 0.95) ref -> x0 "guarded devirt return temp"
+; V17 tmp13 [V17,T20] ( 4, 0.64) ref -> x0 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax> ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V22 tmp18 [V22,T08] ( 4, 2.16) int -> x23 "Inline stloc first use temp" -;* V23 tmp19 [V23,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V24 tmp20 [V24,T04] ( 5, 4.69) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V22 tmp18 [V22,T08] ( 4, 2.16) int -> x22 "Inline stloc first use temp" +;* V23 tmp19 [V23,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V24 tmp20 [V24,T03] ( 5, 4.69) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V26 tmp22 [V26,T20] ( 7, 0.75) ref -> x0 "guarded devirt return temp"
+; V26 tmp22 [V26,T18] ( 7, 0.75) ref -> x0 "guarded devirt return temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax>
-; V28 tmp24 [V28,T21] ( 4, 0.01) int -> x23 "Inline stloc first use temp" -;* V29 tmp25 [V29,T17] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
+; V28 tmp24 [V28,T23] ( 4, 0.01) int -> x22 "Inline stloc first use temp" +;* V29 tmp25 [V29,T16] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
; V30 tmp26 [V30,T12] ( 2, 2 ) ref -> x21 single-def "field V07.<Node>k__BackingField (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T13] ( 2, 2 ) int -> x23 single-def "field V07._index (fldOffset=0x10)" P-INDEP -; V32 tmp28 [V32,T14] ( 2, 2 ) int -> x22 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP -; V33 cse0 [V33,T16] ( 3, 1.11) long -> x25 "CSE - moderate"
+; V31 tmp27 [V31,T13] ( 2, 2 ) int -> x22 single-def "field V07._index (fldOffset=0x10)" P-INDEP +; V32 tmp28 [V32,T14] ( 2, 2 ) int -> x23 single-def "field V07.<Position>k__BackingField (fldOffset=0x14)" P-INDEP +; V33 cse0 [V33,T21] ( 2, 0.28) long -> x2 "CSE - conservative" +; V34 cse1 [V34,T19] ( 3, 0.75) long -> x24 "CSE - moderate" +; V35 cse2 [V35,T22] ( 2, 0.07) int -> x22 "CSE - conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M57630_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x8 ; byrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M57630_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x18] ; gcrRegs +[x0] @@ -66,14 +67,13 @@ G_M57630_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57630_IG24
+ bne G_M57630_IG22
ldr x21, [x0, #0x18] ; gcrRegs +[x21]
- cbz x21, G_M57630_IG25
+ cbz x21, G_M57630_IG23
;; size=36 bbWeight=1 PerfScore 13.00 G_M57630_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs -[x0]
- mov w22, #1
mov x0, x19 ; gcrRegs +[x0] mov w1, #1 @@ -82,75 +82,30 @@ G_M57630_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M57630_IG27 - mov w23, wzr - ldr x24, [x19, #0x18] - ; gcrRegs +[x24] - ;; size=44 bbWeight=1 PerfScore 11.50 -G_M57630_IG04: ; bbWeight=1.08, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - sub w22, w22, #1
+ cbnz x0, G_M57630_IG25 + mov w22, wzr + ldr x23, [x19, #0x18] + ; gcrRegs +[x23]
mov x0, x19
- ; gcrRegs +[x0] - mov w1, w22
+ mov w1, wzr
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetCachedSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- cbnz x0, G_M57630_IG11 - ;; size=36 bbWeight=1.08 PerfScore 8.63 -G_M57630_IG05: ; bbWeight=0.45, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - ldr x25, [x24] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - cmp x25, x0 - bne G_M57630_IG14 - ;; size=24 bbWeight=0.45 PerfScore 2.71 -G_M57630_IG06: ; bbWeight=0.24, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w22 - movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ;; size=28 bbWeight=0.24 PerfScore 1.58 -G_M57630_IG07: ; bbWeight=0.45, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - cbnz x0, G_M57630_IG10 - ;; size=4 bbWeight=0.45 PerfScore 0.45 -G_M57630_IG08: ; bbWeight=1.45, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref, isz - ; gcrRegs -[x0] - cmp w22, #0 - bgt G_M57630_IG04 - ;; size=8 bbWeight=1.45 PerfScore 2.18 -G_M57630_IG09: ; bbWeight=0.37, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] - ldr w0, [x19, #0x20] - add w22, w0, w23 - b G_M57630_IG12 - ;; size=12 bbWeight=0.37 PerfScore 1.67 -G_M57630_IG10: ; bbWeight=0.05, gcrefRegs=1280001 {x0 x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs +[x0 x24] - ldr w0, [x0, #0x08] - ; gcrRegs -[x0] - add w23, w23, w0 - b G_M57630_IG08 - ;; size=12 bbWeight=0.05 PerfScore 0.23 -G_M57630_IG11: ; bbWeight=0.63, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x24] +[x0]
+ cbz x0, G_M57630_IG07 + ;; size=72 bbWeight=1 PerfScore 18.50 +G_M57630_IG04: ; bbWeight=0.63, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x23]
ldr w1, [x0, #0x20] ldr x0, [x0, #0x18] ldr w0, [x0, #0x08] ; gcrRegs -[x0] add w0, w1, w0
- add w22, w0, w23
+ add w23, w0, w22
;; size=20 bbWeight=0.63 PerfScore 6.28
-G_M57630_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz - mov w23, wzr
+G_M57630_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref, isz + mov w22, wzr
ldr x0, [x19, #0x18] ; gcrRegs +[x0] ldr x1, [x0] @@ -158,26 +113,44 @@ G_M57630_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57630_IG23
+ bne G_M57630_IG20
;; size=32 bbWeight=1 PerfScore 9.50
-G_M57630_IG13: ; bbWeight=0.24, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref - b G_M57630_IG18
+G_M57630_IG06: ; bbWeight=0.24, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref + b G_M57630_IG14
;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M57630_IG14: ; bbWeight=0.21, gcrefRegs=1280000 {x19 x21 x24}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0] +[x24] - mov x0, x24
+G_M57630_IG07: ; bbWeight=0.30, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs -[x0] +[x23] + ldr x24, [x23] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + cmp x24, x0 + bne G_M57630_IG19 + ;; size=24 bbWeight=0.30 PerfScore 1.83 +G_M57630_IG08: ; bbWeight=0.16, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=100000 {x20}, byref + mov x0, x23
; gcrRegs +[x0]
- mov w1, w22 - ldr x2, [x25, #0x50] - ldr x2, [x2, #0x20]
+ mov w1, wzr + movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2]
blr x2
- b G_M57630_IG07 - ;; size=24 bbWeight=0.21 PerfScore 1.87 -G_M57630_IG15: ; bbWeight=0.16, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref - ; gcrRegs -[x0 x24] - mov w23, #1
+ ; gcrRegs -[x23] + ;; size=28 bbWeight=0.16 PerfScore 1.07 +G_M57630_IG09: ; bbWeight=0.30, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=100000 {x20}, byref, isz + cbnz x0, G_M57630_IG21 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M57630_IG10: ; bbWeight=0.37, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + ; gcrRegs -[x0] + ldr w0, [x19, #0x20] + add w23, w0, w22 + b G_M57630_IG05 + ;; size=12 bbWeight=0.37 PerfScore 1.67 +G_M57630_IG11: ; bbWeight=0.16, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref + mov w22, #1
;; size=4 bbWeight=0.16 PerfScore 0.08
-G_M57630_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
+G_M57630_IG12: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 {x20}, byref
mov x14, x20 ; byrRegs +[x14] mov x15, x19 @@ -192,17 +165,16 @@ G_M57630_IG16: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=100000 bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15 x21] ...

-16 (-3.23%) : 7988.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -19,28 +19,28 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport> ; V09 tmp2 [V09,T13] ( 2, 4 ) int -> x1 "impImportAndPushBox"
-; V10 tmp3 [V10,T14] ( 4, 2 ) int -> x28
+; V10 tmp3 [V10,T16] ( 4, 2 ) int -> x28
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T17] ( 2, 2 ) int -> x14
+; V13 tmp6 [V13,T18] ( 2, 2 ) int -> x14
; V14 tmp7 [V14,T04] ( 3, 6.00) ref -> x0 class-hnd exact single-def "dup spill" <int[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T18] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V17 tmp10 [V17,T19] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
; V18 tmp11 [V18,T11] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T15] ( 3, 2.00) ubyte -> x28 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5.00) int -> x1 "Inline stloc first use temp"
+; V21 tmp14 [V21,T17] ( 3, 2.00) ubyte -> x28 "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> x26 single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T09] ( 3, 3 ) long -> x25 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T19] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V29 cse0 [V29,T10] ( 4, 4 ) int -> x27 "CSE - aggressive" -; V30 cse1 [V30,T16] ( 2, 2.00) byref -> x0 hoist "CSE - moderate" -; V31 cse2 [V31,T20] ( 2, 2.00) int -> x2 hoist "CSE - moderate"
+; V28 tmp21 [V28,T20] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V29 cse0 [V29,T14] ( 2, 2.00) byref -> x14 "CSE - aggressive" +; V30 cse1 [V30,T15] ( 2, 2.00) int -> x15 "CSE - aggressive" +; V31 cse2 [V31,T10] ( 4, 4 ) int -> x27 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=60 bbWeight=1 PerfScore 10.50 G_M43134_IG02: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M43134_IG11
+ cbz x21, G_M43134_IG10
;; size=4 bbWeight=1 PerfScore 1.00 G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -96,13 +96,13 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe cmp x0, x25 cset x0, eq cmp w1, w0
- bne G_M43134_IG12
+ bne G_M43134_IG11
;; size=84 bbWeight=1 PerfScore 20.00 G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x13-x14]
- cbz w27, G_M43134_IG14
+ cbz w27, G_M43134_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -112,30 +112,24 @@ G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byre ; gcr arg pop 0 mov w14, #0xD1FFAB1E str w14, [x0, #0x10]
- mov w1, wzr - add x0, x0, #16
+ add x14, x0, #16 + ; byrRegs +[x14] + ldr w14, [x14] + ; byrRegs -[x14] + and w15, w20, #0xD1FFAB1E + cmp w14, w15 + beq G_M43134_IG06 + b G_M43134_IG12 + ;; size=52 bbWeight=1.00 PerfScore 11.00 +G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs +[x0] - and w2, w20, #0xD1FFAB1E - ;; size=40 bbWeight=1.00 PerfScore 6.00 -G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0001 {x0}, byref, isz - ldr w14, [x0, w1, UXTW #2] - cmp w14, w2 - beq G_M43134_IG07 - add w1, w1, #1 - cmp w1, #1 - bge G_M43134_IG13 - b G_M43134_IG06 - ;; size=28 bbWeight=1.00 PerfScore 7.50 -G_M43134_IG07: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref - ; byrRegs -[x0]
mov w28, #1 ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
tst w28, #255
- beq G_M43134_IG15
+ beq G_M43134_IG14
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43134_IG09: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
str w23, [x19, #0x2C] add x14, x19, #24 ; byrRegs +[x14] @@ -167,7 +161,7 @@ G_M43134_IG09: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe str xzr, [x19, #0x08] str xzr, [x19, #0x20] ;; size=72 bbWeight=1 PerfScore 13.50
-G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -176,7 +170,7 @@ G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22 x26] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -192,7 +186,7 @@ G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=468000 ; gcr arg pop 0 b G_M43134_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -207,16 +201,16 @@ G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 b G_M43134_IG04 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
- b G_M43134_IG08
+ b G_M43134_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
mov w28, #1 tst w28, #255
- bne G_M43134_IG09
+ bne G_M43134_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M43134_IG15: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -229,10 +223,10 @@ G_M43134_IG15: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M43134_IG09
+ b G_M43134_IG08
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 60, PerfScore 68.50, instruction count 124, allocated bytes for code 496 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 480, prolog size 60, PerfScore 66.00, instruction count 120, allocated bytes for code 480 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info: @@ -243,7 +237,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+54.55%) : 29950.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span1[ubyte],System.Span1[ubyte]) (Tier1)

@@ -10,15 +10,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 loc0 [V02,T04] ( 3,129 ) int -> x4 -; V03 loc1 [V03,T00] ( 8,386 ) int -> x5 -; V04 loc2 [V04,T02] ( 3,192 ) int -> x4
+; V02 loc0 [V02,T04] ( 3,128.98) int -> x5 +; V03 loc1 [V03,T00] ( 14,391.91) int -> x4 +; V04 loc2 [V04,T02] ( 6,194.95) int -> x6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 3,129 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V07 tmp2 [V07,T05] ( 3, 66 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V08 tmp3 [V08,T06] ( 2, 65 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V09 tmp4 [V09,T07] ( 2, 65 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V10 cse0 [V10,T01] ( 4,256 ) long -> x6 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 5,130.97) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V07 tmp2 [V07,T05] ( 4, 66.98) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V08 tmp3 [V08,T06] ( 3, 65.98) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp4 [V09,T07] ( 3, 65.98) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V10 cse0 [V10,T01] ( 4,256 ) long -> x7 "CSE - aggressive" +; V11 cse1 [V11,T08] ( 4, 3.94) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,37 +29,51 @@ G_M31293_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31293_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2]
- mov w4, #1 - sub w5, w1, #1 - tbnz w5, #31, G_M31293_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M31293_IG03: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz - cmp w5, w1 - bhs G_M31293_IG05 - mov w6, w5 - ldrb w7, [x0, x6] - add w4, w7, w4 - cmp w5, w3 - bhs G_M31293_IG05 - ldrb w7, [x2, x6] - add w4, w4, w7 - strb w4, [x0, x6] - asr w4, w4, #8 - sub w5, w5, #1 - tbz w5, #31, G_M31293_IG03
+ sub w4, w1, #1 + tbnz w4, #31, G_M31293_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M31293_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + cmp w4, w1 + bhs G_M31293_IG06 + mov w5, w4 + ldrb w6, [x0, x5] + add w6, w6, #1 + cmp w4, w3 + bhs G_M31293_IG06 + ldrb w7, [x2, x5] + add w6, w6, w7 + strb w6, [x0, x5] + asr w5, w6, #8 + sub w4, w4, #1 + tbnz w4, #31, G_M31293_IG05 + ;; size=52 bbWeight=0.98 PerfScore 13.78 +G_M31293_IG04: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + cmp w4, w1 + bhs G_M31293_IG06 + mov w7, w4 + ldrb w6, [x0, x7] + add w5, w6, w5 + cmp w4, w3 + bhs G_M31293_IG06 + ldrb w6, [x2, x7] + add w6, w5, w6 + strb w6, [x0, x7] + asr w5, w6, #8 + sub w4, w4, #1 + tbz w4, #31, G_M31293_IG04
;; size=52 bbWeight=64 PerfScore 896.00
-G_M31293_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M31293_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M31293_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M31293_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 901.50, instruction count 22, allocated bytes for code 88 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 914.78, instruction count 34, allocated bytes for code 136 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier1)
; ============================================================ Unwind Info: @@ -69,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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 (+54.55%) : 34886.dasm - IfStatements.IfStatements:AndArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M1409_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.04 G_M1409_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M1409_IG04
+ cmp w19, w1 + bge G_M1409_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M1409_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M1409_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M1409_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M1409_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M1409_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M1409_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M1409_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.91 +G_M1409_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.98, instruction count 22, allocated bytes for code 88 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

+48 (+54.55%) : 36583.dasm - IfStatements.IfStatements:OrArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20087_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.04 G_M20087_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M20087_IG04
+ cmp w19, w1 + bge G_M20087_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M20087_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M20087_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M20087_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M20087_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M20087_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M20087_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M20087_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.91 +G_M20087_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.98, instruction count 22, allocated bytes for code 88 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

benchmarks.run_tiered.osx.arm64.checked.mch

-12 (-4.41%) : 43072.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

-4 (-2.13%) : 20937.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> x14 -; V03 loc1 [V03,T02] ( 4, 8 ) int -> x15
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> x14 +; V03 loc1 [V03,T02] ( 4, 1 ) int -> x15
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -30,7 +31,7 @@ G_M27287_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w14, w15 bne G_M27287_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M27287_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w14, [x0, #0x14] ldr x15, [x0] ; gcrRegs +[x15] @@ -38,28 +39,26 @@ G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x15] cmp w14, w15 blo G_M27287_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x14, [x0] - ; gcrRegs +[x14] - ldr w14, [x14, #0x28] - ; gcrRegs -[x14] - add w14, w14, #1
+ add w14, w15, #1
str w14, [x0, #0x14] str xzr, [x0, #0x08] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M27287_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M27287_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x14, [x0]
+ ldr x15, [x0] + ; gcrRegs +[x15] + ldr x14, [x15, #0x10]
; gcrRegs +[x14]
- ldr x14, [x14, #0x10]
ldr w15, [x0, #0x14]
+ ; gcrRegs -[x15]
add w12, w15, #1 str w12, [x0, #0x14] ldr w12, [x14, #0x08] @@ -72,8 +71,9 @@ G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x14] ldr w15, [x14, #0x0C] cmn w15, #1
- blt G_M27287_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M27287_IG07 + b G_M27287_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M27287_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4001 {x0 x14}, byref ldr x15, [x14] ; gcrRegs +[x15] @@ -101,7 +101,7 @@ G_M27287_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 148.00, instruction count 47, allocated bytes for code 188 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 184, prolog size 8, PerfScore 34.12, instruction count 46, allocated bytes for code 184 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -112,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.13%) : 39319.dasm - System.Collections.Generic.Dictionary2+ValueCollection+Enumerator[System.ReadOnlyMemory1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> x13 -; V03 loc1 [V03,T02] ( 4, 8 ) int -> x14
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> x13 +; V03 loc1 [V03,T02] ( 4, 1 ) int -> x14
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> x13 class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> x13 class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> x14 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -30,7 +31,7 @@ G_M54618_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w13, w14 bne G_M54618_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M54618_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M54618_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w13, [x0, #0x08] ldr x14, [x0] ; gcrRegs +[x14] @@ -38,28 +39,26 @@ G_M54618_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x14] cmp w13, w14 blo G_M54618_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M54618_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x13, [x0] - ; gcrRegs +[x13] - ldr w13, [x13, #0x38] - ; gcrRegs -[x13] - add w13, w13, #1
+ add w13, w14, #1
str w13, [x0, #0x08] str xzr, [x0, #0x10] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M54618_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M54618_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M54618_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x13, [x0]
+ ldr x14, [x0] + ; gcrRegs +[x14] + ldr x13, [x14, #0x10]
; gcrRegs +[x13]
- ldr x13, [x13, #0x10]
ldr w14, [x0, #0x08]
+ ; gcrRegs -[x14]
add w12, w14, #1 str w12, [x0, #0x08] ldr w12, [x13, #0x08] @@ -72,8 +71,9 @@ G_M54618_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x13] ldr w14, [x13, #0x04] cmn w14, #1
- blt G_M54618_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M54618_IG07 + b G_M54618_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M54618_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2001 {x0 x13}, byref add x13, x13, #24 add x14, x0, #16 @@ -101,7 +101,7 @@ G_M54618_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 146.75, instruction count 47, allocated bytes for code 188 (MethodHash=f4d82aa5) for method System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 184, prolog size 8, PerfScore 32.88, instruction count 46, allocated bytes for code 184 (MethodHash=f4d82aa5) for method System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -112,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+53.33%) : 39519.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol+PackedFlags:SetIsVolatile(ubyte):this (Tier1)

@@ -8,13 +8,13 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 10.50) byref -> x0 this single-def
+; V00 this [V00,T01] ( 7, 11.50) byref -> x0 this single-def
; V01 arg1 [V01,T03] ( 3, 3 ) ubyte -> x1 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04,T04] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V05 tmp3 [V05,T00] ( 5, 20 ) int -> x1 "Inline stloc first use temp" -; V06 tmp4 [V06,T02] ( 3, 12 ) int -> x2 "Inline stloc first use temp"
+; V05 tmp3 [V05,T00] ( 10, 22.50) int -> x1 "Inline stloc first use temp" +; V06 tmp4 [V06,T02] ( 6, 13.50) int -> x2 "Inline stloc first use temp"
; ; Lcl frame size = 0 @@ -27,9 +27,17 @@ G_M50458_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre tst w1, #255 beq G_M50458_IG05 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M50458_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M50458_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrsb wzr, [x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
+ ldr w1, [x0] + orr w2, w1, #32 + cmp w2, w1 + beq G_M50458_IG05 + mov w3, w1 + casal w3, w2, [x0] + cmp w3, w1 + beq G_M50458_IG05 + ;; size=36 bbWeight=0.50 PerfScore 6.50
G_M50458_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w1, [x0] orr w2, w1, #32 @@ -46,7 +54,7 @@ G_M50458_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 46.50, instruction count 15, allocated bytes for code 60 (MethodHash=447b3ae5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol+PackedFlags:SetIsVolatile(ubyte):this (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 51.50, instruction count 23, allocated bytes for code 92 (MethodHash=447b3ae5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol+PackedFlags:SetIsVolatile(ubyte):this (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +65,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)

+48 (+54.55%) : 25029.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span1[ubyte],System.Span1[ubyte]) (Tier1)

@@ -9,15 +9,16 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 loc0 [V02,T04] ( 3, 9 ) int -> x4 -; V03 loc1 [V03,T00] ( 8, 26 ) int -> x5 -; V04 loc2 [V04,T02] ( 3, 12 ) int -> x4
+; V02 loc0 [V02,T04] ( 3, 9 ) int -> x5 +; V03 loc1 [V03,T00] ( 14, 32 ) int -> x4 +; V04 loc2 [V04,T02] ( 6, 15 ) int -> x6
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 3, 9 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V07 tmp2 [V07,T05] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V08 tmp3 [V08,T06] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V09 tmp4 [V09,T07] ( 2, 5 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V10 cse0 [V10,T01] ( 4, 16 ) long -> x6 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 5, 11 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V07 tmp2 [V07,T05] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V08 tmp3 [V08,T06] ( 3, 6 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp4 [V09,T07] ( 3, 6 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V10 cse0 [V10,T01] ( 4, 16 ) long -> x7 "CSE - aggressive" +; V11 cse1 [V11,T08] ( 4, 4 ) long -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -27,24 +28,36 @@ G_M31293_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31293_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz ; byrRegs +[x0 x2]
- mov w4, #1 - sub w5, w1, #1 - tbnz w5, #31, G_M31293_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00
+ sub w4, w1, #1 + tbnz w4, #31, G_M31293_IG04 + cmp w4, w1 + bhs G_M31293_IG05 + mov w5, w4 + ldrb w6, [x0, x5] + add w6, w6, #1 + cmp w4, w3 + bhs G_M31293_IG05 + ldrb w7, [x2, x5] + add w6, w6, w7 + strb w6, [x0, x5] + asr w5, w6, #8 + sub w4, w4, #1 + tbnz w4, #31, G_M31293_IG04 + ;; size=60 bbWeight=1 PerfScore 15.50
G_M31293_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- cmp w5, w1
+ cmp w4, w1
bhs G_M31293_IG05
- mov w6, w5 - ldrb w7, [x0, x6] - add w4, w7, w4 - cmp w5, w3
+ mov w7, w4 + ldrb w6, [x0, x7] + add w5, w6, w5 + cmp w4, w3
bhs G_M31293_IG05
- ldrb w7, [x2, x6] - add w4, w4, w7 - strb w4, [x0, x6] - asr w4, w4, #8 - sub w5, w5, #1 - tbz w5, #31, G_M31293_IG03
+ ldrb w6, [x2, x7] + add w6, w5, w6 + strb w6, [x0, x7] + asr w5, w6, #8 + sub w4, w4, #1 + tbz w4, #31, G_M31293_IG03
;; size=52 bbWeight=4 PerfScore 56.00 G_M31293_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0 x2] @@ -57,7 +70,7 @@ G_M31293_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 61.50, instruction count 22, allocated bytes for code 88 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 75.00, instruction count 34, allocated bytes for code 136 (MethodHash=218885c2) for method System.Security.Cryptography.Pkcs.Pkcs12Kdf:AddPlusOne(System.Span`1[ubyte],System.Span`1[ubyte]) (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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 (+54.55%) : 9399.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g_SumFrequencies|32(ushort[]):float (Tier1)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]> -; V01 loc0 [V01,T06] ( 4, 6 ) float -> d0
+; V00 arg0 [V00,T04] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]> +; V01 loc0 [V01,T06] ( 5, 6.50) float -> d0
; V02 loc1 [V02,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x1 -; V04 loc3 [V04,T01] ( 3, 10 ) ushort -> x3
+; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2 +; V04 loc3 [V04,T01] ( 6, 12.50) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]> @@ -20,8 +20,8 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 2, 5 ) byref -> x0 hoist "CSE - aggressive" -; V13 cse1 [V13,T02] ( 3, 6 ) int -> x2 "CSE - aggressive"
+; V12 cse0 [V12,T02] ( 4, 7 ) int -> x1 "CSE - aggressive" +; V13 cse1 [V13,T03] ( 3, 6 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,20 +32,36 @@ G_M18410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18410_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] movi v0.16b, #0
- mov w1, wzr - ldr w2, [x0, #0x08] - cmp w2, #0 - ble G_M18410_IG06
+ ldr w1, [x0, #0x08] + cmp w1, #0 + ble G_M18410_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 6.00 -G_M18410_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w3, [x0, w1, UXTW #2]
+ ldrh w2, [x0] + cmp w2, #128 + bge G_M18410_IG04 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M18410_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ubfiz x2, x2, #2, #32 + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr s0, [x2, x3] + movi v16.16b, #0 + fadd s0, s0, s16 + ;; size=28 bbWeight=0.50 PerfScore 4.50 +G_M18410_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w2, #1 + cmp w1, #1 + ble G_M18410_IG08 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M18410_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldrh w3, [x0, w2, UXTW #2]
cmp w3, #128
- bge G_M18410_IG05
+ bge G_M18410_IG07
;; size=12 bbWeight=4 PerfScore 18.00
-G_M18410_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M18410_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
ubfiz x3, x3, #2, #32 movz x4, #0xD1FFAB1E movk x4, #0xD1FFAB1E LSL #16 @@ -53,18 +69,18 @@ G_M18410_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ldr s16, [x3, x4] fadd s0, s0, s16 ;; size=24 bbWeight=2 PerfScore 17.00
-G_M18410_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - add w1, w1, #1 - cmp w2, w1 - bgt G_M18410_IG03
+G_M18410_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + add w2, w2, #1 + cmp w1, w2 + bgt G_M18410_IG05
;; size=12 bbWeight=4 PerfScore 8.00
-G_M18410_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18410_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 88, prolog size 8, PerfScore 52.50, instruction count 22, allocated bytes for code 88 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 63.00, instruction count 34, allocated bytes for code 136 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
; ============================================================ Unwind Info: @@ -75,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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)

coreclr_tests.run.osx.arm64.checked.mch

-36 (-17.65%) : 201552.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)

@@ -7,24 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T06] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> -; V01 loc1 [V01,T00] ( 12, 65.84) int -> x19 -; V02 loc2 [V02,T01] ( 8, 43 ) int -> x1 -;* V03 loc3 [V03,T07] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T03] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> +; V01 loc1 [V01,T00] ( 5, 16.84) int -> x0 +; V02 loc2 [V02,T04] ( 3, 3 ) int -> x1 +;* V03 loc3 [V03,T05] ( 0, 0 ) int -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 6, 32.92) byref -> x20 hoist "CSE - aggressive" -; V06 cse1 [V06,T03] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V07 cse2 [V07,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V08 cse3 [V08,T05] ( 3, 11.88) int -> x19 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 8, 13.92) byref -> x19 "CSE - aggressive" +; V06 cse1 [V06,T02] ( 3, 11.88) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42106_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -32,32 +30,16 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
+ add x19, x0, #16 + ; byrRegs +[x19] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x04] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x08] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x0C]
movz w1, #0xD1FFAB1E
- movk w1, #1 LSL #16 - mov w19, #1 - add x20, x0, #16 - ; byrRegs +[x20] - ;; size=36 bbWeight=1 PerfScore 5.00 -G_M42106_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref, isz - and w2, w1, #0xD1FFAB1E - str w2, [x20, w19, UXTW #2] - add w2, w19, #1 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - add w2, w19, #2 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - mov w2, #0xD1FFAB1E - add w1, w1, w2 - add w19, w19, #3 - cmp w19, #3 - ble G_M42106_IG03 - ;; size=68 bbWeight=8 PerfScore 84.00 -G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref
+ movk w1, #2 LSL #16
stp w1, w1, [x0, #0x20] movz x1, #0xD1FFAB1E // code for Benchstone.BenchI.BubbleSort2:Inner(int[]) movk x1, #0xD1FFAB1E LSL #16 @@ -66,36 +48,39 @@ G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov w19, wzr - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [x20, w19, UXTW #2] - add w19, w19, #1 - ldr w1, [x20, w19, UXTW #2]
+ ldp w0, w1, [x19]
cmp w0, w1
- bgt G_M42106_IG08 - cmp w19, #4 - blt G_M42106_IG05
+ bgt G_M42106_IG06 + mov w0, #1 + ;; size=96 bbWeight=1 PerfScore 20.50 +G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldr w1, [x19, w0, UXTW #2] + add w0, w0, #1 + ldr w2, [x19, w0, UXTW #2] + cmp w1, w2 + bgt G_M42106_IG06 + cmp w0, #4 + blt G_M42106_IG03
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x20]
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19]
mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M42106_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M42106_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 204, prolog size 12, PerfScore 139.87, instruction count 51, allocated bytes for code 204 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 168, prolog size 12, PerfScore 65.37, instruction count 42, allocated bytes for code 168 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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,7 +102,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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

-12 (-15.79%) : 254217.dasm - ILGEN_0xa2afe952:Main():int (FullOpts)

@@ -9,53 +9,46 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 tmp2 [V02,T01] ( 4, 25 ) int -> x0 -; V03 tmp3 [V03,T00] ( 2, 32 ) int -> x0 "dup spill"
+;* V02 tmp2 [V02,T01] ( 0, 0 ) int -> zero-ref +;* V03 tmp3 [V03,T02] ( 0, 0 ) int -> zero-ref "dup spill"
;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V05 PSPSym [V05,T02] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V05 PSPSym [V05,T00] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; ; Lcl frame size = 16
-G_M9138_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M9138_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp add x0, sp, #32 str x0, [fp, #0x18] // [V05 PSPSym]
- ;; size=16 bbWeight=1 PerfScore 3.00 -G_M9138_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M9138_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - sub w0, w0, #1 - cbnz w0, G_M9138_IG03 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M9138_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M9138_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9138_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #100 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M9138_IG04: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-G_M9138_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x20]! add x3, fp, #32 str x3, [sp, #0x18] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M9138_IG05]
+G_M9138_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M9138_IG03]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG09: ; bbWeight=0, funclet epilog, nogc, extend
+G_M9138_IG07: ; bbWeight=0, funclet epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 16, PerfScore 15.50, instruction count 19, allocated bytes for code 76 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 0.00, instruction count 16, allocated bytes for code 64 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -97,4 +90,4 @@ Unwind Info: *************** EH table for ILGEN_0xa2afe952:Main():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M9138_IG02..G_M9138_IG05) handled by [G_M9138_IG07..END) (class: 1000003)
+EH#0: try [G_M9138_IG02..G_M9138_IG03) handled by [G_M9138_IG05..END) (class: 1000003)
-40 (-14.49%) : 440622.dasm - BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
@@ -7,39 +7,37 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T01] ( 3, 10 ) long -> x19 single-def -; V01 loc1 [V01,T00] ( 7, 42 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live ptr
+; V00 loc0 [V00,T01] ( 3, 3 ) long -> x0 single-def +; V01 loc1 [V01,T00] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[Z] EH-live ptr
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref ptr ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie" -; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie" +; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M42836_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - str x19, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- str xzr, [fp, #0x20] // [V04 tmp1] - add x0, sp, #64 - str x0, [fp, #0x30] // [V07 PSPSym]
+ str xzr, [fp, #0x18] // [V04 tmp1] + add x0, sp, #48 + str x0, [fp, #0x28] // [V07 PSPSym]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #0x28] // [V06 GsCookie] - ;; size=44 bbWeight=1 PerfScore 8.00
+ str x0, [fp, #0x20] // [V06 GsCookie] + ;; size=40 bbWeight=1 PerfScore 7.00
G_M42836_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x19, fp, #32 // [V04 tmp1] - strb wzr, [x19] - str wzr, [fp, #0x1C] // [V01 loc1]
+ add x0, fp, #24 // [V04 tmp1] + strb wzr, [x0] + str wzr, [fp, #0x14] // [V01 loc1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr w0, [fp, #0x1C] // [V01 loc1] - ldrb w0, [x19, w0, SXTW #2] - ldrb w1, [fp, #0x1C] // [V01 loc1]
+G_M42836_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x0] + mov w1, wzr
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -47,53 +45,46 @@ G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcr arg pop 0 cbz w0, G_M42836_IG06
- ldr w0, [fp, #0x1C] // [V01 loc1] - add w0, w0, #1 - str w0, [fp, #0x1C] // [V01 loc1] - ldr w0, [fp, #0x1C] // [V01 loc1] - cmp w0, #0 - ble G_M42836_IG03 - ;; size=60 bbWeight=8 PerfScore 164.00
+ mov w0, #1 + str w0, [fp, #0x14] // [V01 loc1] + ;; size=40 bbWeight=1 PerfScore 11.50
G_M42836_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movn w0, #0 movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG05 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 7.00 G_M42836_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr w0, [fp, #0x1C] // [V01 loc1]
+ ldr w0, [fp, #0x14] // [V01 loc1]
movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG07 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 8.50 G_M42836_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18] - add x3, fp, #64 - str x3, [sp, #0x10] - ;; size=16 bbWeight=0 PerfScore 0.00
+ add x3, fp, #48 + str x3, [sp, #0x18] + ;; size=12 bbWeight=0 PerfScore 0.00
G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -107,23 +98,22 @@ G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { adr x0, [G_M42836_IG06] ;; size=36 bbWeight=0 PerfScore 0.00 G_M42836_IG10: ; bbWeight=0, funclet epilog, nogc, extend
- ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 44, PerfScore 198.00, instruction count 69, allocated bytes for code 276 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
+; Total bytes of code 236, prolog size 40, PerfScore 40.50, instruction count 59, allocated bytes for code 236 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,10 +124,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end - E4 end
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end @@ -149,13 +136,14 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 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 + E4 end
*************** EH table for BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM

+24 (+60.00%) : 573708.dasm - Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 56784 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def -; V01 arg1 [V01,T01] ( 3, 3 ) int -> x1 single-def -; V02 loc0 [V02,T02] ( 4, 4 ) int -> x2
+; V00 this [V00,T01] ( 6, 6 ) byref -> x0 this single-def +; V01 arg1 [V01,T02] ( 4, 4 ) int -> x1 single-def +; V02 loc0 [V02,T00] ( 8, 8 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -26,14 +26,23 @@ G_M63594_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M63594_IG02
+ beq G_M63594_IG04
;; size=24 bbWeight=1 PerfScore 8.50
-G_M63594_IG03: ; bbWeight=1, epilog, nogc, extend
+G_M63594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldapr w2, [x0] + orr w3, w2, w1 + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M63594_IG03 + ;; size=24 bbWeight=1 PerfScore 8.50 +G_M63594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[x0]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 8, PerfScore 12.00, instruction count 10, allocated bytes for code 40 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 20.50, instruction count 16, allocated bytes for code 64 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
; ============================================================ Unwind Info: @@ -44,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ 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)

+36 (+64.29%) : 309621.dasm - OVFTest:Test_sbyte(byte):byte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) byte -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) byte -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M25186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25186_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtb w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #127
- bgt G_M25186_IG03
+ bgt G_M25186_IG04
cmn w0, #128
- blt G_M25186_IG03 - b G_M25186_IG02
+ blt G_M25186_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M25186_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtb w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #127 + bgt G_M25186_IG04 + cmn w0, #128 + blt G_M25186_IG04 + b G_M25186_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M25186_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25186_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+36 (+64.29%) : 309622.dasm - OVFTest:Test_short(short):short (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) short -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) short -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M33961_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M33961_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxth w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #8, LSL #12
- bge G_M33961_IG03
+ bge G_M33961_IG04
cmn w0, #8, LSL #12
- blt G_M33961_IG03 - b G_M33961_IG02
+ blt G_M33961_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M33961_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxth w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #8, LSL #12 + bge G_M33961_IG04 + cmn w0, #8, LSL #12 + blt G_M33961_IG04 + b G_M33961_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M33961_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33961_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

libraries.crossgen2.osx.arm64.checked.mch

-20 (-12.20%) : 25751.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M24270_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M24270_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M24270_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M24270_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M24270_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M24270_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M24270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M24270_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M24270_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M24270_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M24270_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M24270_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M24270_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M24270_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M24270_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M24270_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M24270_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M24270_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24270_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M24270_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-12.20%) : 212700.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M45834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M45834_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M45834_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M45834_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45834_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M45834_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M45834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M45834_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M45834_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M45834_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M45834_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M45834_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M45834_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M45834_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M45834_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M45834_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M45834_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45834_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M45834_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M45834_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-10.42%) : 223703.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)

@@ -9,45 +9,35 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 17 ) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> -; V01 loc0 [V01,T04] ( 4, 6 ) ubyte -> x20
+; V00 this [V00,T00] ( 7, 4.75) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> +; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 16 ) ref -> x1 "argument with side effect" -; V04 tmp2 [V04,T02] ( 2, 16 ) ref -> x1 "argument with side effect" -; V05 cse0 [V05,T03] ( 3, 7 ) long -> x21 hoist "CSE - aggressive" -; V06 cse1 [V06,T05] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V07 cse2 [V07,T06] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" -; V08 cse3 [V08,T07] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> x1 "argument with side effect" +; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x1 "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 1.75) long -> x21 hoist "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M42349_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w20, #1 ldrsb wzr, [x19] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x21, [x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - adrp x23, [HIGH RELOC #0xD1FFAB1E] - add x23, x23, [LOW RELOC #0xD1FFAB1E] - adrp x24, [HIGH RELOC #0xD1FFAB1E] - add x24, x24, [LOW RELOC #0xD1FFAB1E]
b G_M42349_IG04
- ;; size=48 bbWeight=1 PerfScore 11.50 -G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 8.50 +G_M42349_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr wzr, [x0] ldr x1, [x11] @@ -55,43 +45,45 @@ G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] sxtw w20, w0 cbz w20, G_M42349_IG05
- ;; size=32 bbWeight=2 PerfScore 25.00 -G_M42349_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.25 PerfScore 3.12 +G_M42349_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x1] mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x24
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M42349_IG03
- ;; size=64 bbWeight=4 PerfScore 90.00
+ ;; size=76 bbWeight=0.50 PerfScore 12.00
G_M42349_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50 G_M42349_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 20, PerfScore 137.00, instruction count 48, allocated bytes for code 192 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
+; Total bytes of code 172, prolog size 16, PerfScore 33.12, instruction count 43, allocated bytes for code 172 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -102,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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) @@ -110,10 +102,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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 (+64.71%) : 209779.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -8,14 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,42 +25,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+66.67%) : 11038.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

+32 (+66.67%) : 166699.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

libraries.pmi.osx.arm64.checked.mch

-44 (-15.71%) : 203059.dasm - Roslyn.Utilities.OneOrMany1[System.__Canon]:Any[System.Numerics.Vector1[float]](System.Func3[System.__Canon,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,59 +8,64 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 3 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T05] ( 5, 4.36) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> -; V03 arg2 [V03,T11] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V04 loc0 [V04 ] ( 4, 12 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V00 this [V00,T12] ( 3, 3 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T04] ( 5, 4.36) long -> x1 single-def +; V02 arg1 [V02,T09] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> +; V03 arg2 [V03,T17] ( 3, 2.25) simd16 -> [fp+0x40] HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V04 loc0 [V04 ] ( 4, 3.25) struct (24) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp4 [V10,T10] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V10 tmp4 [V10,T15] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[System.__Canon]> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref "field V12._one (fldOffset=0x0)" P-INDEP ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref "field V12._many (fldOffset=0x8)" P-INDEP ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "V10.[000..004)"
-; V16 tmp10 [V16,T00] ( 2, 32 ) long -> x1 "argument with side effect" -; V17 tmp11 [V17,T04] ( 2, 8 ) long -> x1 "argument with side effect" -; V18 tmp12 [V18,T03] ( 2, 8 ) ref -> x1 "argument with side effect" -; V19 cse0 [V19,T01] ( 3, 11 ) long -> x20 hoist "CSE - aggressive" -; V20 rat0 [V20,T09] ( 3, 4 ) long -> x20 "runtime lookup" -; V21 rat1 [V21,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V22 rat2 [V22,T08] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable"
+; V16 tmp10 [V16,T01] ( 2, 4 ) long -> x1 "argument with side effect" +; V17 tmp11 [V17,T07] ( 2, 1 ) long -> x1 "argument with side effect" +; V18 tmp12 [V18,T06] ( 2, 1 ) ref -> x1 "argument with side effect" +; V19 cse0 [V19,T16] ( 3, 2.25) long -> x20 hoist "CSE - aggressive" +; V20 rat0 [V20,T14] ( 3, 4 ) long -> x20 "runtime lookup" +; V21 rat1 [V21,T11] ( 3, 5.60) long -> x0 "spilling expr" +; V22 rat2 [V22,T13] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable" +;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V24 rat4 [V24,T05] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V25 rat5 [V25,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V26 rat6 [V26,T03] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V27 rat7 [V27,T00] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V28 rat8 [V28,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M19422_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp d8, d9, [sp, #0x50]
stp x19, x20, [sp, #0x60] mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V10 tmp4], [V10 tmp4+0x08] - str xzr, [fp, #0x28] // [V10 tmp4+0x10] - str x1, [fp, #0x48] - mov v8.16b, v0.16b
+ stp xzr, xzr, [fp, #0x10] // [V10 tmp4], [V10 tmp4+0x08] + str xzr, [fp, #0x20] // [V10 tmp4+0x10] + str x1, [fp, #0x58] + str q0, [fp, #0x40] // [V03 arg2]
mov x19, x2 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M19422_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc ; byrRegs +[x0] ldp x2, x3, [x0]
- stp x2, x3, [fp, #0x20]
+ stp x2, x3, [fp, #0x18]
;; size=8 bbWeight=1 PerfScore 5.00 G_M19422_IG03: ; bbWeight=1, nogc, extend
- ldp x0, x2, [fp, #0x18]
+ ldp x0, x2, [fp, #0x10]
; byrRegs -[x0]
- stp x0, x2, [fp, #0x30] - ldr x0, [fp, #0x28] - str x0, [fp, #0x40]
+ stp x0, x2, [fp, #0x28] + ldr x0, [fp, #0x20] + str x0, [fp, #0x38]
;; size=16 bbWeight=1 PerfScore 7.00 G_M19422_IG04: ; bbWeight=1, isz, extend movn w0, #0
- str w0, [fp, #0x30] // [V04 loc0]
+ str w0, [fp, #0x28] // [V04 loc0]
ldr x0, [x1, #0x38] ldr x2, [x0, #0x08] cmp x2, #24 @@ -78,69 +83,59 @@ G_M19422_IG07: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov v9.d[0], v8.d[1]
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD mov x20, x0
- mov v8.d[1], v9.d[0] - ;; size=32 bbWeight=0.36 PerfScore 1.98
+ ;; size=24 bbWeight=0.36 PerfScore 1.26
G_M19422_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M19422_IG10 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M19422_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M19422_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov v8.d[1], v9.d[0] - mov v0.16b, v8.16b
+ ldr q0, [fp, #0x40] // [V03 arg2]
ldr x0, [x19, #0x08] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0-x1]
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG13
- ;; size=68 bbWeight=2 PerfScore 39.00 -G_M19422_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0.25 PerfScore 4.25 +G_M19422_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG09
- ;; size=40 bbWeight=8 PerfScore 76.00 -G_M19422_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M19422_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M19422_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M19422_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M19422_IG14: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 280, prolog size 28, PerfScore 154.82, instruction count 70, allocated bytes for code 280 (MethodHash=fb73b421) for method 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)
+; Total bytes of code 236, prolog size 24, PerfScore 49.13, instruction count 59, allocated bytes for code 236 (MethodHash=fb73b421) for method 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)
; ============================================================ Unwind Info: @@ -151,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -163,8 +158,9 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]! E4 end E4 end
+ E4 end + E4 end

-16 (-8.70%) : 288631.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -12,9 +12,9 @@ ; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]> ;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 17 ) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,7 +22,7 @@ G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -37,22 +37,14 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG06 - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M2572_IG04: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG04
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 movz x1, #0xD1FFAB1E @@ -67,13 +59,13 @@ G_M2572_IG04: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #1 LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=112 bbWeight=1 PerfScore 20.50 +G_M2572_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 @@ -91,7 +83,7 @@ G_M2572_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 44.50, instruction count 46, allocated bytes for code 184 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 168, prolog size 8, PerfScore 24.00, instruction count 42, allocated bytes for code 168 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -102,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ 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)

-20 (-8.33%) : 203092.dasm - Roslyn.Utilities.OneOrMany1[ubyte]:Any[System.Numerics.Vector1[float]](System.Func3[ubyte,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,40 +8,38 @@ ; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 4 ) byref -> x0 this single-def -; V01 arg1 [V01,T03] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> -; V02 arg2 [V02,T09] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T05] ( 4, 4 ) byref -> x0 this single-def +; V01 arg1 [V01,T03] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> +; V02 arg2 [V02,T09] ( 3, 2.25) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V04 loc1 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[ubyte]>
-; V08 tmp3 [V08,T05] ( 3, 6 ) ubyte -> x1 "Inline return value spill temp"
+; V08 tmp3 [V08,T04] ( 3, 0.75) ubyte -> x1 "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T10] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V12 tmp7 [V12,T02] ( 3, 12 ) int -> x1 "Inline return value spill temp"
+; V12 tmp7 [V12,T02] ( 3, 1.50) int -> x1 "Inline return value spill temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "field V07._one (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref "field V07._many (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15,T00] ( 7, 31 ) int -> x22 "V03.[000..004)" -; V16 tmp11 [V16,T06] ( 2, 3 ) ubyte -> x20 single-def "V03.[008..009)" -; V17 tmp12 [V17,T01] ( 6, 17 ) ref -> x21 single-def "V03.[016..024)"
+; V15 tmp10 [V15,T00] ( 7, 4.75) int -> x22 "V03.[000..004)" +; V16 tmp11 [V16,T06] ( 2, 1.25) ubyte -> x20 single-def "V03.[008..009)" +; V17 tmp12 [V17,T01] ( 6, 3 ) ref -> x21 single-def "V03.[016..024)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[000..004)" ; V19 tmp14 [V19,T08] ( 2, 2 ) ubyte -> x20 single-def "V06.[008..009)" ; V20 tmp15 [V20,T07] ( 2, 2 ) ref -> x21 single-def "V06.[016..024)" ;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M17406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp d8, d9, [sp, #0x10]
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] mov fp, sp
- mov v8.16b, v0.16b
mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] ldrb w20, [x0] @@ -50,14 +48,14 @@ G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, movn w22, #0 b G_M17406_IG06 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M17406_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M17406_IG03: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz x21, G_M17406_IG04 cbnz w22, G_M17406_IG15 sxtw w1, w20 b G_M17406_IG05
- ;; size=16 bbWeight=2 PerfScore 7.00 -G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.25 PerfScore 0.88 +G_M17406_IG04: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w1, [x21, #0x08] cmp w22, w1 bhs G_M17406_IG14 @@ -65,54 +63,51 @@ G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs +[x1] ldrb w1, [x1, w22, UXTW #2] ; byrRegs -[x1]
- ;; size=20 bbWeight=2 PerfScore 16.00 -G_M17406_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - mov v0.16b, v8.16b
+ ;; size=20 bbWeight=0.25 PerfScore 2.00 +G_M17406_IG05: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str q0, [fp, #0x10] // [V02 arg2]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0]
- mov v8.d[1], v9.d[0]
+ ldr q0, [fp, #0x10] // [V02 arg2]
cbnz w0, G_M17406_IG12
- ;; size=28 bbWeight=2 PerfScore 21.00 -G_M17406_IG06: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0.25 PerfScore 2.75 +G_M17406_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 cbz x21, G_M17406_IG08
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG07: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
ldr w1, [x21, #0x08] b G_M17406_IG09
- ;; size=8 bbWeight=2 PerfScore 8.00 -G_M17406_IG08: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M17406_IG08: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov w1, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M17406_IG09: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M17406_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
cmp w22, w1 blt G_M17406_IG03
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M17406_IG11: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17406_IG13: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00 @@ -137,7 +132,7 @@ G_M17406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 95.50, instruction count 60, allocated bytes for code 240 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
+; Total bytes of code 220, prolog size 16, PerfScore 25.53, instruction count 55, allocated bytes for code 220 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -148,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -161,7 +156,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
+ E4 end + E4 end

+32 (+66.67%) : 218703.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -23,26 +23,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -53,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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 (+69.23%) : 52686.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 23 ) ref -> x0 class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> -; V01 loc0 [V01,T01] ( 4, 10 ) ref -> x15 class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> -; V02 loc1 [V02,T02] ( 2, 8 ) ref -> x1 class-hnd exact <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec>
+; V00 arg0 [V00,T00] ( 13, 28 ) ref -> registers class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> +; V01 loc0 [V01,T01] ( 5, 11 ) ref -> registers class-hnd <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec> +; V02 loc1 [V02,T02] ( 4, 10 ) ref -> x1 class-hnd exact <System.Diagnostics.DiagnosticSourceEventSource+TransformSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -22,9 +22,16 @@ G_M15149_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] mov x15, xzr ; gcrRegs +[x15]
- cbz x0, G_M15149_IG04 - ;; size=8 bbWeight=1 PerfScore 1.50
+ cbz x0, G_M15149_IG07 + ldr x1, [x0, #0x08] + ; gcrRegs +[x1] + str xzr, [x0, #0x08] + mov x15, x0 + mov x0, x1 + cbz x0, G_M15149_IG06 + ;; size=28 bbWeight=1 PerfScore 7.50
G_M15149_IG03: ; bbWeight=4, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1]
ldr x1, [x0, #0x08] ; gcrRegs +[x1] add x14, x0, #8 @@ -32,22 +39,34 @@ G_M15149_IG03: ; bbWeight=4, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {}, bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov x15, x0 - ; gcrRegs +[x15] - mov x0, x1 - cbnz x0, G_M15149_IG03 - ;; size=24 bbWeight=4 PerfScore 26.00 -G_M15149_IG04: ; bbWeight=1, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0-x1] - mov x0, x15 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M15149_IG05: ; bbWeight=1, epilog, nogc, extend
+ cbnz x1, G_M15149_IG05 + ;; size=16 bbWeight=4 PerfScore 22.00 +G_M15149_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M15149_IG05: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x1] + mov x15, x0 + ; gcrRegs +[x15] + mov x0, x1 + b G_M15149_IG03 + ;; size=12 bbWeight=2 PerfScore 4.00 +G_M15149_IG06: ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0-x1] + mov x0, x15 + ; gcrRegs +[x0] + b G_M15149_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M15149_IG07: ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x15 + ; gcrRegs +[x0] + b G_M15149_IG04 + ;; size=8 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 52, prolog size 8, PerfScore 31.50, instruction count 13, allocated bytes for code 52 (MethodHash=8c6bc4d2) for method System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 38.50, instruction count 22, allocated bytes for code 88 (MethodHash=8c6bc4d2) for method System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Reverse(System.Diagnostics.DiagnosticSourceEventSource+TransformSpec):System.Diagnostics.DiagnosticSourceEventSource+TransformSpec (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+70.59%) : 234313.dasm - System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)

@@ -8,13 +8,15 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T02] ( 4, 12 ) byref -> x2 single-def
+; V01 arg1 [V01,T02] ( 6, 13.25) byref -> x2 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) int -> x4 "Span.get_Item index" -; V04 tmp2 [V04,T04] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V05 tmp3 [V05,T05] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T00] ( 6, 27 ) int -> x4 "Span.get_Item index" +; V04 tmp2 [V04,T04] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T05] ( 3, 5.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 cse0 [V06,T03] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T01] ( 3, 20 ) int -> x3 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 3, 1.25) int -> x3 "CSE - moderate" +; V08 cse2 [V08,T01] ( 3, 20 ) int -> x3 "CSE - aggressive" +; V09 cse3 [V09,T06] ( 3, 2.50) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,34 +28,56 @@ G_M33876_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ; byrRegs +[x0 x2] b G_M33876_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M33876_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
+G_M33876_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
str w3, [x2]
- ;; size=4 bbWeight=2 PerfScore 2.00 -G_M33876_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ b G_M33876_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.50 +G_M33876_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
ldr w3, [x2] cmp w3, #1
- ble G_M33876_IG06 - ;; size=12 bbWeight=8 PerfScore 36.00 -G_M33876_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ ble G_M33876_IG10 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M33876_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
sub w3, w3, #1 sxtw w4, w3 cmp w4, w1
- bhs G_M33876_IG07
+ bhs G_M33876_IG11
ldr w4, [x0, w4, UXTW #2] cbz w4, G_M33876_IG03
+ ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M33876_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0 x2] + b G_M33876_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M33876_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref + ; byrRegs +[x0 x2] + str w3, [x2] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M33876_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + ldr w3, [x2] + cmp w3, #1 + ble G_M33876_IG10 + ;; size=12 bbWeight=8 PerfScore 36.00 +G_M33876_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + sub w3, w3, #1 + sxtw w4, w3 + cmp w4, w1 + bhs G_M33876_IG11 + ldr w4, [x0, w4, UXTW #2] + cbz w4, G_M33876_IG07
;; size=24 bbWeight=4 PerfScore 26.00
-G_M33876_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M33876_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M33876_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33876_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 68.50, instruction count 17, allocated bytes for code 68 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 76.88, instruction count 29, allocated bytes for code 116 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.osx.arm64.Release.mch

-36 (-15.00%) : 346231.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
; V01 loc0 [V01 ] ( 2, 2 ) byte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[byte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M24034_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24034_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M24034_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M24034_IG08
+ bne G_M24034_IG07
;; size=56 bbWeight=1 PerfScore 15.50 G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M24034_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M24034_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M24034_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M24034_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M24034_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M24034_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrsb x0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M24034_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M24034_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M24034_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M24034_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-36 (-15.00%) : 346392.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
; V01 loc0 [V01 ] ( 2, 2 ) ubyte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M4386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M4386_IG08
+ bne G_M4386_IG07
;; size=56 bbWeight=1 PerfScore 15.50 G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M4386_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M4386_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M4386_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M4386_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M4386_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M4386_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrb w0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4386_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M4386_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M4386_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M4386_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-24 (-12.24%) : 59901.dasm - Microsoft.CodeAnalysis.ConsListExtensions:ContainsReferenceSystem.__Canon:ubyte (Tier1)

@@ -9,114 +9,101 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 4.22) long -> x19 single-def -; V01 arg0 [V01,T02] ( 7, 3.06) ref -> x20 class-hnd <Roslyn.Utilities.ConsList`1[System.__Canon]> -; V02 arg1 [V02,T03] ( 3, 2.01) ref -> x21 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def +; V01 arg0 [V01,T02] ( 11, 3.11) ref -> x19 class-hnd <Roslyn.Utilities.ConsList`1[System.__Canon]> +; V02 arg1 [V02,T03] ( 4, 2.03) 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 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V06 rat1 [V06,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V07 rat2 [V07,T06] ( 3, 0.06) long -> x0 "runtime lookup" -; V08 rat3 [V08,T05] ( 3, 0.08) long -> x0 "fgMakeTemp is creating a new local variable"
+; V05 cse0 [V05,T05] ( 4, 2.03) byref -> x0 "CSE - aggressive" +; V06 rat0 [V06,T04] ( 3, 4 ) long -> x1 "runtime lookup" +; V07 rat1 [V07,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M14213_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 x19, x20, [sp, #0x20]
mov fp, sp
- str x0, [fp, #0x10] - mov x19, x0 - mov x20, x1
+ str x0, [fp, #0x18] + mov x19, x1 + ; gcrRegs +[x19] + mov x20, x2
; gcrRegs +[x20]
- mov x21, x2 - ; gcrRegs +[x21] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M14213_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M14213_IG04
+ ;; size=24 bbWeight=1 PerfScore 4.50 +G_M14213_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x38] + ldr x1, [x1, #0x10] + cbz x1, G_M14213_IG04
;; size=12 bbWeight=1 PerfScore 7.00
-G_M14213_IG03: ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M14213_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
b G_M14213_IG05 ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M14213_IG04: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref - mov x0, x19
+G_M14213_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_METHOD ; gcr arg pop 0
+ mov x1, x0
;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M14213_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M14213_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + mov x0, x1
bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE ; byrRegs +[x0] ; gcr arg pop 0
- ldr x0, [x0] - ; gcrRegs +[x0] - ; byrRegs -[x0] - cmp x0, x20
+ ldr x1, [x0] + ; gcrRegs +[x1] + cmp x1, x19
bne G_M14213_IG08
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M14213_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20-x21]
+ ; gcrRegs -[x1 x19-x20] + ; byrRegs -[x0]
mov w0, wzr ;; size=4 bbWeight=1 PerfScore 0.50 G_M14213_IG07: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14213_IG08: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x20-x21] - ldr x0, [x20, #0x08] - ; gcrRegs +[x0] - cmp x0, x21 - beq G_M14213_IG13 - ldr x20, [x20, #0x10] - ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x0, [x0, #0x10] - cbz x0, G_M14213_IG10 - ;; size=28 bbWeight=0.01 PerfScore 0.20 -G_M14213_IG09: ; bbWeight=0.01, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref - b G_M14213_IG11 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M14213_IG10: ; bbWeight=0.00, 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 - ; gcr arg pop 0 - ;; size=20 bbWeight=0.00 PerfScore 0.01 -G_M14213_IG11: ; bbWeight=0.01, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M14213_IG08: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0001 {x0}, gcvars, byref, isz + ; gcrRegs +[x19-x20]
; byrRegs +[x0]
- ; gcr arg pop 0 - ldr x0, [x0] - ; gcrRegs +[x0]
+ ldr x1, [x19, #0x08] + ; gcrRegs +[x1] + cmp x1, x20 + beq G_M14213_IG11 + ldr x19, [x19, #0x10] + ldr x1, [x0] + cmp x1, x19 + beq G_M14213_IG06 + ;; size=28 bbWeight=0.01 PerfScore 0.16 +G_M14213_IG09: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs -[x1] + ldr x1, [x19, #0x08] + ; gcrRegs +[x1] + cmp x1, x20 + beq G_M14213_IG11 + ldr x19, [x19, #0x10] + ldr x1, [x0] + cmp x1, x19 + bne G_M14213_IG09 + ;; size=28 bbWeight=0.01 PerfScore 0.17 +G_M14213_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1 x19-x20]
; byrRegs -[x0]
- cmp x0, x20 - bne G_M14213_IG08 - ;; size=16 bbWeight=0.01 PerfScore 0.08 -G_M14213_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20-x21]
b G_M14213_IG06 ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M14213_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M14213_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M14213_IG14: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M14213_IG12: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 32, PerfScore 25.71, instruction count 49, allocated bytes for code 196 (MethodHash=ae78c87a) for method Microsoft.CodeAnalysis.ConsListExtensions:ContainsReference[System.__Canon](Roslyn.Utilities.ConsList`1[System.__Canon],System.__Canon):ubyte (Tier1)
+; Total bytes of code 172, prolog size 24, PerfScore 22.75, instruction count 43, allocated bytes for code 172 (MethodHash=ae78c87a) for method Microsoft.CodeAnalysis.ConsListExtensions:ContainsReference[System.__Canon](Roslyn.Utilities.ConsList`1[System.__Canon],System.__Canon):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -127,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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) @@ -138,9 +125,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]
+ 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 + E4 end

+48 (+70.59%) : 434564.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)

@@ -9,10 +9,10 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 9980 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests> -; V01 loc0 [V01,T02] ( 3, 3 ) int -> x0
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests> +; V01 loc0 [V01,T00] ( 6, 6 ) int -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3, 3 ) byref -> x19 hoist "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 5, 5 ) byref -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -23,12 +23,17 @@ G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [fp, #0x48] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x19, x0, #16 ; byrRegs +[x19]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38489_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldapr w0, [x19]
; gcrRegs -[x0]
+ add w0, w0, #1 + stlr w0, [x19] + tst w0, #0xD1FFAB1E + beq G_M38489_IG05 + ;; size=24 bbWeight=1 PerfScore 6.50 +G_M38489_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldapr w0, [x19] add w0, w0, #1 stlr w0, [x19] @@ -45,8 +50,18 @@ G_M38489_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 b G_M38489_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
+G_M38489_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + mov w0, wzr + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + b G_M38489_IG03 + ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 16, PerfScore 11.00, instruction count 17, allocated bytes for code 68 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)
+; Total bytes of code 116, prolog size 16, PerfScore 17.00, instruction count 29, allocated bytes for code 116 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -57,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+24 (+75.00%) : 161682.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+75.00%) : 591772.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 69520 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-40 (-8.93%) : 212946.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)

@@ -8,68 +8,56 @@ ; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
+; V00 this [V00,T04] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
; V01 arg1 [V01,T02] ( 6, 6 ) ref -> x19 class-hnd single-def <ubyte[]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V05 tmp3 [V05,T01] ( 2, 10 ) int -> x21 "Inlining Arg"
+; V05 tmp3 [V05,T01] ( 2, 4 ) int -> x0 "Inlining Arg"
; V06 tmp4 [V06,T05] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 1 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> x22 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 cse0 [V14,T04] ( 2, 5 ) byref -> x23 hoist "CSE - aggressive"
+; V14 cse0 [V14,T03] ( 2, 2 ) byref -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M39649_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x20]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M39649_IG06
+ cbz x19, G_M39649_IG04
ldr w1, [x19, #0x08]
- lsl w21, w1, #3
+ lsl w0, w1, #3
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w22, wzr - add x23, x1, #16 - ; byrRegs +[x23] - ;; size=36 bbWeight=1 PerfScore 10.50 -G_M39649_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x23, w22, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
- add x2, fp, #16 // [V07 tmp5] - mov w0, w21
+ ; byrRegs -[x1] + add x2, fp, #24 // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M39649_IG04 - add w22, w22, #1 - cmp w22, #0 - bgt G_M39649_IG07 - b G_M39649_IG03 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x23]
+ cbz w0, G_M39649_IG05
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.TripleDES:IsWeakKey(ubyte[]):ubyte @@ -78,7 +66,7 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x1] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M39649_IG08
+ cbnz w0, G_M39649_IG06
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -89,15 +77,13 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 13.50 -G_M39649_IG05: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ;; size=120 bbWeight=1 PerfScore 33.50 +G_M39649_IG03: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M39649_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -112,8 +98,8 @@ G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[x0] brk_unix #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - strb wzr, [fp, #0x10] // [V07 tmp5]
+G_M39649_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + strb wzr, [fp, #0x18] // [V07 tmp5]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -142,7 +128,7 @@ G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=80 bbWeight=0 PerfScore 0.00
-G_M39649_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -191,7 +177,7 @@ G_M39649_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=132 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 20, PerfScore 89.50, instruction count 112, allocated bytes for code 448 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
+; Total bytes of code 408, prolog size 12, PerfScore 40.00, instruction count 102, allocated bytes for code 408 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -202,7 +188,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 112 (0x00070) Actual length = 448 (0x0001c0)
+ Function Length : 102 (0x00066) Actual length = 408 (0x000198)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -210,9 +196,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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
E4 end

-16 (-8.70%) : 176108.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -9,20 +9,20 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
+; V01 tmp1 [V01,T01] ( 4, 8.00) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 20.93) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 2.98) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2.00) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M2572_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M2572_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -37,23 +37,15 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=1.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG07 - ;; size=8 bbWeight=1.98 PerfScore 7.93 -G_M2572_IG04: ; bbWeight=5.98, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x2] - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=12 bbWeight=5.98 PerfScore 11.97 -G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG05 + ;; size=52 bbWeight=1.00 PerfScore 10.50 +G_M2572_IG03: ; bbWeight=3.02, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -69,13 +61,13 @@ G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #1 LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=3.02 PerfScore 30.17 +G_M2572_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 @@ -93,7 +85,7 @@ G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 40.40, instruction count 46, allocated bytes for code 184 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 168, prolog size 8, PerfScore 44.17, instruction count 42, allocated bytes for code 168 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ 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)

-32 (-8.00%) : 218495.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)

@@ -9,62 +9,58 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.RC2>
-; V01 arg1 [V01,T01] ( 7, 9 ) int -> x19 single-def
+; V01 arg1 [V01,T01] ( 7, 5.50) int -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V06 tmp4 [V06,T04] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 0.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V13 cse0 [V13,T03] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
+; V13 cse0 [V13,T03] ( 2, 1 ) byref -> x1 "CSE - aggressive"
; ; Lcl frame size = 16 G_M43684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov w19, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M43684_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x38] cmp w19, w1
- bgt G_M43684_IG09
+ bgt G_M43684_IG07
cbnz w19, G_M43684_IG05 ;; size=16 bbWeight=1 PerfScore 5.50 G_M43684_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref str wzr, [x20, #0x3C] ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M43684_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M43684_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz cmp w19, #40
- blt G_M43684_IG10
+ blt G_M43684_IG08
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w21, wzr - add x22, x1, #16 - ; byrRegs +[x22] - ;; size=32 bbWeight=0.50 PerfScore 3.50 -G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x22, w21, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
+ ; byrRegs -[x1]
add x2, fp, #24 // [V07 tmp5] mov w0, w19 movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte @@ -73,23 +69,15 @@ G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M43684_IG07 - add w21, w21, #1 - cmp w21, #0 - bgt G_M43684_IG11 - b G_M43684_IG06 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M43684_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+ cbz w0, G_M43684_IG09
str w19, [x20, #0x3C]
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M43684_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+ ;; size=68 bbWeight=0.50 PerfScore 9.00 +G_M43684_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M43684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -119,7 +107,7 @@ G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #2 LSL #32 @@ -148,7 +136,7 @@ G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb wzr, [fp, #0x18] // [V07 tmp5] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +168,7 @@ G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 16, PerfScore 72.50, instruction count 100, allocated bytes for code 400 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
+; Total bytes of code 368, prolog size 12, PerfScore 21.50, instruction count 92, allocated bytes for code 368 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -191,7 +179,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -202,9 +190,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

+44 (+64.71%) : 66563.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M57541_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57541_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M57541_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x1C] cmp w1, w3 bge G_M57541_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M57541_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M57541_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M57541_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M57541_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M57541_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57541_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M57541_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M57541_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M57541_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M57541_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M57541_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M57541_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x1C] + cmp w1, w3 + bge G_M57541_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M57541_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M57541_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M57541_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M57541_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M57541_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M57541_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M57541_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M57541_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #24 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M57541_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M57541_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+68.75%) : 198618.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)

@@ -8,28 +8,40 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
-; V01 loc0 [V01,T00] ( 3, 24 ) int -> x0
+; V01 loc0 [V01,T00] ( 6, 27 ) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3, 17 ) byref -> x19 hoist "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 5, 19 ) byref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] add x19, x0, #16 ; byrRegs +[x19]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x0]
ldapr w0, [x19]
- add w0, w0, #1 - stlr w0, [x19] - tst w0, #0xD1FFAB1E
+ ; gcrRegs -[x0] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E + bne G_M38489_IG03 + mov w0, wzr + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + ;; size=48 bbWeight=1 PerfScore 12.50 +G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldapr w0, [x19] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E
bne G_M38489_IG03 mov w0, wzr movz x1, #0xD1FFAB1E // code for <unknown method> @@ -41,7 +53,7 @@ G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by b G_M38489_IG03 ;; size=48 bbWeight=8 PerfScore 104.00
-; Total bytes of code 64, prolog size 12, PerfScore 107.00, instruction count 16, allocated bytes for code 64 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 119.00, instruction count 27, allocated bytes for code 108 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
; ============================================================ Unwind Info: @@ -52,12 +64,12 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ---- E1 set_fp; mov fp, sp
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end E4 end

+48 (+75.00%) : 298748.dasm - System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:b_00():this (FullOpts)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.CESchedulerPairTests+<>c>
-; V01 loc0 [V01 ] ( 2, 10 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
+; V01 loc0 [V01 ] ( 4, 11.25) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04 ] ( 2, 10 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
+; V04 tmp2 [V04 ] ( 4, 11.25) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
; ; Lcl frame size = 16 @@ -24,7 +24,25 @@ G_M31209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M31209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref b G_M31209_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31209_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V01 loc0] + mov w1, #20 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + b G_M31209_IG07 + ;; size=32 bbWeight=0.25 PerfScore 1.88 +G_M31209_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr w0, [fp, #0x18] // [V04 tmp2] + cmp w0, #10 + bge G_M31209_IG08 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M31209_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M31209_IG03 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M31209_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] mov w1, #20 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -33,17 +51,17 @@ G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M31209_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31209_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x18] // [V04 tmp2] cmp w0, #10
- blt G_M31209_IG03
+ blt G_M31209_IG06
;; size=12 bbWeight=8 PerfScore 28.00
-G_M31209_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M31209_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=4 PerfScore 8.00
-; Total bytes of code 64, prolog size 12, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 58.38, instruction count 28, allocated bytes for code 112 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.osx.arm64.checked.mch

-44 (-33.33%) : 1557.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)

@@ -8,18 +8,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) byref -> x0 single-def -; V01 arg1 [V01,T05] ( 4, 4 ) byref -> x1 single-def -; V02 arg2 [V02,T06] ( 4, 4 ) byref -> x2 single-def -;* V03 loc0 [V03,T10] ( 0, 0 ) int -> zero-ref -; V04 loc1 [V04,T07] ( 2, 5 ) byref -> x2 single-def -; V05 loc2 [V05,T08] ( 2, 5 ) byref -> x1 single-def -; V06 loc3 [V06,T00] ( 5, 17 ) int -> x3 -; V07 loc4 [V07,T01] ( 4, 16 ) byref -> x5 -; V08 loc5 [V08,T03] ( 3, 12 ) byref -> x6
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> x0 single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> x1 single-def +; V02 arg2 [V02,T02] ( 4, 4 ) byref -> x2 single-def +;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref +; V04 loc1 [V04,T05] ( 2, 2 ) byref -> x2 single-def +; V05 loc2 [V05,T06] ( 2, 2 ) byref -> x1 single-def +;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref +; V07 loc4 [V07,T03] ( 4, 4 ) byref -> x0 +; V08 loc5 [V08,T04] ( 3, 3 ) byref -> x2
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T09] ( 2, 5 ) byref -> x0 hoist "CSE - aggressive" -; V11 cse1 [V11,T02] ( 4, 16 ) long -> x4 "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,41 +34,26 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2} stp xzr, xzr, [x2, #0x20] str xzr, [x2, #0x30] add x1, x1, #4
- mov w3, wzr
ldrsb wzr, [x0] add x0, x0, #28
- ;; size=36 bbWeight=1 PerfScore 9.50 -G_M31235_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2}, byref, isz - sxtw x4, w3 - mov x5, #20 - mul x5, x4, x5 - add x5, x0, x5 - ; byrRegs +[x5] - lsl x6, x4, #4 - add x6, x2, x6 - ; byrRegs +[x6] - ldr w7, [x5, #0x10] - lsl x4, x4, #2 - str w7, [x1, x4] - ldr d16, [x5] - ldr w4, [x5, #0x08] - mov v16.s[2], w4 - str d16, [x6] - mov w4, v16.s[2] - str w4, [x6, #0x08] - ldr s16, [x5, #0x0C] - str s16, [x6, #0x0C] - add w3, w3, #1 - cmp w3, #0 - ble G_M31235_IG03 - ;; size=80 bbWeight=4 PerfScore 104.00 -G_M31235_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x0-x2 x5-x6]
+ ldr w3, [x0, #0x10] + str w3, [x1] + ldr d16, [x0] + ldr w1, [x0, #0x08] + ; byrRegs -[x1] + mov v16.s[2], w1 + str d16, [x2] + mov w1, v16.s[2] + str w1, [x2, #0x08] + ldr s16, [x0, #0x0C] + str s16, [x2, #0x0C] + ;; size=72 bbWeight=1 PerfScore 27.00 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 132, prolog size 8, PerfScore 117.00, instruction count 33, allocated bytes for code 132 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 30.50, instruction count 22, allocated bytes for code 88 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-7.02%) : 30631.dasm - System.Linq.Expressions.CachedReflectionInfo:getMethodBaseGetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)

@@ -15,9 +15,9 @@ ;* V04 tmp4 [V04,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V06 tmp6 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Reflection.MethodInfo>
-; V07 tmp7 [V07,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp"
+;* V07 tmp7 [V07,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V09 cse0 [V09,T01] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
+; V09 cse0 [V09,T01] ( 2, 1 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -31,9 +31,9 @@ G_M10374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #2 LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- cbnz x0, G_M10374_IG06
+ cbnz x0, G_M10374_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -49,22 +49,14 @@ G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=0.50 PerfScore 3.50 -G_M10374_IG04: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M10374_IG07 - add w0, w0, #1 - cmp w0, #1 - blt G_M10374_IG04 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M10374_IG05
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 movz x1, #0xD1FFAB1E @@ -89,12 +81,12 @@ G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=84 bbWeight=0.50 PerfScore 7.00 -G_M10374_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=136 bbWeight=0.50 PerfScore 12.25 +G_M10374_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10374_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E LSL #16 @@ -112,7 +104,7 @@ G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 8, PerfScore 43.50, instruction count 57, allocated bytes for code 228 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 212, prolog size 8, PerfScore 21.25, instruction count 53, allocated bytes for code 212 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -123,7 +115,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-3.70%) : 9638.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)

@@ -11,11 +11,13 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.NameResolution+MakeCtorGroup@243> ; V01 arg1 [V01,T03] ( 3, 3 ) ref -> x1 class-hnd single-def <FSharp.Compiler.Infos+MethInfo> ; V02 loc0 [V02,T04] ( 3, 2.50) ref -> x0 class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[int]>
-; V03 loc1 [V03,T02] ( 4, 9 ) int -> x1 -; V04 loc2 [V04,T00] ( 4, 12.50) ref -> x0 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]> -; V05 loc3 [V05,T01] ( 3, 12 ) ref -> x2 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
+; V03 loc1 [V03,T02] ( 4, 9 ) int -> x0 +; V04 loc2 [V04,T00] ( 6, 13.50) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]> +; V05 loc3 [V05,T01] ( 5, 13 ) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V08 cse0 [V08,T05] ( 3, 2.50) ref -> x1 "CSE - aggressive" +; V09 cse1 [V09,T06] ( 2, 1 ) int -> x0 "CSE - moderate"
; ; Lcl frame size = 0 @@ -47,37 +49,35 @@ G_M3240_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0] - mov w1, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3240_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0, #0x08] - ; gcrRegs +[x2] - cbz x2, G_M3240_IG07
+G_M3240_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0-x1]
ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- adds w1, w1, w0 - bvs G_M3240_IG09 - mov x0, x2 - ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M3240_IG06: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M3240_IG07 + ldr w1, [x1, #0x10] + ; gcrRegs -[x1] + adds w0, w0, w1 + bvs G_M3240_IG08 + mov x1, x2 + ; gcrRegs +[x1]
b G_M3240_IG06 ;; size=28 bbWeight=4 PerfScore 40.00
-G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x2] - mov w0, w1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3240_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1-x2]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M3240_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3240_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 8, PerfScore 57.25, instruction count 27, allocated bytes for code 108 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 58.25, instruction count 26, allocated bytes for code 104 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+62.50%) : 23601.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 22 ) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> -; V01 loc0 [V01,T01] ( 3, 13 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
+; V00 arg0 [V00,T00] ( 10, 24.50) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> +; V01 loc0 [V01,T01] ( 5, 14.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -24,10 +24,11 @@ G_M1427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M1427_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M1427_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M1427_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M1427_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x19, [x19, #0x10]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ b G_M1427_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M1427_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -36,19 +37,41 @@ G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x19, G_M1427_IG06 - ;; size=24 bbWeight=8 PerfScore 32.00 -G_M1427_IG05: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=1 PerfScore 4.00 +G_M1427_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cbz x0, G_M1427_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M1427_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + b G_M1427_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M1427_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] +[x19] + ldr x19, [x19, #0x10] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M1427_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=8 PerfScore 32.00 +G_M1427_IG09: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M1427_IG07
;; size=4 bbWeight=4 PerfScore 4.00
-G_M1427_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1427_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 64, prolog size 16, PerfScore 50.00, instruction count 16, allocated bytes for code 64 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
+; Total bytes of code 104, prolog size 16, PerfScore 55.62, instruction count 26, allocated bytes for code 104 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 23453.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M15847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M15847_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M15847_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x18] cmp w1, w3 bge G_M15847_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M15847_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M15847_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M15847_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M15847_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M15847_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M15847_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M15847_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M15847_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M15847_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M15847_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M15847_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M15847_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x18] + cmp w1, w3 + bge G_M15847_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M15847_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M15847_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M15847_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M15847_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M15847_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M15847_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M15847_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M15847_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #32 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M15847_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M15847_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+70.59%) : 28673.dasm - System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)

@@ -8,67 +8,93 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
+; V00 this [V00,T04] ( 7, 17 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 17 ) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T04] ( 3, 17 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 4, 25 ) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
+; V02 tmp1 [V02,T02] ( 6, 19.12) ref -> x1 "CASTCLASS eval op1" +; V03 tmp2 [V03,T03] ( 6, 19.12) long -> x3 "fgMakeTemp is creating a new local variable" +; V04 tmp3 [V04,T00] ( 8, 29.12) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
; V05 cse0 [V05,T01] ( 3, 20 ) ref -> x1 "CSE - aggressive"
+; V06 cse1 [V06,T06] ( 3, 2.50) ref -> x1 "CSE - aggressive" +; V07 cse2 [V07,T05] ( 3, 5 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40934_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M40934_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x1, [x0, #0x20] ; gcrRegs +[x1]
- cbz x1, G_M40934_IG06 - ;; size=8 bbWeight=8 PerfScore 32.00 -G_M40934_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M40934_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x1 ; gcrRegs +[x0] ldr x2, [x0]
- movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32
+ movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #1 LSL #32 + mov x3, x19
cmp x2, x3 beq G_M40934_IG05
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.50 +G_M40934_IG04: ; bbWeight=0.06, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x3 + bl CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + ;; size=8 bbWeight=0.06 PerfScore 0.09 +G_M40934_IG05: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x20] + ; gcrRegs +[x1] + cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=8 PerfScore 32.00 +G_M40934_IG06: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x1 + ; gcrRegs +[x0] + ldr x2, [x0] + mov x3, x19 + cmp x2, x3 + beq G_M40934_IG08 + ;; size=20 bbWeight=4 PerfScore 22.00 +G_M40934_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x3 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M40934_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - b G_M40934_IG02
+G_M40934_IG08: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + b G_M40934_IG05
;; size=4 bbWeight=4 PerfScore 4.00
-G_M40934_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M40934_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w0, [x0, #0x64] ; gcrRegs -[x0] ;; size=4 bbWeight=1 PerfScore 3.00
-G_M40934_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M40934_IG10: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 68, prolog size 8, PerfScore 69.25, instruction count 17, allocated bytes for code 68 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 75.84, instruction count 29, allocated bytes for code 116 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -76,7 +102,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 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
E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 12,692 78 12,576 38 -4,316 +4,530,280
benchmarks.run_tiered.osx.arm64.checked.mch 2,812 9 2,797 6 -156 +905,080
coreclr_tests.run.osx.arm64.checked.mch 30,832 1,534 28,995 303 -45,768 +7,121,660
libraries.crossgen2.osx.arm64.checked.mch 21,669 218 21,417 34 -2,620 +4,872,084
libraries.pmi.osx.arm64.checked.mch 27,556 121 27,341 94 -1,836 +7,496,120
libraries_tests.run.osx.arm64.Release.mch 47,935 504 47,096 335 -17,640 +24,486,568
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 25,266 135 25,003 128 -4,880 +10,216,244
realworld.run.osx.arm64.checked.mch 4,870 23 4,831 16 -368 +1,858,872
173,632 2,622 170,056 954 -77,584 +61,486,908

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run_pgo.osx.arm64.checked.mch 84,460 48,345 36,115 183 (0.22%) 366 (0.43%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,239 37,331 10,908 63 (0.13%) 77 (0.16%)
coreclr_tests.run.osx.arm64.checked.mch 585,898 358,028 227,870 437 (0.07%) 687 (0.12%)
libraries.crossgen2.osx.arm64.checked.mch 233,608 15 233,593 0 (0.00%) 152 (0.07%)
libraries.pmi.osx.arm64.checked.mch 313,361 18 313,343 2,034 (0.64%) 2,255 (0.71%)
libraries_tests.run.osx.arm64.Release.mch 630,623 462,062 168,561 965 (0.15%) 1,634 (0.26%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 300,820 21,558 279,262 2,087 (0.69%) 2,294 (0.76%)
realworld.run.osx.arm64.checked.mch 31,158 3 31,155 326 (1.03%) 385 (1.22%)
2,228,167 927,360 1,300,807 6,095 (0.27%) 7,850 (0.35%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34173472 (overridden on cmd)
Total bytes of diff: 38699436 (overridden on cmd)
Total bytes of delta: 4525964 (13.24 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25100 : 66089.dasm (66.59 % of base)
       14588 : 26497.dasm (44.77 % of base)
       11800 : 45845.dasm (99.59 % of base)
       11696 : 30465.dasm (97.34 % of base)
       11452 : 43947.dasm (97.71 % of base)
       11408 : 34752.dasm (96.48 % of base)
       11364 : 37275.dasm (96.37 % of base)
       11352 : 40949.dasm (96.14 % of base)
        9600 : 46184.dasm (97.52 % of base)
        9092 : 72665.dasm (79.17 % of base)
        9044 : 72673.dasm (79.78 % of base)
        8568 : 72672.dasm (78.90 % of base)
        8288 : 42478.dasm (77.92 % of base)
        7516 : 71561.dasm (36.64 % of base)
        7504 : 27235.dasm (57.18 % of base)
        7096 : 40377.dasm (62.22 % of base)
        7068 : 74139.dasm (74.81 % of base)
        7064 : 73134.dasm (75.53 % of base)
        6716 : 59508.dasm (70.37 % of base)
        6624 : 59516.dasm (68.74 % of base)

Top file improvements (bytes):
        -208 : 81010.dasm (-2.23 % of base)
        -208 : 12158.dasm (-2.25 % of base)
        -184 : 73185.dasm (-1.88 % of base)
        -184 : 74199.dasm (-1.88 % of base)
        -156 : 62350.dasm (-20.63 % of base)
        -152 : 81148.dasm (-20.00 % of base)
        -148 : 73598.dasm (-1.55 % of base)
        -148 : 78210.dasm (-19.89 % of base)
        -144 : 81149.dasm (-1.50 % of base)
        -140 : 70463.dasm (-1.42 % of base)
        -132 : 70054.dasm (-1.34 % of base)
        -132 : 72816.dasm (-1.35 % of base)
        -132 : 75594.dasm (-1.40 % of base)
        -124 : 18902.dasm (-21.09 % of base)
        -124 : 3902.dasm (-21.09 % of base)
        -124 : 64666.dasm (-21.09 % of base)
        -124 : 29535.dasm (-21.09 % of base)
        -124 : 25297.dasm (-21.09 % of base)
        -124 : 68042.dasm (-21.09 % of base)
        -124 : 68218.dasm (-21.09 % of base)

93 total files with Code Size differences (30 improved, 63 regressed), 20 unchanged.

Top method regressions (bytes):
       25100 (66.59 % of base) : 66089.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       14588 (44.77 % of base) : 26497.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       11800 (99.59 % of base) : 45845.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
       11696 (97.34 % of base) : 30465.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
       11452 (97.71 % of base) : 43947.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
       11408 (96.48 % of base) : 34752.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
       11364 (96.37 % of base) : 37275.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
       11352 (96.14 % of base) : 40949.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
        9600 (97.52 % of base) : 46184.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        9092 (79.17 % of base) : 72665.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        9044 (79.78 % of base) : 72673.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8568 (78.90 % of base) : 72672.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 42478.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7516 (36.64 % of base) : 71561.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7504 (57.18 % of base) : 27235.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7096 (62.22 % of base) : 40377.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        7068 (74.81 % of base) : 74139.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        7064 (75.53 % of base) : 73134.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6716 (70.37 % of base) : 59508.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6624 (68.74 % of base) : 59516.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)

Top method improvements (bytes):
        -208 (-2.23 % of base) : 81010.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -208 (-2.25 % of base) : 12158.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -184 (-1.88 % of base) : 73185.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -184 (-1.88 % of base) : 74199.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -156 (-20.63 % of base) : 62350.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -152 (-20.00 % of base) : 81148.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-19.89 % of base) : 78210.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-1.55 % of base) : 73598.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -144 (-1.50 % of base) : 81149.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -140 (-1.42 % of base) : 70463.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -132 (-1.34 % of base) : 70054.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -132 (-1.35 % of base) : 72816.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -132 (-1.40 % of base) : 75594.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -124 (-21.09 % of base) : 18902.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 3902.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 64666.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 29535.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 25297.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 68042.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 68218.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)

Top method regressions (percentages):
        3156 (120.83 % of base) : 77755.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        3156 (120.83 % of base) : 82433.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        3740 (112.92 % of base) : 59045.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        3728 (112.70 % of base) : 25651.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        3728 (112.70 % of base) : 74432.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        3728 (112.70 % of base) : 67982.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        3728 (112.70 % of base) : 82425.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        3728 (112.70 % of base) : 79232.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        2288 (110.00 % of base) : 42500.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        2288 (110.00 % of base) : 67885.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        2564 (109.01 % of base) : 81819.dasm - NumericSortJagged:Run():double:this (Tier1)
        2308 (107.85 % of base) : 8332.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        2320 (107.21 % of base) : 8285.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        1740 (105.84 % of base) : 31735.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        4716 (105.08 % of base) : 21591.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        4716 (105.08 % of base) : 66631.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        4716 (105.08 % of base) : 80824.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        4716 (105.08 % of base) : 45708.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        4716 (104.99 % of base) : 73236.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)
        4716 (104.99 % of base) : 69923.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)

Top method improvements (percentages):
        -124 (-21.09 % of base) : 18902.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 3902.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 64666.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 29535.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 25297.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 68042.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 68218.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 69496.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -156 (-20.63 % of base) : 62350.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -152 (-20.00 % of base) : 81148.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-19.89 % of base) : 78210.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
         -84 (-9.05 % of base) : 44032.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -72 (-8.33 % of base) : 37788.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -32 (-5.88 % of base) : 57618.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ClassDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -32 (-5.88 % of base) : 57623.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
         -16 (-3.23 % of base) : 7988.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -16 (-3.23 % of base) : 27068.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -16 (-3.10 % of base) : 65232.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)
         -36 (-2.60 % of base) : 8910.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
         -36 (-2.59 % of base) : 8352.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)


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: 15534704 (overridden on cmd)
Total bytes of diff: 16439628 (overridden on cmd)
Total bytes of delta: 904924 (5.83 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25100 : 43188.dasm (66.59 % of base)
       14588 : 23331.dasm (44.77 % of base)
       11400 : 32836.dasm (101.93 % of base)
        8592 : 45338.dasm (79.23 % of base)
        8288 : 31909.dasm (77.92 % of base)
        7516 : 44862.dasm (36.64 % of base)
        7404 : 23650.dasm (56.42 % of base)
        7280 : 20972.dasm (87.58 % of base)
        7088 : 31118.dasm (62.20 % of base)
        6404 : 45760.dasm (33.28 % of base)
        6140 : 39826.dasm (68.13 % of base)
        6036 : 47810.dasm (78.11 % of base)
        5756 : 21965.dasm (79.37 % of base)
        5272 : 23564.dasm (36.15 % of base)
        4712 : 42131.dasm (66.55 % of base)
        4644 : 23547.dasm (57.45 % of base)
        4624 : 2384.dasm (86.46 % of base)
        4556 : 44841.dasm (83.69 % of base)
        4372 : 46871.dasm (32.02 % of base)
        4340 : 47317.dasm (41.35 % of base)

Top file improvements (bytes):
        -112 : 5376.dasm (-11.34 % of base)
         -12 : 43072.dasm (-4.41 % of base)
          -8 : 9290.dasm (-1.21 % of base)
          -4 : 20937.dasm (-2.13 % of base)
          -4 : 39319.dasm (-2.13 % of base)
          -4 : 3056.dasm (-2.08 % of base)
          -4 : 41231.dasm (-0.93 % of base)
          -4 : 41578.dasm (-0.46 % of base)
          -4 : 15220.dasm (-1.96 % of base)

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

Top method regressions (bytes):
       25100 (66.59 % of base) : 43188.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       14588 (44.77 % of base) : 23331.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       11400 (101.93 % of base) : 32836.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8592 (79.23 % of base) : 45338.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 31909.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7516 (36.64 % of base) : 44862.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7404 (56.42 % of base) : 23650.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7280 (87.58 % of base) : 20972.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        7088 (62.20 % of base) : 31118.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        6404 (33.28 % of base) : 45760.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6140 (68.13 % of base) : 39826.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6036 (78.11 % of base) : 47810.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5756 (79.37 % of base) : 21965.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5272 (36.15 % of base) : 23564.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4712 (66.55 % of base) : 42131.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
        4644 (57.45 % of base) : 23547.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
        4624 (86.46 % of base) : 2384.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        4556 (83.69 % of base) : 44841.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        4372 (32.02 % of base) : 46871.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4340 (41.35 % of base) : 47317.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)

Top method improvements (bytes):
        -112 (-11.34 % of base) : 5376.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 43072.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 9290.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 41578.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 15220.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 3056.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 39319.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 20937.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 41231.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
        1652 (110.72 % of base) : 42845.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1456 (106.12 % of base) : 42841.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (Tier1-OSR)
       11400 (101.93 % of base) : 32836.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        1544 (100.00 % of base) : 3474.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
        2836 (98.61 % of base) : 6460.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        3308 (97.29 % of base) : 45809.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        2516 (96.62 % of base) : 6682.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
        2232 (96.04 % of base) : 41900.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (Tier1)
         828 (95.83 % of base) : 42081.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDeclarationModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):this (Tier1)
        3384 (95.70 % of base) : 20170.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
        1584 (95.65 % of base) : 45159.dasm - MicroBenchmarks.Serializers.LoginViewModel:proto_2(byref,MicroBenchmarks.Serializers.LoginViewModel):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
        2984 (95.64 % of base) : 40133.dasm - MicroBenchmarks.Serializers.MyEventsListerItem:proto_8(byref,MicroBenchmarks.Serializers.MyEventsListerItem):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        1580 (95.41 % of base) : 30161.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
        2060 (94.67 % of base) : 30487.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         820 (94.47 % of base) : 47922.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1)
         728 (94.30 % of base) : 44033.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
        1376 (94.25 % of base) : 40134.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:proto_10(byref,MicroBenchmarks.Serializers.MyEventsListerItemTask):MicroBenchmarks.Serializers.MyEventsListerItemTask (FullOpts)
        1276 (94.10 % of base) : 30484.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1-OSR)
        2284 (93.91 % of base) : 42004.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,ubyte,ubyte,byref):this (Tier1)
         412 (93.64 % of base) : 32754.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR)

Top method improvements (percentages):
        -112 (-11.34 % of base) : 5376.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 43072.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 39319.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 20937.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 3056.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 15220.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 9290.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 41231.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 41578.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)


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: 482896688 (overridden on cmd)
Total bytes of diff: 489972580 (overridden on cmd)
Total bytes of delta: 7075892 (1.47 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
      126392 : 190046.dasm (99.74 % of base)
       26480 : 306997.dasm (98.91 % of base)
       16932 : 294581.dasm (92.06 % of base)
       13148 : 198998.dasm (97.28 % of base)
       12748 : 581244.dasm (86.84 % of base)
       12224 : 577937.dasm (99.61 % of base)
       11816 : 578583.dasm (92.23 % of base)
       10924 : 581442.dasm (97.05 % of base)
       10640 : 581013.dasm (98.34 % of base)
       10332 : 574276.dasm (73.36 % of base)
       10104 : 579325.dasm (90.86 % of base)
        9676 : 577830.dasm (99.22 % of base)
        9676 : 580983.dasm (99.22 % of base)
        9552 : 292834.dasm (91.01 % of base)
        9084 : 581232.dasm (86.28 % of base)
        8940 : 307316.dasm (100.22 % of base)
        8592 : 203002.dasm (79.17 % of base)
        8356 : 292062.dasm (99.24 % of base)
        8268 : 292825.dasm (67.66 % of base)
        7720 : 580984.dasm (98.77 % of base)

Top file improvements (bytes):
        -192 : 579434.dasm (-32.65 % of base)
        -192 : 571858.dasm (-32.65 % of base)
        -192 : 551961.dasm (-32.65 % of base)
        -192 : 554575.dasm (-32.65 % of base)
        -192 : 474461.dasm (-32.65 % of base)
        -156 : 447403.dasm (-21.20 % of base)
        -156 : 511217.dasm (-21.20 % of base)
        -156 : 320061.dasm (-21.20 % of base)
        -156 : 321479.dasm (-21.20 % of base)
        -156 : 441602.dasm (-21.20 % of base)
        -156 : 483202.dasm (-21.31 % of base)
        -156 : 496221.dasm (-21.31 % of base)
        -156 : 500107.dasm (-21.20 % of base)
        -156 : 529793.dasm (-21.20 % of base)
        -156 : 549966.dasm (-21.20 % of base)
        -156 : 473925.dasm (-21.31 % of base)
        -156 : 485053.dasm (-21.20 % of base)
        -156 : 492338.dasm (-21.31 % of base)
        -156 : 554586.dasm (-21.20 % of base)
        -156 : 585813.dasm (-21.20 % of base)

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

Top method regressions (bytes):
      126392 (99.74 % of base) : 190046.dasm - Program:TestEntryPoint():int (FullOpts)
       26480 (98.91 % of base) : 306997.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
       16932 (92.06 % of base) : 294581.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
       13148 (97.28 % of base) : 198998.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12748 (86.84 % of base) : 581244.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       12224 (99.61 % of base) : 577937.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       11816 (92.23 % of base) : 578583.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       10924 (97.05 % of base) : 581442.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       10640 (98.34 % of base) : 581013.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       10332 (73.36 % of base) : 574276.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
       10104 (90.86 % of base) : 579325.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
        9676 (99.22 % of base) : 577830.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9676 (99.22 % of base) : 580983.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9552 (91.01 % of base) : 292834.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        9084 (86.28 % of base) : 581232.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1-OSR)
        8940 (100.22 % of base) : 307316.dasm - SimpleArray_01.Test:Test1() (FullOpts)
        8592 (79.17 % of base) : 203002.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        8356 (99.24 % of base) : 292062.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        8268 (67.66 % of base) : 292825.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        7720 (98.77 % of base) : 580984.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByReverseImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)

Top method improvements (bytes):
        -192 (-32.65 % of base) : 579434.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 571858.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 551961.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 554575.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 474461.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 447403.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 511217.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 320061.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 321479.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 441602.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 483202.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 496221.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 500107.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 529793.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 549966.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 473925.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 485053.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 492338.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 554586.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 585813.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        1276 (131.28 % of base) : 236973.dasm - struct1:Process2DArray(byref) (FullOpts)
         844 (129.45 % of base) : 236283.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
        1248 (128.40 % of base) : 236282.dasm - class1:Process2DArray(byref) (FullOpts)
         908 (127.53 % of base) : 236974.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
         676 (121.58 % of base) : 441715.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
        2712 (112.81 % of base) : 461065.dasm - NumericSortJagged:Run():double:this (Tier1-OSR)
        2616 (111.04 % of base) : 461367.dasm - AssignJagged:Run():double:this (Tier1)
         832 (109.47 % of base) : 236591.dasm - Test_jaggedarr_basics.double1:Process2DArray(byref) (FullOpts)
         844 (109.33 % of base) : 236337.dasm - Test_doublearr_basics.double1:Process2DArray(byref) (FullOpts)
         236 (109.26 % of base) : 511106.dasm - testout1:Test1(int):int (Tier1-OSR)
         236 (109.26 % of base) : 511108.dasm - testout1:Test2(int):int (Tier1-OSR)
        2496 (108.52 % of base) : 201432.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (FullOpts)
         600 (107.91 % of base) : 441720.dasm - Chaos.A0A0A0`1[System.__Canon]:RecurseA0A0A0(int):this (Tier1)
         600 (107.91 % of base) : 441717.dasm - Chaos.A0A0A1:RecurseA0A0A1(int):this (Tier1)
         600 (107.91 % of base) : 441721.dasm - Chaos.A0A1`1[System.__Canon]:RecurseA0A1(int):this (Tier1)
         600 (107.91 % of base) : 441716.dasm - Chaos.A0A1A2`1[System.__Canon]:RecurseA0A1A2(int):this (Tier1)
         600 (107.91 % of base) : 441719.dasm - Chaos.A0A3:RecurseA0A3(int):this (Tier1)
         596 (107.19 % of base) : 441708.dasm - Chaos.A0A0A1A2`1[System.__Canon]:RecurseA0A0A1A2(int):this (Tier1)
         596 (107.19 % of base) : 441707.dasm - Chaos.A0A1A2A3`2[System.__Canon,System.__Canon]:RecurseA0A1A2A3(int):this (Tier1)
         596 (107.19 % of base) : 441712.dasm - Chaos.A0A1A4`2[System.__Canon,System.__Canon]:RecurseA0A1A4(int):this (Tier1)

Top method improvements (percentages):
         -68 (-56.67 % of base) : 253193.dasm - foo:Main():int (FullOpts)
         -92 (-41.82 % of base) : 201532.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
         -92 (-40.35 % of base) : 201534.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
        -192 (-32.65 % of base) : 579434.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 571858.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 551961.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 554575.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 474461.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -124 (-21.38 % of base) : 450790.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 509593.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 512005.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 571133.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 317053.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 430842.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 467377.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 469634.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 481417.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 500513.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 504769.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 558345.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


libraries.crossgen2.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: 55476760 (overridden on cmd)
Total bytes of diff: 60346224 (overridden on cmd)
Total bytes of delta: 4869464 (8.78 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       56704 : 74392.dasm (72.10 % of base)
       18656 : 152505.dasm (68.11 % of base)
       12264 : 45427.dasm (97.92 % of base)
       11676 : 82358.dasm (75.23 % of base)
       10508 : 202444.dasm (74.76 % of base)
       10044 : 45323.dasm (94.47 % of base)
        8600 : 64175.dasm (97.77 % of base)
        8204 : 140504.dasm (43.21 % of base)
        7908 : 17649.dasm (73.39 % of base)
        6696 : 70679.dasm (88.85 % of base)
        6500 : 32804.dasm (94.53 % of base)
        6492 : 171251.dasm (69.93 % of base)
        6280 : 202378.dasm (85.23 % of base)
        5808 : 202630.dasm (81.66 % of base)
        5512 : 140557.dasm (95.96 % of base)
        5480 : 85980.dasm (79.84 % of base)
        5472 : 64490.dasm (83.82 % of base)
        5096 : 73875.dasm (30.25 % of base)
        5044 : 140831.dasm (88.18 % of base)
        4876 : 202155.dasm (72.82 % of base)

Top file improvements (bytes):
         -80 : 35996.dasm (-9.13 % of base)
         -48 : 129824.dasm (-0.49 % of base)
         -44 : 32389.dasm (-10.09 % of base)
         -40 : 159937.dasm (-8.40 % of base)
         -40 : 3403.dasm (-8.40 % of base)
         -36 : 209711.dasm (-5.59 % of base)
         -32 : 229310.dasm (-4.68 % of base)
         -32 : 179582.dasm (-3.45 % of base)
         -28 : 168985.dasm (-6.14 % of base)
         -28 : 191755.dasm (-5.22 % of base)
         -28 : 32390.dasm (-6.60 % of base)
         -28 : 150618.dasm (-4.32 % of base)
         -28 : 168875.dasm (-5.22 % of base)
         -28 : 168981.dasm (-5.43 % of base)
         -28 : 150627.dasm (-5.38 % of base)
         -28 : 13295.dasm (-5.22 % of base)
         -28 : 13403.dasm (-5.43 % of base)
         -28 : 202368.dasm (-4.49 % of base)
         -28 : 208871.dasm (-4.86 % of base)
         -28 : 215301.dasm (-5.69 % of base)

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

Top method regressions (bytes):
       56704 (72.10 % of base) : 74392.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
       18656 (68.11 % of base) : 152505.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       12264 (97.92 % of base) : 45427.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       11676 (75.23 % of base) : 82358.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       10508 (74.76 % of base) : 202444.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10044 (94.47 % of base) : 45323.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        8600 (97.77 % of base) : 64175.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        8204 (43.21 % of base) : 140504.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
        7908 (73.39 % of base) : 17649.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6696 (88.85 % of base) : 70679.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        6500 (94.53 % of base) : 32804.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        6492 (69.93 % of base) : 171251.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        6280 (85.23 % of base) : 202378.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5808 (81.66 % of base) : 202630.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5512 (95.96 % of base) : 140557.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
        5480 (79.84 % of base) : 85980.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        5472 (83.82 % of base) : 64490.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5096 (30.25 % of base) : 73875.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
        5044 (88.18 % of base) : 140831.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessRedefine(System.Xml.Schema.XmlSchemaRedefine):this (FullOpts)
        4876 (72.82 % of base) : 202155.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

Top method improvements (bytes):
         -80 (-9.13 % of base) : 35996.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -48 (-0.49 % of base) : 129824.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -44 (-10.09 % of base) : 32389.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -40 (-8.40 % of base) : 159937.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 3403.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -36 (-5.59 % of base) : 209711.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -32 (-4.68 % of base) : 229310.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
         -32 (-3.45 % of base) : 179582.dasm - System.Linq.Parallel.FirstQueryOperator`1+FirstQueryOperatorEnumerator`1[System.__Canon,System.__Canon]:MoveNext(byref,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 191755.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 168875.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.22 % of base) : 13295.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-5.43 % of base) : 168981.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-5.43 % of base) : 13403.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-6.14 % of base) : 168985.dasm - Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -28 (-5.69 % of base) : 215301.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:IsSubsetOfSortedSetWithSameComparer(System.Collections.Generic.SortedSet`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-4.86 % of base) : 208871.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-4.49 % of base) : 202368.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.__Canon]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
         -28 (-6.60 % of base) : 32390.dasm - System.Reflection.CustomAttribute:IsDefined(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):ubyte (FullOpts)
         -28 (-5.38 % of base) : 150627.dasm - System.Text.Json.JsonPropertyDictionary`1[System.__Canon]:ContainsProperty(System.String):ubyte:this (FullOpts)
         -28 (-4.32 % of base) : 150618.dasm - System.Text.Json.JsonPropertyDictionary`1[System.__Canon]:TryGetValue(System.String,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
        4808 (117.27 % of base) : 202968.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1716 (115.95 % of base) : 226270.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4592 (115.26 % of base) : 203010.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         144 (105.88 % of base) : 86915.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.VisualBasic.Symbol):Microsoft.CodeAnalysis.VisualBasic.Symbol (FullOpts)
         152 (105.56 % of base) : 55743.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 55745.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 55748.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:SkipInsignificantDirectives(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         164 (105.13 % of base) : 55744.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
        2356 (102.61 % of base) : 85225.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
        1240 (102.31 % of base) : 228078.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
        1412 (101.15 % of base) : 140741.dasm - System.Xml.XmlTextReaderImpl:SkipUntil(ushort,ubyte):this (FullOpts)
         168 (100.00 % of base) : 63079.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
        2988 (99.73 % of base) : 140563.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        2668 (99.70 % of base) : 139863.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberEnd(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],ubyte):this (FullOpts)
        2588 (99.23 % of base) : 140584.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        3096 (98.22 % of base) : 193525.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
       12264 (97.92 % of base) : 45427.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        3268 (97.84 % of base) : 139876.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberBegin(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):this (FullOpts)
        8600 (97.77 % of base) : 64175.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        1332 (97.37 % of base) : 176443.dasm - System.Net.Http.Http3RequestStream:BufferHeaderCollection(System.Net.Http.Headers.HttpHeaders):int:this (FullOpts)

Top method improvements (percentages):
         -20 (-12.20 % of base) : 25751.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-12.20 % of base) : 212700.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-10.42 % of base) : 223703.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
         -16 (-10.26 % of base) : 155104.dasm - System.Security.Cryptography.TripleDES:get_Key():ubyte[]:this (FullOpts)
         -44 (-10.09 % of base) : 32389.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -80 (-9.13 % of base) : 35996.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-8.89 % of base) : 167649.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 12040.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 154047.dasm - System.Security.Cryptography.DES:get_Key():ubyte[]:this (FullOpts)
         -16 (-8.51 % of base) : 11861.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-8.51 % of base) : 167474.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -40 (-8.40 % of base) : 159937.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 3403.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -24 (-7.69 % of base) : 167917.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -24 (-7.69 % of base) : 12315.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 167094.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 157482.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -16 (-7.69 % of base) : 768.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -24 (-7.50 % of base) : 34797.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-7.46 % of base) : 11608.dasm - Microsoft.CodeAnalysis.UnionCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)


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: 78203768 (overridden on cmd)
Total bytes of diff: 85698052 (overridden on cmd)
Total bytes of delta: 7494284 (9.58 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       19212 : 133319.dasm (80.64 % of base)
       18912 : 246092.dasm (70.61 % of base)
       17612 : 133278.dasm (96.71 % of base)
       13244 : 87252.dasm (97.47 % of base)
       10880 : 171711.dasm (99.49 % of base)
       10608 : 64407.dasm (97.25 % of base)
       10580 : 231393.dasm (77.57 % of base)
       10120 : 64513.dasm (92.13 % of base)
        9448 : 94363.dasm (91.30 % of base)
        8792 : 31101.dasm (65.30 % of base)
        8724 : 56064.dasm (87.48 % of base)
        8356 : 54380.dasm (99.24 % of base)
        8348 : 137481.dasm (88.58 % of base)
        8348 : 5084.dasm (94.01 % of base)
        8332 : 55653.dasm (67.81 % of base)
        7400 : 4766.dasm (72.24 % of base)
        7260 : 133594.dasm (72.48 % of base)
        7084 : 132167.dasm (86.90 % of base)
        6864 : 133268.dasm (87.73 % of base)
        6864 : 281676.dasm (54.81 % of base)

Top file improvements (bytes):
        -116 : 253302.dasm (-12.50 % of base)
        -104 : 26286.dasm (-9.70 % of base)
        -100 : 159388.dasm (-4.52 % of base)
         -68 : 50654.dasm (-11.33 % of base)
         -68 : 50694.dasm (-11.11 % of base)
         -56 : 94015.dasm (-5.58 % of base)
         -44 : 203059.dasm (-15.71 % of base)
         -40 : 220574.dasm (-8.13 % of base)
         -36 : 131166.dasm (-2.73 % of base)
         -32 : 313392.dasm (-8.08 % of base)
         -32 : 313393.dasm (-6.96 % of base)
         -28 : 314071.dasm (-5.79 % of base)
         -24 : 266227.dasm (-3.57 % of base)
         -24 : 268892.dasm (-2.46 % of base)
         -20 : 50653.dasm (-3.62 % of base)
         -20 : 203092.dasm (-8.33 % of base)
         -20 : 222670.dasm (-0.89 % of base)
         -20 : 269566.dasm (-3.12 % of base)
         -20 : 269567.dasm (-3.05 % of base)
         -20 : 50693.dasm (-3.55 % of base)

93 total files with Code Size differences (32 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       19212 (80.64 % of base) : 133319.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       18912 (70.61 % of base) : 246092.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       17612 (96.71 % of base) : 133278.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
       13244 (97.47 % of base) : 87252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       10880 (99.49 % of base) : 171711.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
       10608 (97.25 % of base) : 64407.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10580 (77.57 % of base) : 231393.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10120 (92.13 % of base) : 64513.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9448 (91.30 % of base) : 94363.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8792 (65.30 % of base) : 31101.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
        8724 (87.48 % of base) : 56064.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        8356 (99.24 % of base) : 54380.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        8348 (88.58 % of base) : 137481.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        8348 (94.01 % of base) : 5084.dasm - System.DateTimeFormat:FormatCustomized[ubyte](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        8332 (67.81 % of base) : 55653.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        7400 (72.24 % of base) : 4766.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        7260 (72.48 % of base) : 133594.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        7084 (86.90 % of base) : 132167.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        6864 (87.73 % of base) : 133268.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        6864 (54.81 % of base) : 281676.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)

Top method improvements (bytes):
        -116 (-12.50 % of base) : 253302.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
        -104 (-9.70 % of base) : 26286.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
        -100 (-4.52 % of base) : 159388.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.DeclarationTable+_Closure$__38-0:_Lambda$__0(Microsoft.CodeAnalysis.VisualBasic.Symbols.SingleTypeDeclaration):ubyte:this (FullOpts)
         -68 (-11.33 % of base) : 50654.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 50694.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -56 (-5.58 % of base) : 94015.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-15.71 % of base) : 203059.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)
         -40 (-8.13 % of base) : 220574.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
         -36 (-2.73 % of base) : 131166.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+PerThreadStartStopData+<Stackify>d__3:MoveNext():ubyte:this (FullOpts)
         -32 (-8.08 % of base) : 313392.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-6.96 % of base) : 313393.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -28 (-5.79 % of base) : 314071.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
         -24 (-3.57 % of base) : 266227.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -24 (-2.46 % of base) : 268892.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Find(System.Predicate`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float]:this (FullOpts)
         -20 (-3.62 % of base) : 50653.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
         -20 (-3.55 % of base) : 50693.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.Nullable`1[int],double,ubyte],double):ubyte:this (FullOpts)
         -20 (-0.89 % of base) : 222670.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
         -20 (-8.33 % of base) : 203092.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -20 (-3.12 % of base) : 269566.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-3.05 % of base) : 269567.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 233508.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 299053.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 233569.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1600 (105.54 % of base) : 198064.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteDerivedTypes(System.Xml.Serialization.StructMapping):this (FullOpts)
        3636 (104.36 % of base) : 288877.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
         232 (103.57 % of base) : 311172.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
        2628 (100.77 % of base) : 161232.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillArgumentListInner(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+SpillBuilder],ubyte,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        1856 (100.43 % of base) : 83825.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEDeltaAssemblyBuilder:GetAnonymousDelegateMapFromMetadata(System.Reflection.Metadata.MetadataReader,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Emit.SynthesizedDelegateKey,Microsoft.CodeAnalysis.Emit.SynthesizedDelegateValue] (FullOpts)
        4768 (100.42 % of base) : 136317.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:ReportIndirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref) (FullOpts)
        5008 (100.24 % of base) : 133472.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindRedimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
        3200 (100.13 % of base) : 137403.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:ProcessPartialMethodsIfAny(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        1672 (100.00 % of base) : 1185.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        3152 (99.87 % of base) : 137314.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindOptions(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax],Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
       10880 (99.49 % of base) : 171711.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
        4228 (99.25 % of base) : 133645.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlnsAttributes(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.BoundXmlAttribute],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
        8356 (99.24 % of base) : 54380.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        6076 (98.96 % of base) : 54382.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByReverseImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        1984 (97.83 % of base) : 60342.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        2692 (97.82 % of base) : 171767.dasm - Microsoft.Build.Evaluation.ExpressionShredder:GetReferencedItemNamesAndMetadata(System.String,int,int,byref,int) (FullOpts)
        6008 (97.79 % of base) : 87264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

Top method improvements (percentages):
         -44 (-15.71 % of base) : 203059.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)
        -116 (-12.50 % of base) : 253302.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -68 (-11.33 % of base) : 50654.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 50694.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
        -104 (-9.70 % of base) : 26286.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-8.70 % of base) : 288631.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -20 (-8.33 % of base) : 203092.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -40 (-8.13 % of base) : 220574.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
         -32 (-8.08 % of base) : 313392.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -16 (-7.02 % of base) : 255551.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Byte():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255559.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Char():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255553.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int16():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255555.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int32():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255557.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int64():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255552.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_SByte():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255554.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt16():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255556.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt32():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255558.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt64():System.Reflection.MethodInfo (FullOpts)
         -16 (-7.02 % of base) : 255542.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -32 (-6.96 % of base) : 313393.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)


libraries_tests.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 310283060 (overridden on cmd)
Total bytes of diff: 334751988 (overridden on cmd)
Total bytes of delta: 24468928 (7.89 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25312 : 85547.dasm (93.15 % of base)
       22520 : 64926.dasm (91.49 % of base)
       22460 : 56727.dasm (89.77 % of base)
       20608 : 482681.dasm (94.12 % of base)
       19256 : 157502.dasm (83.22 % of base)
       18576 : 88621.dasm (98.41 % of base)
       17420 : 601616.dasm (99.98 % of base)
       16944 : 372973.dasm (92.59 % of base)
       16688 : 598175.dasm (86.75 % of base)
       16244 : 581303.dasm (90.24 % of base)
       16096 : 89990.dasm (90.28 % of base)
       15356 : 591597.dasm (73.63 % of base)
       14984 : 537212.dasm (88.37 % of base)
       14852 : 582080.dasm (72.62 % of base)
       14792 : 453583.dasm (70.90 % of base)
       14644 : 55384.dasm (88.11 % of base)
       14072 : 576696.dasm (91.71 % of base)
       14044 : 398558.dasm (77.40 % of base)
       13952 : 398557.dasm (76.27 % of base)
       13928 : 398555.dasm (77.69 % of base)

Top file improvements (bytes):
        -396 : 30643.dasm (-2.51 % of base)
        -296 : 76397.dasm (-2.43 % of base)
        -296 : 83823.dasm (-3.12 % of base)
        -208 : 474818.dasm (-1.49 % of base)
        -192 : 113794.dasm (-32.65 % of base)
        -192 : 489290.dasm (-32.65 % of base)
        -192 : 65718.dasm (-32.65 % of base)
        -192 : 104712.dasm (-32.65 % of base)
        -192 : 122895.dasm (-32.65 % of base)
        -192 : 129241.dasm (-32.65 % of base)
        -192 : 265790.dasm (-32.65 % of base)
        -192 : 284036.dasm (-32.65 % of base)
        -192 : 3356.dasm (-32.65 % of base)
        -192 : 353688.dasm (-32.65 % of base)
        -192 : 139440.dasm (-32.65 % of base)
        -192 : 175459.dasm (-32.65 % of base)
        -192 : 196372.dasm (-32.65 % of base)
        -192 : 265022.dasm (-32.65 % of base)
        -192 : 273123.dasm (-32.65 % of base)
        -192 : 297741.dasm (-32.65 % of base)

90 total files with Code Size differences (27 improved, 63 regressed), 20 unchanged.

Top method regressions (bytes):
       25312 (93.15 % of base) : 85547.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       22520 (91.49 % of base) : 64926.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
       22460 (89.77 % of base) : 56727.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       20608 (94.12 % of base) : 482681.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
       19256 (83.22 % of base) : 157502.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       18576 (98.41 % of base) : 88621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       17420 (99.98 % of base) : 601616.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeDefTableRows():this (Tier1)
       16944 (92.59 % of base) : 372973.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
       16688 (86.75 % of base) : 598175.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
       16244 (90.24 % of base) : 581303.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       16096 (90.28 % of base) : 89990.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (Tier1)
       15356 (73.63 % of base) : 591597.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       14984 (88.37 % of base) : 537212.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       14852 (72.62 % of base) : 582080.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       14792 (70.90 % of base) : 453583.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1)
       14644 (88.11 % of base) : 55384.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       14072 (91.71 % of base) : 576696.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
       14044 (77.40 % of base) : 398558.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
       13952 (76.27 % of base) : 398557.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (Tier1)
       13928 (77.69 % of base) : 398555.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)

Top method improvements (bytes):
        -396 (-2.51 % of base) : 30643.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -296 (-2.43 % of base) : 76397.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -296 (-3.12 % of base) : 83823.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -208 (-1.49 % of base) : 474818.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (Tier1)
        -192 (-32.65 % of base) : 113794.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 489290.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 65718.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 104712.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 122895.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 129241.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 265790.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 284036.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 3356.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 353688.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 139440.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 175459.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 196372.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 265022.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 273123.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 297741.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        4032 (144.83 % of base) : 158645.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
        4416 (120.13 % of base) : 357174.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Min_Tensor_NanReturned>b__207_0(int):this (Tier1)
        2112 (113.30 % of base) : 288370.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int][],int[],System.Threading.CancellationToken):this (Tier1)
        2780 (111.38 % of base) : 65134.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
        6052 (111.33 % of base) : 547130.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (Tier1-OSR)
        6776 (111.15 % of base) : 600882.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         524 (109.17 % of base) : 449680.dasm - System.Lazy`1[int]:CreateValue():int:this (Instrumented Tier1)
         524 (109.17 % of base) : 80846.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (Instrumented Tier1)
        9952 (108.93 % of base) : 592381.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
        5640 (108.71 % of base) : 104676.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[System.__Canon,System.DateTimeOffset]]:IntroSort(System.Span`1[System.ValueTuple`2[System.__Canon,System.DateTimeOffset]],int,System.Comparison`1[System.ValueTuple`2[System.__Canon,System.DateTimeOffset]]) (Tier1)
        2440 (107.39 % of base) : 305315.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchIndexOfAny_ManyString() (Tier1-OSR)
        2444 (107.38 % of base) : 305156.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchValuesLargerIndexOfAny_ManyString() (Tier1-OSR)
        4020 (107.14 % of base) : 54608.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        5488 (107.02 % of base) : 599258.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
        4016 (106.92 % of base) : 83137.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        3152 (106.20 % of base) : 582210.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2633_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3332 (105.71 % of base) : 177031.dasm - System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests:AddManyItems_ThenTakeOnSameThread_ItemsOutputInExpectedOrder():this (Tier1-OSR)
        2636 (104.94 % of base) : 593689.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IParameterTypeInformation],Microsoft.CodeAnalysis.Emit.EmitContext) (Tier1)
        1460 (104.58 % of base) : 309585.dasm - System.SpanTests.SpanTests:TestMatchLastIndexOfAny_Byte_TwoByte() (Tier1-OSR)
        1480 (104.52 % of base) : 310044.dasm - System.SpanTests.SpanTests:TestMatchLastIndexOfAny_Byte_ThreeByte() (Tier1-OSR)

Top method improvements (percentages):
        -192 (-32.65 % of base) : 113794.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 489290.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 65718.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 104712.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 122895.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 129241.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 265790.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 284036.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 3356.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 353688.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 139440.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 175459.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 196372.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 265022.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 273123.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 297741.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 532635.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -124 (-21.38 % of base) : 264877.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 109993.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 118981.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


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: 160885512 (overridden on cmd)
Total bytes of diff: 171096876 (overridden on cmd)
Total bytes of delta: 10211364 (6.35 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       26044 : 103094.dasm (35.40 % of base)
       24940 : 108605.dasm (35.22 % of base)
       20800 : 59198.dasm (71.17 % of base)
       18264 : 173198.dasm (101.87 % of base)
       13424 : 197598.dasm (56.63 % of base)
       13332 : 197188.dasm (56.95 % of base)
       13156 : 6938.dasm (97.31 % of base)
       13056 : 49311.dasm (97.35 % of base)
       12640 : 44142.dasm (96.14 % of base)
       11428 : 293797.dasm (96.39 % of base)
       11352 : 53910.dasm (83.87 % of base)
       11200 : 91488.dasm (78.90 % of base)
       11056 : 174582.dasm (89.31 % of base)
        9956 : 55561.dasm (91.51 % of base)
        9320 : 91395.dasm (72.84 % of base)
        9148 : 101813.dasm (94.62 % of base)
        9008 : 6009.dasm (90.99 % of base)
        8932 : 174580.dasm (85.20 % of base)
        8904 : 174584.dasm (86.89 % of base)
        8904 : 174583.dasm (86.65 % of base)

Top file improvements (bytes):
        -548 : 68311.dasm (-7.01 % of base)
        -488 : 50536.dasm (-3.84 % of base)
        -488 : 44818.dasm (-3.84 % of base)
        -380 : 67258.dasm (-5.04 % of base)
        -164 : 228324.dasm (-4.60 % of base)
         -92 : 294742.dasm (-5.01 % of base)
         -84 : 287623.dasm (-10.99 % of base)
         -80 : 294761.dasm (-3.57 % of base)
         -80 : 173184.dasm (-12.50 % of base)
         -80 : 294545.dasm (-3.69 % of base)
         -80 : 295656.dasm (-4.34 % of base)
         -72 : 287757.dasm (-8.26 % of base)
         -64 : 271132.dasm (-7.34 % of base)
         -60 : 287758.dasm (-5.49 % of base)
         -56 : 271053.dasm (-11.02 % of base)
         -56 : 271056.dasm (-10.85 % of base)
         -56 : 271059.dasm (-10.85 % of base)
         -56 : 54908.dasm (-5.58 % of base)
         -48 : 106402.dasm (-7.95 % of base)
         -44 : 282449.dasm (-6.47 % of base)

92 total files with Code Size differences (31 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       26044 (35.40 % of base) : 103094.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
       24940 (35.22 % of base) : 108605.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
       20800 (71.17 % of base) : 59198.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       18264 (101.87 % of base) : 173198.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
       13424 (56.63 % of base) : 197598.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13332 (56.95 % of base) : 197188.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13156 (97.31 % of base) : 6938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13056 (97.35 % of base) : 49311.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12640 (96.14 % of base) : 44142.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11428 (96.39 % of base) : 293797.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
       11352 (83.87 % of base) : 53910.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
       11200 (78.90 % of base) : 91488.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       11056 (89.31 % of base) : 174582.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
        9956 (91.51 % of base) : 55561.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9320 (72.84 % of base) : 91395.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        9148 (94.62 % of base) : 101813.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test4():ubyte (FullOpts)
        9008 (90.99 % of base) : 6009.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8932 (85.20 % of base) : 174580.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
        8904 (86.65 % of base) : 174583.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
        8904 (86.89 % of base) : 174584.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)

Top method improvements (bytes):
        -548 (-7.01 % of base) : 68311.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[ulong]:ComparingWithOtherSets(int):this (FullOpts)
        -488 (-3.84 % of base) : 50536.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -488 (-3.84 % of base) : 44818.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -380 (-5.04 % of base) : 67258.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
        -164 (-4.60 % of base) : 228324.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
         -92 (-5.01 % of base) : 294742.dasm - System.Threading.Tasks.Dataflow.Tests.BufferBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -84 (-10.99 % of base) : 287623.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2650_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -80 (-3.57 % of base) : 294761.dasm - System.Threading.Tasks.Dataflow.Tests.TransformBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -80 (-3.69 % of base) : 294545.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -80 (-4.34 % of base) : 295656.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptionsAsyncEnumerable>d__37:MoveNext():this (FullOpts)
         -80 (-12.50 % of base) : 173184.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -72 (-8.26 % of base) : 287757.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2825_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-7.34 % of base) : 271132.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4763_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -60 (-5.49 % of base) : 287758.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2826_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-5.58 % of base) : 54908.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__65:MoveNext():ubyte:this (FullOpts)
         -56 (-11.02 % of base) : 271053.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4719_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4722_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271059.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4724_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -48 (-7.95 % of base) : 106402.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -44 (-4.68 % of base) : 198445.dasm - System.Tests.ArraySegment_Tests:IList_IndexOf() (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 90647.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 184462.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 90569.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         580 (111.54 % of base) : 97034.dasm - System.Diagnostics.Metrics.Tests.MetricsTests+<>c__DisplayClass15_0:<SerializedEventsTest>b__3():this (FullOpts)
        2724 (107.58 % of base) : 276424.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4474_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         968 (107.08 % of base) : 299028.dasm - System.Threading.Tests.BarrierTests:RunBarrierTest7a() (FullOpts)
        3140 (106.22 % of base) : 272495.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4185_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         232 (103.57 % of base) : 29706.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 42069.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 86911.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
       18264 (101.87 % of base) : 173198.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        1396 (101.16 % of base) : 49789.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
        3168 (100.25 % of base) : 287711.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2725_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        1644 (100.00 % of base) : 196044.dasm - DataContractSerializerTests:DCS_InvalidDataContract_Read_Invalid_Types_Throws() (FullOpts)
        1644 (100.00 % of base) : 197372.dasm - DataContractSerializerTests:DCS_InvalidDataContract_Read_Invalid_Types_Throws() (FullOpts)
        2148 (99.81 % of base) : 46294.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)
         728 (99.45 % of base) : 265577.dasm - System.Text.RegularExpressions.Tests.MatchCollectionTests:ICollection_CopyTo(int) (FullOpts)
        2480 (99.36 % of base) : 196011.dasm - DataContractSerializerTests:DCS_MyPersonSurrogate_Stress() (FullOpts)
        2004 (99.01 % of base) : 51718.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)
        2076 (98.67 % of base) : 42821.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,ubyte):this (FullOpts)

Top method improvements (percentages):
         -80 (-12.50 % of base) : 173184.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -56 (-11.02 % of base) : 271053.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4719_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -84 (-10.99 % of base) : 287623.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2650_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4722_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 271059.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4724_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-8.93 % of base) : 212946.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
         -16 (-8.70 % of base) : 176108.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -72 (-8.26 % of base) : 287757.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2825_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -32 (-8.00 % of base) : 218495.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
         -48 (-7.95 % of base) : 106402.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -24 (-7.69 % of base) : 3827.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -64 (-7.34 % of base) : 271132.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4763_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-7.19 % of base) : 212899.dasm - System.Security.Cryptography.DES:set_Key(ubyte[]):this (FullOpts)
        -548 (-7.01 % of base) : 68311.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[ulong]:ComparingWithOtherSets(int):this (FullOpts)
         -40 (-6.99 % of base) : 163769.dasm - PurchaseOrder:CreateInstance():PurchaseOrder (FullOpts)
         -16 (-6.67 % of base) : 186798.dasm - System.Runtime.InteropServices.Tests.PrelinkTests:Prelink_RuntimeSuppliedMethod_Success():this (FullOpts)
         -20 (-6.58 % of base) : 177693.dasm - System.Reflection.Emit.Tests.TypeBuilderGetMethod+<>c:<GetMethod_TypeNotTypeBuilder_ThrowsArgumentException>b__2_0():System.Object:this (FullOpts)
         -44 (-6.47 % of base) : 282447.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex608_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 282449.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex610_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 282452.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex614_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 14574520 (overridden on cmd)
Total bytes of diff: 16433024 (overridden on cmd)
Total bytes of delta: 1858504 (12.75 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       13104 : 18742.dasm (97.44 % of base)
       10488 : 23988.dasm (97.18 % of base)
       10008 : 22844.dasm (91.35 % of base)
        9288 : 17535.dasm (91.45 % of base)
        7888 : 1224.dasm (96.76 % of base)
        7400 : 30180.dasm (72.24 % of base)
        6916 : 16507.dasm (85.89 % of base)
        6680 : 22393.dasm (77.96 % of base)
        6196 : 28872.dasm (94.05 % of base)
        6096 : 19854.dasm (87.44 % of base)
        5968 : 18617.dasm (79.19 % of base)
        5712 : 19165.dasm (97.81 % of base)
        5384 : 12265.dasm (101.05 % of base)
        5312 : 12264.dasm (99.25 % of base)
        5068 : 1415.dasm (110.27 % of base)
        4952 : 7034.dasm (79.82 % of base)
        4932 : 22377.dasm (54.68 % of base)
        4892 : 20078.dasm (87.80 % of base)
        4736 : 16127.dasm (94.95 % of base)
        4692 : 15384.dasm (92.43 % of base)

Top file improvements (bytes):
        -112 : 611.dasm (-10.65 % of base)
         -56 : 26905.dasm (-5.58 % of base)
         -44 : 1557.dasm (-33.33 % of base)
         -16 : 2283.dasm (-2.16 % of base)
         -16 : 30631.dasm (-7.02 % of base)
         -16 : 12687.dasm (-3.31 % of base)
         -12 : 26863.dasm (-2.27 % of base)
         -12 : 19345.dasm (-1.94 % of base)
         -12 : 5243.dasm (-1.49 % of base)
         -12 : 14923.dasm (-2.29 % of base)
          -8 : 31184.dasm (-0.80 % of base)
          -8 : 28974.dasm (-0.68 % of base)
          -4 : 207.dasm (-2.00 % of base)
          -4 : 21479.dasm (-1.79 % of base)
          -4 : 22409.dasm (-1.96 % of base)
          -4 : 23178.dasm (-1.41 % of base)
          -4 : 3169.dasm (-2.08 % of base)
          -4 : 4626.dasm (-2.17 % of base)
          -4 : 101.dasm (-2.08 % of base)
          -4 : 12884.dasm (-2.17 % of base)

78 total files with Code Size differences (22 improved, 56 regressed), 16 unchanged.

Top method regressions (bytes):
       13104 (97.44 % of base) : 18742.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       10488 (97.18 % of base) : 23988.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10008 (91.35 % of base) : 22844.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9288 (91.45 % of base) : 17535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        7888 (96.76 % of base) : 1224.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        7400 (72.24 % of base) : 30180.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6916 (85.89 % of base) : 16507.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6680 (77.96 % of base) : 22393.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
        6196 (94.05 % of base) : 28872.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        6096 (87.44 % of base) : 19854.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        5968 (79.19 % of base) : 18617.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5712 (97.81 % of base) : 19165.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5384 (101.05 % of base) : 12265.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5312 (99.25 % of base) : 12264.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5068 (110.27 % of base) : 1415.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        4952 (79.82 % of base) : 7034.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckEntityDefn$cont@2269(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.TypedTree+Entity,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Core.Unit) (FullOpts)
        4932 (54.68 % of base) : 22377.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
        4892 (87.80 % of base) : 20078.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
        4736 (94.95 % of base) : 16127.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseSwitchExpressionArms():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SwitchExpressionArmSyntax]:this (FullOpts)
        4692 (92.43 % of base) : 15384.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)

Top method improvements (bytes):
        -112 (-10.65 % of base) : 611.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -56 (-5.58 % of base) : 26905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 1557.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -16 (-2.16 % of base) : 2283.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -16 (-3.31 % of base) : 12687.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -16 (-7.02 % of base) : 30631.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -12 (-1.49 % of base) : 5243.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -12 (-2.27 % of base) : 26863.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 14923.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-1.94 % of base) : 19345.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
          -8 (-0.68 % of base) : 28974.dasm - System.Management.Automation.LanguagePrimitives:FigureParseConversion(System.Type,System.Type):System.Management.Automation.LanguagePrimitives+PSConverter`1[System.Object] (FullOpts)
          -8 (-0.80 % of base) : 31184.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
          -4 (-3.70 % of base) : 9638.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
          -4 (-1.41 % of base) : 23178.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.79 % of base) : 21479.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 12884.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 207.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 101.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 4626.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 3169.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
        1592 (117.75 % of base) : 1593.dasm - BepuPhysics.Constraints.TwoBodyTypeProcessor`7[BepuPhysics.Constraints.BallSocketPrestepData,BepuUtilities.Vector3Wide,BepuPhysics.Constraints.BallSocketFunctions,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessAll,BepuPhysics.Constraints.AccessAll]:WarmStart[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks,BepuPhysics.Constraints.BatchShouldAlwaysIntegrate,BepuPhysics.Constraints.DisallowPoseIntegration](byref,byref,BepuPhysics.Bodies,byref,float,float,int,int,int):this (FullOpts)
        5068 (110.27 % of base) : 1415.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        3152 (108.99 % of base) : 1443.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        5384 (101.05 % of base) : 12265.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        2876 (100.28 % of base) : 1550.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
        1544 (100.00 % of base) : 272.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        5312 (99.25 % of base) : 12264.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        3820 (99.07 % of base) : 1697.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        3748 (99.05 % of base) : 11843.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ConvertStride(int):this (FullOpts)
        1984 (97.83 % of base) : 22796.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        5712 (97.81 % of base) : 19165.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         916 (97.45 % of base) : 1577.dasm - BepuPhysics.CollisionDetection.PairCache:FlushMappingChanges():this (FullOpts)
       13104 (97.44 % of base) : 18742.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        1636 (97.38 % of base) : 1440.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,float,float,byref,byref,byref):this (FullOpts)
       10488 (97.18 % of base) : 23988.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        2860 (97.01 % of base) : 19193.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:<ComputeApplicableUserDefinedImplicitConversionSet>g__addCandidatesFromType|146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],byref,ubyte):this (FullOpts)
        7888 (96.76 % of base) : 1224.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
         228 (96.61 % of base) : 14918.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        3152 (96.45 % of base) : 12266.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessCornerTile(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        2108 (96.34 % of base) : 16983.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)

Top method improvements (percentages):
         -44 (-33.33 % of base) : 1557.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
        -112 (-10.65 % of base) : 611.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-7.02 % of base) : 30631.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -56 (-5.58 % of base) : 26905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
          -4 (-3.70 % of base) : 9638.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
         -16 (-3.31 % of base) : 12687.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -12 (-2.29 % of base) : 14923.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-2.27 % of base) : 26863.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 12884.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 4626.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.16 % of base) : 2283.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
          -4 (-2.13 % of base) : 16605.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 101.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 3169.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 207.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.96 % of base) : 22409.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.94 % of base) : 19345.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
          -4 (-1.79 % of base) : 21479.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
         -12 (-1.49 % of base) : 5243.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          -4 (-1.41 % of base) : 23178.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)



windows arm64

Diffs are based on 2,306,322 contexts (929,692 MinOpts, 1,376,630 FullOpts).

MISSED contexts: base: 6,353 (0.27%), diff: 8,476 (0.37%)

Overall (+66,017,632 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,657,768 +1,647,456
benchmarks.run_pgo.windows.arm64.checked.mch 46,143,416 +6,908,548
benchmarks.run_tiered.windows.arm64.checked.mch 15,239,072 +895,968
coreclr_tests.run.windows.arm64.checked.mch 493,954,596 +7,397,932
libraries.crossgen2.windows.arm64.checked.mch 58,806,560 +5,102,604
libraries.pmi.windows.arm64.checked.mch 77,801,572 +7,378,152
libraries_tests.run.windows.arm64.Release.mch 307,088,556 +23,889,608
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 169,130,060 +10,455,324
realworld.run.windows.arm64.checked.mch 15,374,216 +1,926,800
smoke_tests.nativeaot.windows.arm64.checked.mch 3,929,512 +415,240

FullOpts (+66,017,632 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,657,232 +1,647,456
benchmarks.run_pgo.windows.arm64.checked.mch 30,085,000 +6,908,548
benchmarks.run_tiered.windows.arm64.checked.mch 4,066,344 +895,968
coreclr_tests.run.windows.arm64.checked.mch 155,367,424 +7,397,932
libraries.crossgen2.windows.arm64.checked.mch 58,804,924 +5,102,604
libraries.pmi.windows.arm64.checked.mch 77,681,588 +7,378,152
libraries_tests.run.windows.arm64.Release.mch 106,082,604 +23,889,608
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 155,993,520 +10,455,324
realworld.run.windows.arm64.checked.mch 14,810,236 +1,926,800
smoke_tests.nativeaot.windows.arm64.checked.mch 3,928,500 +415,240

Example diffs

benchmarks.run.windows.arm64.checked.mch

-16 (-5.33%) : 22041.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)

@@ -17,9 +17,9 @@ ; V06 tmp4 [V06,T07] ( 4, 2.50) ref -> x0 ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> x4 class-hnd exact single-def "Inlining Arg" <System.Type[]>
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> x0 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V11 cse0 [V11,T04] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -33,30 +33,20 @@ G_M13201_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M13201_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M13201_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x4, [x0] ; gcrRegs +[x4] ldrsb wzr, [x19]
- mov w0, wzr - add x1, x4, #16 - ; byrRegs +[x1] - ;; size=28 bbWeight=1 PerfScore 8.50 -G_M13201_IG03: ; bbWeight=4, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M13201_IG11 - add w0, w0, #1 - cmp w0, #0 - ble G_M13201_IG03 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M13201_IG04: ; bbWeight=1, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - ; byrRegs -[x1] - mov x0, x19
+ add x0, x4, #16 + ; byrRegs +[x0] + ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + cbz x0, G_M13201_IG09 + mov x0, x19
mov w1, #20 mov x2, xzr mov w3, #3 @@ -69,17 +59,17 @@ G_M13201_IG04: ; bbWeight=1, gcrefRegs=180010 {x4 x19 x20}, byrefRegs=000 ; gcr arg pop 0 mov x21, x0 ; gcrRegs +[x21]
- cbnz x21, G_M13201_IG09 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ cbnz x21, G_M13201_IG07 + ;; size=76 bbWeight=1 PerfScore 26.00 +G_M13201_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20-x21] mov x0, xzr ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M13201_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - cbnz x0, G_M13201_IG10
+G_M13201_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbnz x0, G_M13201_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M13201_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M13201_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -90,14 +80,14 @@ G_M13201_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M13201_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M13201_IG06: ; bbWeight=0.50, 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.50 PerfScore 2.50
-G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M13201_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20-x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -126,16 +116,16 @@ G_M13201_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380 blr x5 ; gcrRegs -[x3 x21] ; gcr arg pop 0
- b G_M13201_IG06
+ b G_M13201_IG04
;; size=72 bbWeight=0.50 PerfScore 9.25
-G_M13201_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13201_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13201_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -154,7 +144,7 @@ G_M13201_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 24, PerfScore 69.50, instruction count 75, allocated bytes for code 300 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
+; Total bytes of code 284, prolog size 24, PerfScore 49.00, instruction count 71, allocated bytes for code 284 (MethodHash=1c7bcc6e) for method System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
; ============================================================ Unwind Info: @@ -165,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.41%) : 5967.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,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

-16 (-3.54%) : 7281.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)

@@ -16,10 +16,10 @@ ; V05 tmp2 [V05,T03] ( 3, 6 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <System.String> ; V06 tmp3 [V06,T09] ( 2, 4 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Type> ; V07 tmp4 [V07,T04] ( 3, 6 ) ref -> x5 class-hnd "Inlining Arg" <System.Type[]>
-; V08 tmp5 [V08,T00] ( 5, 17 ) int -> x0 "Inline stloc first use temp"
+;* V08 tmp5 [V08,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; V10 tmp7 [V10,T10] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 2, 5 ) byref -> x1 hoist "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; V12 cse1 [V12,T08] ( 4, 4 ) long -> x20 "CSE - aggressive" ; ; Lcl frame size = 8 @@ -89,25 +89,14 @@ G_M50779_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by mov x5, x23 ; gcrRegs +[x5] ldrsb wzr, [x21]
- cbz x22, G_M50779_IG10 - mov w0, wzr - add x1, x5, #16 - ; byrRegs +[x1] - ;; size=152 bbWeight=1 PerfScore 45.00 -G_M50779_IG03: ; bbWeight=4, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x23] - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M50779_IG11 - add w0, w0, #1 - cmp w0, #0 - ble G_M50779_IG03 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M50779_IG04: ; bbWeight=1, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2] - ; byrRegs -[x1] - mov x0, x21
+ cbz x22, G_M50779_IG08 + add x0, x5, #16 + ; byrRegs +[x0] + ldr x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0] + cbz x0, G_M50779_IG09 + mov x0, x21
mov x1, x22 ; gcrRegs +[x1] mov w2, #52 @@ -118,13 +107,13 @@ G_M50779_IG04: ; bbWeight=1, gcrefRegs=600020 {x5 x21 x22}, byrefRegs=000 ldr x7, [x7, #0x90] ldr x7, [x7, #0x38] blr x7
- ; gcrRegs -[x1 x5 x21-x22]
+ ; gcrRegs -[x1 x5 x21-x23]
; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M50779_IG06 - ;; size=48 bbWeight=1 PerfScore 14.50 -G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M50779_IG04 + ;; size=204 bbWeight=1 PerfScore 63.00 +G_M50779_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -136,7 +125,7 @@ G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 and w0, w0, #7 cmp w0, #6
- bne G_M50779_IG06
+ bne G_M50779_IG04
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -148,12 +137,24 @@ G_M50779_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M50779_IG08
+ beq G_M50779_IG06
;; size=72 bbWeight=0.50 PerfScore 13.00
-G_M50779_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50779_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] mov x0, xzr ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50779_IG05: ; 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=20 bbWeight=0.50 PerfScore 3.00 +G_M50779_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M50779_IG07: ; bbWeight=0.50, epilog, nogc, extend ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -161,19 +162,7 @@ G_M50779_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M50779_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M50779_IG09: ; 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=20 bbWeight=0.50 PerfScore 3.00 -G_M50779_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50779_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -191,7 +180,7 @@ G_M50779_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M50779_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50779_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -209,7 +198,7 @@ G_M50779_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 452, prolog size 24, PerfScore 108.00, instruction count 113, allocated bytes for code 452 (MethodHash=33a639a4) for method ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 436, prolog size 24, PerfScore 87.50, instruction count 109, allocated bytes for code 436 (MethodHash=33a639a4) for method ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -220,7 +209,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 21835.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[int]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M57541_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57541_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M57541_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x1C] cmp w1, w3 bge G_M57541_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M57541_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M57541_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M57541_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M57541_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M57541_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57541_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M57541_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M57541_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M57541_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M57541_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M57541_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M57541_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x1C] + cmp w1, w3 + bge G_M57541_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M57541_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M57541_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M57541_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M57541_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M57541_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M57541_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M57541_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M57541_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #24 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M57541_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M57541_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=439c1f3a) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 23223.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 20328.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M39152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M39152_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M39152_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M39152_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M39152_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M39152_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M39152_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M39152_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M39152_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M39152_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M39152_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M39152_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M39152_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M39152_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M39152_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M39152_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M39152_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M39152_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M39152_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M39152_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M39152_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M39152_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M39152_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M39152_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M39152_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M39152_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M39152_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=6a4c670f) for method System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- 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

-16 (-3.23%) : 34801.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -19,28 +19,28 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport> ; V09 tmp2 [V09,T13] ( 2, 4 ) int -> x1 "impImportAndPushBox"
-; V10 tmp3 [V10,T14] ( 4, 2 ) int -> x28
+; V10 tmp3 [V10,T16] ( 4, 2 ) int -> x28
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T17] ( 2, 2 ) int -> x14
+; V13 tmp6 [V13,T18] ( 2, 2 ) int -> x14
; V14 tmp7 [V14,T04] ( 3, 6.00) ref -> x0 class-hnd exact single-def "dup spill" <int[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T18] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V17 tmp10 [V17,T19] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
; V18 tmp11 [V18,T11] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T15] ( 3, 2.00) ubyte -> x28 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5.00) int -> x1 "Inline stloc first use temp"
+; V21 tmp14 [V21,T17] ( 3, 2.00) ubyte -> x28 "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> x26 single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T09] ( 3, 3 ) long -> x25 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T19] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP -; V29 cse0 [V29,T10] ( 4, 4 ) int -> x27 "CSE - aggressive" -; V30 cse1 [V30,T16] ( 2, 2.00) byref -> x0 hoist "CSE - moderate" -; V31 cse2 [V31,T20] ( 2, 2.00) int -> x2 hoist "CSE - moderate"
+; V28 tmp21 [V28,T20] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP +; V29 cse0 [V29,T14] ( 2, 2.00) byref -> x14 "CSE - aggressive" +; V30 cse1 [V30,T15] ( 2, 2.00) int -> x15 "CSE - aggressive" +; V31 cse2 [V31,T10] ( 4, 4 ) int -> x27 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=60 bbWeight=1 PerfScore 10.50 G_M43134_IG02: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M43134_IG11
+ cbz x21, G_M43134_IG10
;; size=4 bbWeight=1 PerfScore 1.00 G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -96,13 +96,13 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe cmp x0, x25 cset x0, eq cmp w1, w0
- bne G_M43134_IG12
+ bne G_M43134_IG11
;; size=84 bbWeight=1 PerfScore 20.00 G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x13-x14]
- cbz w27, G_M43134_IG14
+ cbz w27, G_M43134_IG13
;; size=4 bbWeight=1 PerfScore 1.00
-G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -112,30 +112,24 @@ G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byre ; gcr arg pop 0 mov w14, #0xD1FFAB1E str w14, [x0, #0x10]
- mov w1, wzr - add x0, x0, #16
+ add x14, x0, #16 + ; byrRegs +[x14] + ldr w14, [x14] + ; byrRegs -[x14] + and w15, w20, #0xD1FFAB1E + cmp w14, w15 + beq G_M43134_IG06 + b G_M43134_IG12 + ;; size=52 bbWeight=1.00 PerfScore 11.00 +G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs +[x0] - and w2, w20, #0xD1FFAB1E - ;; size=40 bbWeight=1.00 PerfScore 6.00 -G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0001 {x0}, byref, isz - ldr w14, [x0, w1, UXTW #2] - cmp w14, w2 - beq G_M43134_IG07 - add w1, w1, #1 - cmp w1, #1 - bge G_M43134_IG13 - b G_M43134_IG06 - ;; size=28 bbWeight=1.00 PerfScore 7.50 -G_M43134_IG07: ; bbWeight=1.00, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref - ; byrRegs -[x0]
mov w28, #1 ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
tst w28, #255
- beq G_M43134_IG15
+ beq G_M43134_IG14
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43134_IG09: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
str w23, [x19, #0x2C] add x14, x19, #24 ; byrRegs +[x14] @@ -167,7 +161,7 @@ G_M43134_IG09: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe str xzr, [x19, #0x08] str xzr, [x19, #0x20] ;; size=72 bbWeight=1 PerfScore 13.50
-G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -176,7 +170,7 @@ G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22 x26] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 @@ -192,7 +186,7 @@ G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=468000 ; gcr arg pop 0 b G_M43134_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -207,16 +201,16 @@ G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 b G_M43134_IG04 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
- b G_M43134_IG08
+ b G_M43134_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
mov w28, #1 tst w28, #255
- bne G_M43134_IG09
+ bne G_M43134_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M43134_IG15: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -229,10 +223,10 @@ G_M43134_IG15: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M43134_IG09
+ b G_M43134_IG08
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 60, PerfScore 68.50, instruction count 124, allocated bytes for code 496 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 480, prolog size 60, PerfScore 66.00, instruction count 120, allocated bytes for code 480 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info: @@ -243,7 +237,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-3.23%) : 52125.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -19,28 +19,28 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport> ; V09 tmp2 [V09,T13] ( 2, 4 ) int -> x1 "impImportAndPushBox"
-; V10 tmp3 [V10,T14] ( 4, 2 ) int -> x28
+; V10 tmp3 [V10,T16] ( 4, 2 ) int -> x28
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T17] ( 2, 2 ) int -> x14
+; V13 tmp6 [V13,T18] ( 2, 2 ) int -> x14
; V14 tmp7 [V14,T04] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T18] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V17 tmp10 [V17,T19] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
; V18 tmp11 [V18,T11] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T15] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5 ) int -> x1 "Inline stloc first use temp"
+; V21 tmp14 [V21,T17] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> x26 single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T09] ( 3, 3 ) long -> x25 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T19] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T20] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; V29 cse0 [V29,T10] ( 4, 4 ) int -> x27 "CSE - aggressive"
-; V30 cse1 [V30,T16] ( 2, 2 ) byref -> x0 hoist "CSE - moderate" -; V31 cse2 [V31,T20] ( 2, 2 ) int -> x2 hoist "CSE - moderate"
+; V30 cse1 [V30,T14] ( 2, 2 ) byref -> x14 "CSE - aggressive" +; V31 cse2 [V31,T15] ( 2, 2 ) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=60 bbWeight=1 PerfScore 10.50 G_M43134_IG02: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M43134_IG10
+ cbz x21, G_M43134_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -96,11 +96,11 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe cmp x0, x25 cset x0, eq cmp w1, w0
- bne G_M43134_IG11
+ bne G_M43134_IG10
;; size=84 bbWeight=1 PerfScore 20.00 G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x13-x14]
- cbz w27, G_M43134_IG13
+ cbz w27, G_M43134_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -110,30 +110,24 @@ G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 mov w14, #0xD1FFAB1E str w14, [x0, #0x10]
- mov w1, wzr - add x0, x0, #16
+ add x14, x0, #16 + ; byrRegs +[x14] + ldr w14, [x14] + ; byrRegs -[x14] + and w15, w20, #0xD1FFAB1E + cmp w14, w15 + beq G_M43134_IG05 + b G_M43134_IG11 + ;; size=56 bbWeight=1 PerfScore 12.00 +G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs +[x0] - and w2, w20, #0xD1FFAB1E - ;; size=44 bbWeight=1 PerfScore 7.00 -G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0001 {x0}, byref, isz - ldr w14, [x0, w1, UXTW #2] - cmp w14, w2 - beq G_M43134_IG06 - add w1, w1, #1 - cmp w1, #1 - bge G_M43134_IG12 - b G_M43134_IG05 - ;; size=28 bbWeight=1 PerfScore 7.50 -G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref - ; byrRegs -[x0]
mov w28, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
tst w28, #255
- beq G_M43134_IG14
+ beq G_M43134_IG13
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
str w23, [x19, #0x2C] add x14, x19, #24 ; byrRegs +[x14] @@ -165,7 +159,7 @@ G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe str xzr, [x19, #0x08] str xzr, [x19, #0x20] ;; size=72 bbWeight=1 PerfScore 13.50
-G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -174,7 +168,7 @@ G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22 x26] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 @@ -190,7 +184,7 @@ G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=468000 ; gcr arg pop 0 b G_M43134_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG10: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -205,16 +199,16 @@ G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 b G_M43134_IG04 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
- b G_M43134_IG07
+ b G_M43134_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
mov w28, #1 tst w28, #255
- bne G_M43134_IG08
+ bne G_M43134_IG07
;; size=12 bbWeight=0 PerfScore 0.00
-G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -227,10 +221,10 @@ G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M43134_IG08
+ b G_M43134_IG07
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 60, PerfScore 68.50, instruction count 124, allocated bytes for code 496 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 480, prolog size 60, PerfScore 66.00, instruction count 120, allocated bytes for code 480 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info: @@ -241,7 +235,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-3.23%) : 57405.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -19,28 +19,28 @@ ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport> ; V09 tmp2 [V09,T13] ( 2, 4 ) int -> x1 "impImportAndPushBox"
-; V10 tmp3 [V10,T14] ( 4, 2 ) int -> x28
+; V10 tmp3 [V10,T16] ( 4, 2 ) int -> x28
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T17] ( 2, 2 ) int -> x14
+; V13 tmp6 [V13,T18] ( 2, 2 ) int -> x14
; V14 tmp7 [V14,T04] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <int[]> ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T18] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V17 tmp10 [V17,T19] ( 2, 2 ) ubyte -> x0 "Inline return value spill temp"
; V18 tmp11 [V18,T11] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T15] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5 ) int -> x1 "Inline stloc first use temp"
+; V21 tmp14 [V21,T17] ( 3, 2 ) ubyte -> x28 "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V25 tmp18 [V25,T12] ( 2, 2 ) ref -> x26 single-def "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ; V26 tmp19 [V26,T09] ( 3, 3 ) long -> x25 single-def "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T19] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T20] ( 2, 2 ) long -> x0 "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
; V29 cse0 [V29,T10] ( 4, 4 ) int -> x27 "CSE - aggressive"
-; V30 cse1 [V30,T16] ( 2, 2 ) byref -> x0 hoist "CSE - moderate" -; V31 cse2 [V31,T20] ( 2, 2 ) int -> x2 hoist "CSE - moderate"
+; V30 cse1 [V30,T14] ( 2, 2 ) byref -> x14 "CSE - aggressive" +; V31 cse2 [V31,T15] ( 2, 2 ) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] ;; size=60 bbWeight=1 PerfScore 10.50 G_M43134_IG02: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M43134_IG10
+ cbz x21, G_M43134_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -96,11 +96,11 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe cmp x0, x25 cset x0, eq cmp w1, w0
- bne G_M43134_IG11
+ bne G_M43134_IG10
;; size=84 bbWeight=1 PerfScore 20.00 G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x13-x14]
- cbz w27, G_M43134_IG13
+ cbz w27, G_M43134_IG12
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -110,30 +110,24 @@ G_M43134_IG04: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 mov w14, #0xD1FFAB1E str w14, [x0, #0x10]
- mov w1, wzr - add x0, x0, #16
+ add x14, x0, #16 + ; byrRegs +[x14] + ldr w14, [x14] + ; byrRegs -[x14] + and w15, w20, #0xD1FFAB1E + cmp w14, w15 + beq G_M43134_IG05 + b G_M43134_IG11 + ;; size=56 bbWeight=1 PerfScore 12.00 +G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs +[x0] - and w2, w20, #0xD1FFAB1E - ;; size=44 bbWeight=1 PerfScore 7.00 -G_M43134_IG05: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0001 {x0}, byref, isz - ldr w14, [x0, w1, UXTW #2] - cmp w14, w2 - beq G_M43134_IG06 - add w1, w1, #1 - cmp w1, #1 - bge G_M43134_IG12 - b G_M43134_IG05 - ;; size=28 bbWeight=1 PerfScore 7.50 -G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref - ; byrRegs -[x0]
mov w28, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG06: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
tst w28, #255
- beq G_M43134_IG14
+ beq G_M43134_IG13
;; size=8 bbWeight=1 PerfScore 1.50
-G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG07: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
str w23, [x19, #0x2C] add x14, x19, #24 ; byrRegs +[x14] @@ -165,7 +159,7 @@ G_M43134_IG08: ; bbWeight=1, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe str xzr, [x19, #0x08] str xzr, [x19, #0x20] ;; size=72 bbWeight=1 PerfScore 13.50
-G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x50] ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] @@ -174,7 +168,7 @@ G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
+G_M43134_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x21-x22 x26] movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 @@ -190,7 +184,7 @@ G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=468000 ; gcr arg pop 0 b G_M43134_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG10: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -205,16 +199,16 @@ G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ; gcr arg pop 0 b G_M43134_IG04 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
mov w28, wzr
- b G_M43134_IG07
+ b G_M43134_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
mov w28, #1 tst w28, #255
- bne G_M43134_IG08
+ bne G_M43134_IG07
;; size=12 bbWeight=0 PerfScore 0.00
-G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRegs=0000 {}, byref
movz x0, #8 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -227,10 +221,10 @@ G_M43134_IG14: ; bbWeight=0, gcrefRegs=4680000 {x19 x21 x22 x26}, byrefRe ldr x2, [x2] blr x2 ; gcr arg pop 0
- b G_M43134_IG08
+ b G_M43134_IG07
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 496, prolog size 60, PerfScore 68.50, instruction count 124, allocated bytes for code 496 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 480, prolog size 60, PerfScore 66.00, instruction count 120, allocated bytes for code 480 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info: @@ -241,7 +235,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+50.00%) : 57606.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)

@@ -8,10 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 110 ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 3.98) byref -> x0 single-def -; V01 arg1 [V01,T01] ( 3, 3 ) int -> x1 single-def -; V02 loc0 [V02,T02] ( 5, 4.96) int -> x2 -; V03 loc1 [V03,T03] ( 3, 2.98) int -> x3
+; V00 arg0 [V00,T01] ( 6, 5.96) byref -> x0 single-def +; V01 arg1 [V01,T02] ( 4, 4 ) int -> x1 single-def +; V02 loc0 [V02,T00] ( 10, 9.93) int -> x2 +; V03 loc1 [V03,T03] ( 6, 5.96) int -> x3
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -25,29 +25,43 @@ G_M19701_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ldr w2, [x0] orr w3, w2, w1 cmp w3, w2
- beq G_M19701_IG05
+ beq G_M19701_IG08
;; size=16 bbWeight=1 PerfScore 5.00 G_M19701_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M19701_IG02 - mov w0, #1
+ beq G_M19701_IG06 + ;; size=16 bbWeight=0.98 PerfScore 4.91 +G_M19701_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w2, [x0] + orr w3, w2, w1 + cmp w3, w2 + beq G_M19701_IG08 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M19701_IG05: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M19701_IG04 + ;; size=16 bbWeight=0.98 PerfScore 4.91 +G_M19701_IG06: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
- ;; size=20 bbWeight=0.98 PerfScore 5.40 -G_M19701_IG04: ; bbWeight=0.98, epilog, nogc, extend
+ mov w0, #1 + ;; size=4 bbWeight=0.98 PerfScore 0.49 +G_M19701_IG07: ; bbWeight=0.98, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.98 PerfScore 1.96
-G_M19701_IG05: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19701_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.02 PerfScore 0.01
-G_M19701_IG06: ; bbWeight=0.02, epilog, nogc, extend
+G_M19701_IG09: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.02 PerfScore 0.04
-; Total bytes of code 64, prolog size 8, PerfScore 13.91, instruction count 16, allocated bytes for code 64 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 23.82, instruction count 24, allocated bytes for code 96 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+54.55%) : 40569.dasm - IfStatements.IfStatements:OrArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20087_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.05 G_M20087_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M20087_IG04
+ cmp w19, w1 + bge G_M20087_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M20087_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M20087_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M20087_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M20087_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M20087_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M20087_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M20087_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.90 +G_M20087_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.97, instruction count 22, allocated bytes for code 88 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=8456b188) for method IfStatements.IfStatements:OrArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

+48 (+54.55%) : 37926.dasm - IfStatements.IfStatements:AndArray():this (Tier1-OSR)

@@ -10,44 +10,58 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <IfStatements.IfStatements>
-; V01 loc0 [V01,T00] ( 5,399.97) int -> x0
+; V01 loc0 [V01,T00] ( 10,400.02) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3,299.97) int -> x19 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3,299.97) int -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M1409_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ldr w0, [fp, #0x44]
+ ldr w19, [fp, #0x44]
;; size=16 bbWeight=0.01 PerfScore 0.05 G_M1409_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov w1, #0xD1FFAB1E
- cmp w0, w1 - bge G_M1409_IG04
+ cmp w19, w1 + bge G_M1409_IG05
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M1409_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add w19, w0, #1 - mov w1, w19
+G_M1409_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w1, w19, #1 + mov w0, w19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- sxtw w0, w19
+ add w19, w19, #1
mov w1, #0xD1FFAB1E
- cmp w0, w1 - blt G_M1409_IG03 - ;; size=44 bbWeight=99.99 PerfScore 899.91 -G_M1409_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x19, [sp, #0x18]
+ cmp w19, w1 + bge G_M1409_IG05 + ;; size=44 bbWeight=0.01 PerfScore 0.09 +G_M1409_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w19, #1 + mov w1, w20 + mov w0, w19 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + sxtw w19, w20 + mov w0, #0xD1FFAB1E + cmp w19, w0 + blt G_M1409_IG04 + ;; size=48 bbWeight=99.99 PerfScore 949.90 +G_M1409_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20 add sp, sp, #48 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 899.97, instruction count 22, allocated bytes for code 88 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
+; Total bytes of code 136, prolog size 12, PerfScore 950.06, instruction count 34, allocated bytes for code 136 (MethodHash=e674fa7e) for method IfStatements.IfStatements:AndArray():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -58,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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) @@ -66,7 +80,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! 03 alloc_s #3 (0x03); sub sp, sp, #48 (0x030) E4 end

benchmarks.run_tiered.windows.arm64.checked.mch

-12 (-4.41%) : 43124.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

-4 (-2.13%) : 19355.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> x14 -; V03 loc1 [V03,T02] ( 4, 8 ) int -> x15
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> x14 +; V03 loc1 [V03,T02] ( 4, 1 ) int -> x15
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> x14 class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -30,7 +31,7 @@ G_M27287_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w14, w15 bne G_M27287_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M27287_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w14, [x0, #0x14] ldr x15, [x0] ; gcrRegs +[x15] @@ -38,28 +39,26 @@ G_M27287_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x15] cmp w14, w15 blo G_M27287_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M27287_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x14, [x0] - ; gcrRegs +[x14] - ldr w14, [x14, #0x28] - ; gcrRegs -[x14] - add w14, w14, #1
+ add w14, w15, #1
str w14, [x0, #0x14] str xzr, [x0, #0x08] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M27287_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M27287_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x14, [x0]
+ ldr x15, [x0] + ; gcrRegs +[x15] + ldr x14, [x15, #0x10]
; gcrRegs +[x14]
- ldr x14, [x14, #0x10]
ldr w15, [x0, #0x14]
+ ; gcrRegs -[x15]
add w12, w15, #1 str w12, [x0, #0x14] ldr w12, [x14, #0x08] @@ -72,8 +71,9 @@ G_M27287_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x14] ldr w15, [x14, #0x0C] cmn w15, #1
- blt G_M27287_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M27287_IG07 + b G_M27287_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M27287_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4001 {x0 x14}, byref ldr x15, [x14] ; gcrRegs +[x15] @@ -101,7 +101,7 @@ G_M27287_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 148.00, instruction count 47, allocated bytes for code 188 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 184, prolog size 8, PerfScore 34.12, instruction count 46, allocated bytes for code 184 (MethodHash=08a69568) for method System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -112,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-2.13%) : 38627.dasm - System.Collections.Generic.Dictionary2+ValueCollection+Enumerator[System.ReadOnlyMemory1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> x0 this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> x13 -; V03 loc1 [V03,T02] ( 4, 8 ) int -> x14
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> x13 +; V03 loc1 [V03,T02] ( 4, 1 ) int -> x14
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> x13 class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> x13 class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> x14 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -30,7 +31,7 @@ G_M54618_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre cmp w13, w14 bne G_M54618_IG10 ;; size=20 bbWeight=1 PerfScore 10.50
-G_M54618_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M54618_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w13, [x0, #0x08] ldr x14, [x0] ; gcrRegs +[x14] @@ -38,28 +39,26 @@ G_M54618_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; gcrRegs -[x14] cmp w13, w14 blo G_M54618_IG06
- ;; size=20 bbWeight=8 PerfScore 84.00
+ ;; size=20 bbWeight=1 PerfScore 10.50
G_M54618_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ldr x13, [x0] - ; gcrRegs +[x13] - ldr w13, [x13, #0x38] - ; gcrRegs -[x13] - add w13, w13, #1
+ add w13, w14, #1
str w13, [x0, #0x08] str xzr, [x0, #0x10] mov w0, wzr ; byrRegs -[x0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M54618_IG05: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M54618_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M54618_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
; byrRegs +[x0]
- ldr x13, [x0]
+ ldr x14, [x0] + ; gcrRegs +[x14] + ldr x13, [x14, #0x10]
; gcrRegs +[x13]
- ldr x13, [x13, #0x10]
ldr w14, [x0, #0x08]
+ ; gcrRegs -[x14]
add w12, w14, #1 str w12, [x0, #0x08] ldr w12, [x13, #0x08] @@ -72,8 +71,9 @@ G_M54618_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; byrRegs +[x13] ldr w14, [x13, #0x04] cmn w14, #1
- blt G_M54618_IG03 - ;; size=56 bbWeight=2 PerfScore 43.00
+ bge G_M54618_IG07 + b G_M54618_IG03 + ;; size=60 bbWeight=0.25 PerfScore 5.62
G_M54618_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2001 {x0 x13}, byref add x13, x13, #24 add x14, x0, #16 @@ -101,7 +101,7 @@ G_M54618_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 146.75, instruction count 47, allocated bytes for code 188 (MethodHash=f4d82aa5) for method System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 184, prolog size 8, PerfScore 32.88, instruction count 46, allocated bytes for code 184 (MethodHash=f4d82aa5) for method System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -112,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+54.55%) : 24537.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:g_SumFrequencies|32(ushort[]):float (Tier1)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]> -; V01 loc0 [V01,T06] ( 4, 6 ) float -> d0
+; V00 arg0 [V00,T04] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]> +; V01 loc0 [V01,T06] ( 5, 6.50) float -> d0
; V02 loc1 [V02,T05] ( 3, 3 ) ref -> x0 class-hnd single-def <ushort[]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x1 -; V04 loc3 [V04,T01] ( 3, 10 ) ushort -> x3
+; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2 +; V04 loc3 [V04,T01] ( 6, 12.50) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[float]> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[float]> @@ -20,8 +20,8 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V12 cse0 [V12,T04] ( 2, 5 ) byref -> x0 hoist "CSE - aggressive" -; V13 cse1 [V13,T02] ( 3, 6 ) int -> x2 "CSE - aggressive"
+; V12 cse0 [V12,T02] ( 4, 7 ) int -> x1 "CSE - aggressive" +; V13 cse1 [V13,T03] ( 3, 6 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,20 +32,36 @@ G_M18410_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18410_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] movi v0.16b, #0
- mov w1, wzr - ldr w2, [x0, #0x08] - cmp w2, #0 - ble G_M18410_IG06
+ ldr w1, [x0, #0x08] + cmp w1, #0 + ble G_M18410_IG08
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 6.00 -G_M18410_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ldrh w3, [x0, w1, UXTW #2]
+ ldrh w2, [x0] + cmp w2, #128 + bge G_M18410_IG04 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M18410_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ubfiz x2, x2, #2, #32 + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr s0, [x2, x3] + movi v16.16b, #0 + fadd s0, s0, s16 + ;; size=28 bbWeight=0.50 PerfScore 4.50 +G_M18410_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w2, #1 + cmp w1, #1 + ble G_M18410_IG08 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M18410_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldrh w3, [x0, w2, UXTW #2]
cmp w3, #128
- bge G_M18410_IG05
+ bge G_M18410_IG07
;; size=12 bbWeight=4 PerfScore 18.00
-G_M18410_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M18410_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
ubfiz x3, x3, #2, #32 movz x4, #0xD1FFAB1E movk x4, #0xD1FFAB1E LSL #16 @@ -53,18 +69,18 @@ G_M18410_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ldr s16, [x3, x4] fadd s0, s0, s16 ;; size=24 bbWeight=2 PerfScore 17.00
-G_M18410_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - add w1, w1, #1 - cmp w2, w1 - bgt G_M18410_IG03
+G_M18410_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + add w2, w2, #1 + cmp w1, w2 + bgt G_M18410_IG05
;; size=12 bbWeight=4 PerfScore 8.00
-G_M18410_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18410_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 88, prolog size 8, PerfScore 52.50, instruction count 22, allocated bytes for code 88 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 63.00, instruction count 34, allocated bytes for code 136 (MethodHash=6cbdb815) for method System.Text.RegularExpressions.RegexPrefixAnalyzer:<SortFixedDistanceSetsByQuality>g__SumFrequencies|3_2(ushort[]):float (Tier1)
; ============================================================ Unwind Info: @@ -75,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ 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)

+32 (+61.54%) : 39181.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> x1 "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> x2 "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> x1 "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> x2 "Inline stloc first use temp"
; ; Lcl frame size = 0 @@ -21,29 +21,39 @@ G_M48426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldrsb wzr, [x0]
- ;; size=4 bbWeight=1 PerfScore 3.00 -G_M48426_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0] orr w2, w1, #0xD1FFAB1E cmp w2, w1
- beq G_M48426_IG05 - ;; size=16 bbWeight=8 PerfScore 40.00 -G_M48426_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M48426_IG06 + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M48426_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
mov w3, w1 casal w3, w2, [x0] cmp w3, w1
- bne G_M48426_IG03
+ beq G_M48426_IG06 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M48426_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w1, [x0] + orr w2, w1, #0xD1FFAB1E + cmp w2, w1 + beq G_M48426_IG06 + ;; size=16 bbWeight=8 PerfScore 40.00 +G_M48426_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w3, w1 + casal w3, w2, [x0] + cmp w3, w1 + bne G_M48426_IG04
;; size=16 bbWeight=4 PerfScore 20.00
-G_M48426_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M48426_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 66.50, instruction count 13, allocated bytes for code 52 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 74.00, instruction count 21, allocated bytes for code 84 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ 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)

+32 (+61.54%) : 39194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> x0 this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> x1 "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> x2 "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> x1 "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> x2 "Inline stloc first use temp"
; ; Lcl frame size = 0 @@ -21,29 +21,39 @@ G_M11989_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldrsb wzr, [x0]
- ;; size=4 bbWeight=1 PerfScore 3.00 -G_M11989_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldr w1, [x0] orr w2, w1, #0xD1FFAB1E cmp w2, w1
- beq G_M11989_IG05 - ;; size=16 bbWeight=8 PerfScore 40.00 -G_M11989_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ beq G_M11989_IG06 + ;; size=20 bbWeight=1 PerfScore 8.00 +G_M11989_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
mov w3, w1 casal w3, w2, [x0] cmp w3, w1
- bne G_M11989_IG03
+ beq G_M11989_IG06 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M11989_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr w1, [x0] + orr w2, w1, #0xD1FFAB1E + cmp w2, w1 + beq G_M11989_IG06 + ;; size=16 bbWeight=8 PerfScore 40.00 +G_M11989_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov w3, w1 + casal w3, w2, [x0] + cmp w3, w1 + bne G_M11989_IG04
;; size=16 bbWeight=4 PerfScore 20.00
-G_M11989_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M11989_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 66.50, instruction count 13, allocated bytes for code 52 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 74.00, instruction count 21, allocated bytes for code 84 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ 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)

coreclr_tests.run.windows.arm64.checked.mch

-36 (-17.65%) : 501417.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)

@@ -7,24 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T06] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> -; V01 loc1 [V01,T00] ( 12, 65.84) int -> x19 -; V02 loc2 [V02,T01] ( 8, 43 ) int -> x1 -;* V03 loc3 [V03,T07] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T03] ( 5, 5 ) ref -> x0 class-hnd exact single-def <int[]> +; V01 loc1 [V01,T00] ( 5, 16.84) int -> x0 +; V02 loc2 [V02,T04] ( 3, 3 ) int -> x1 +;* V03 loc3 [V03,T05] ( 0, 0 ) int -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 6, 32.92) byref -> x20 hoist "CSE - aggressive" -; V06 cse1 [V06,T03] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V07 cse2 [V07,T04] ( 2, 16 ) int -> x2 "CSE - aggressive" -; V08 cse3 [V08,T05] ( 3, 11.88) int -> x19 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 8, 13.92) byref -> x19 "CSE - aggressive" +; V06 cse1 [V06,T02] ( 3, 11.88) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42106_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -32,32 +30,16 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[x0] ; gcr arg pop 0
+ add x19, x0, #16 + ; byrRegs +[x19] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x04] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x08] + mov w1, #0xD1FFAB1E + str w1, [x19, #0x0C]
movz w1, #0xD1FFAB1E
- movk w1, #1 LSL #16 - mov w19, #1 - add x20, x0, #16 - ; byrRegs +[x20] - ;; size=36 bbWeight=1 PerfScore 5.00 -G_M42106_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref, isz - and w2, w1, #0xD1FFAB1E - str w2, [x20, w19, UXTW #2] - add w2, w19, #1 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - add w2, w19, #2 - mov w3, #0xD1FFAB1E - add w3, w1, w3 - and w3, w3, #0xD1FFAB1E - str w3, [x20, w2, UXTW #2] - mov w2, #0xD1FFAB1E - add w1, w1, w2 - add w19, w19, #3 - cmp w19, #3 - ble G_M42106_IG03 - ;; size=68 bbWeight=8 PerfScore 84.00 -G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, byref
+ movk w1, #2 LSL #16
stp w1, w1, [x0, #0x20] movz x1, #0xD1FFAB1E // code for Benchstone.BenchI.BubbleSort2:Inner(int[]) movk x1, #0xD1FFAB1E LSL #16 @@ -66,36 +48,39 @@ G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov w19, wzr - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [x20, w19, UXTW #2] - add w19, w19, #1 - ldr w1, [x20, w19, UXTW #2]
+ ldp w0, w1, [x19]
cmp w0, w1
- bgt G_M42106_IG08 - cmp w19, #4 - blt G_M42106_IG05
+ bgt G_M42106_IG06 + mov w0, #1 + ;; size=96 bbWeight=1 PerfScore 20.50 +G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldr w1, [x19, w0, UXTW #2] + add w0, w0, #1 + ldr w2, [x19, w0, UXTW #2] + cmp w1, w2 + bgt G_M42106_IG06 + cmp w0, #4 + blt G_M42106_IG03
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x20]
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19]
mov w0, #1 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M42106_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M42106_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10]
+G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 204, prolog size 12, PerfScore 139.87, instruction count 51, allocated bytes for code 204 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 168, prolog size 12, PerfScore 65.37, instruction count 42, allocated bytes for code 168 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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,7 +102,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 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

-12 (-15.79%) : 541446.dasm - ILGEN_0xa2afe952:Main():int (FullOpts)

@@ -9,53 +9,46 @@ ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 tmp2 [V02,T01] ( 4, 25 ) int -> x0 -; V03 tmp3 [V03,T00] ( 2, 32 ) int -> x0 "dup spill"
+;* V02 tmp2 [V02,T01] ( 0, 0 ) int -> zero-ref +;* V03 tmp3 [V03,T02] ( 0, 0 ) int -> zero-ref "dup spill"
;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V05 PSPSym [V05,T02] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V05 PSPSym [V05,T00] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; ; Lcl frame size = 16
-G_M9138_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M9138_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp add x0, sp, #32 str x0, [fp, #0x18] // [V05 PSPSym]
- ;; size=16 bbWeight=1 PerfScore 3.00 -G_M9138_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M9138_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - sub w0, w0, #1 - cbnz w0, G_M9138_IG03 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M9138_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M9138_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_windows #0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9138_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #100 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M9138_IG04: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-G_M9138_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M9138_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x20]! add x3, fp, #32 str x3, [sp, #0x18] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M9138_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - adr x0, [G_M9138_IG05]
+G_M9138_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + adr x0, [G_M9138_IG03]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M9138_IG09: ; bbWeight=0, funclet epilog, nogc, extend
+G_M9138_IG07: ; bbWeight=0, funclet epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 16, PerfScore 15.50, instruction count 19, allocated bytes for code 76 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 0.00, instruction count 16, allocated bytes for code 64 (MethodHash=5517dc4d) for method ILGEN_0xa2afe952:Main():int (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -97,4 +90,4 @@ Unwind Info: *************** EH table for ILGEN_0xa2afe952:Main():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M9138_IG02..G_M9138_IG05) handled by [G_M9138_IG07..END) (class: 1000003)
+EH#0: try [G_M9138_IG02..G_M9138_IG03) handled by [G_M9138_IG05..END) (class: 1000003)
-40 (-14.49%) : 223514.dasm - BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
@@ -7,39 +7,37 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T01] ( 3, 10 ) long -> x19 single-def -; V01 loc1 [V01,T00] ( 7, 42 ) int -> [fp+0x1C] do-not-enreg[Z] EH-live ptr
+; V00 loc0 [V00,T01] ( 3, 3 ) long -> x0 single-def +; V01 loc1 [V01,T00] ( 3, 3 ) int -> [fp+0x14] do-not-enreg[Z] EH-live ptr
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref ptr ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie" -; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V06 GsCookie [V06 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie" +; V07 PSPSym [V07,T02] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M42836_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - str x19, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- str xzr, [fp, #0x20] // [V04 tmp1] - add x0, sp, #64 - str x0, [fp, #0x30] // [V07 PSPSym]
+ str xzr, [fp, #0x18] // [V04 tmp1] + add x0, sp, #48 + str x0, [fp, #0x28] // [V07 PSPSym]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #0x28] // [V06 GsCookie] - ;; size=44 bbWeight=1 PerfScore 8.00
+ str x0, [fp, #0x20] // [V06 GsCookie] + ;; size=40 bbWeight=1 PerfScore 7.00
G_M42836_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x19, fp, #32 // [V04 tmp1] - strb wzr, [x19] - str wzr, [fp, #0x1C] // [V01 loc1]
+ add x0, fp, #24 // [V04 tmp1] + strb wzr, [x0] + str wzr, [fp, #0x14] // [V01 loc1]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr w0, [fp, #0x1C] // [V01 loc1] - ldrb w0, [x19, w0, SXTW #2] - ldrb w1, [fp, #0x1C] // [V01 loc1]
+G_M42836_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x0] + mov w1, wzr
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -47,53 +45,46 @@ G_M42836_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x2 ; gcr arg pop 0 cbz w0, G_M42836_IG06
- ldr w0, [fp, #0x1C] // [V01 loc1] - add w0, w0, #1 - str w0, [fp, #0x1C] // [V01 loc1] - ldr w0, [fp, #0x1C] // [V01 loc1] - cmp w0, #0 - ble G_M42836_IG03 - ;; size=60 bbWeight=8 PerfScore 164.00
+ mov w0, #1 + str w0, [fp, #0x14] // [V01 loc1] + ;; size=40 bbWeight=1 PerfScore 11.50
G_M42836_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movn w0, #0 movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG05 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 7.00 G_M42836_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr w0, [fp, #0x1C] // [V01 loc1]
+ ldr w0, [fp, #0x14] // [V01 loc1]
movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 movk xip0, #0xD1FFAB1E LSL #32 movk xip0, #0xD1FFAB1E LSL #48
- ldr xip1, [fp, #0x28] // [V06 GsCookie]
+ ldr xip1, [fp, #0x20] // [V06 GsCookie]
cmp xip0, xip1 beq G_M42836_IG07 bl CORINFO_HELP_FAIL_FAST ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 8.50 G_M42836_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ldr x19, [sp, #0x38] - ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M42836_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18] - add x3, fp, #64 - str x3, [sp, #0x10] - ;; size=16 bbWeight=0 PerfScore 0.00
+ add x3, fp, #48 + str x3, [sp, #0x18] + ;; size=12 bbWeight=0 PerfScore 0.00
G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -107,23 +98,22 @@ G_M42836_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { adr x0, [G_M42836_IG06] ;; size=36 bbWeight=0 PerfScore 0.00 G_M42836_IG10: ; bbWeight=0, funclet epilog, nogc, extend
- ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 44, PerfScore 198.00, instruction count 69, allocated bytes for code 276 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
+; Total bytes of code 236, prolog size 40, PerfScore 40.50, instruction count 59, allocated bytes for code 236 (MethodHash=452858ab) for method BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int (Tier0-FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,10 +124,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end - E4 end
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end @@ -149,13 +136,14 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 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 + E4 end
*************** EH table for BringUpTest_LocallocCnstB1_PSP:LocallocCnstB1_PSP():int 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM

+24 (+60.00%) : 385615.dasm - Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 69392 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4.00) byref -> x0 this single-def -; V01 arg1 [V01,T01] ( 3, 3.00) int -> x1 single-def -; V02 loc0 [V02,T02] ( 4, 4.00) int -> x2
+; V00 this [V00,T01] ( 6, 6.00) byref -> x0 this single-def +; V01 arg1 [V01,T02] ( 4, 4.00) int -> x1 single-def +; V02 loc0 [V02,T00] ( 8, 8.00) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -26,15 +26,23 @@ G_M63594_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b mov w4, w2 casal w4, w3, [x0] cmp w4, w2
- bne G_M63594_IG02
+ beq G_M63594_IG04
;; size=24 bbWeight=1.00 PerfScore 8.50
-G_M63594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63594_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldapr w2, [x0] + orr w3, w2, w1 + mov w4, w2 + casal w4, w3, [x0] + cmp w4, w2 + bne G_M63594_IG03 + ;; size=24 bbWeight=1.00 PerfScore 8.50 +G_M63594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 8, PerfScore 12.00, instruction count 10, allocated bytes for code 40 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 20.50, instruction count 16, allocated bytes for code 64 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
; ============================================================ Unwind Info: @@ -45,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
+ 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)

+36 (+64.29%) : 590505.dasm - OVFTest:Test_short(short):short (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) short -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) short -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M33961_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M33961_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxth w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M33961_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #8, LSL #12
- bge G_M33961_IG03
+ bge G_M33961_IG04
cmn w0, #8, LSL #12
- blt G_M33961_IG03 - b G_M33961_IG02
+ blt G_M33961_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M33961_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxth w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #8, LSL #12 + bge G_M33961_IG04 + cmn w0, #8, LSL #12 + blt G_M33961_IG04 + b G_M33961_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M33961_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33961_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=082c7b56) for method OVFTest:Test_short(short):short (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+36 (+64.29%) : 590504.dasm - OVFTest:Test_sbyte(byte):byte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 18 ) byte -> x0
+; V00 arg0 [V00,T01] ( 6, 20 ) byte -> x0
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 32 ) int -> x0 "arg temp"
+; V02 tmp1 [V02,T00] ( 4, 36 ) int -> x0 "arg temp"
; ; Lcl frame size = 0 @@ -17,7 +17,7 @@ G_M25186_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25186_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtb w0, w0 scvtf d0, w0 fmov d16, #2.0000 @@ -25,18 +25,30 @@ G_M25186_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0 cmp w0, #127
- bgt G_M25186_IG03
+ bgt G_M25186_IG04
cmn w0, #128
- blt G_M25186_IG03 - b G_M25186_IG02
+ blt G_M25186_IG04 + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M25186_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtb w0, w0 + scvtf d0, w0 + fmov d16, #2.0000 + fmul d0, d0, d16 + bl CORINFO_HELP_DBL2INT_OVF + ; gcr arg pop 0 + cmp w0, #127 + bgt G_M25186_IG04 + cmn w0, #128 + blt G_M25186_IG04 + b G_M25186_IG03
;; size=40 bbWeight=8 PerfScore 104.00
-G_M25186_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25186_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_OVERFLOW ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 105.50, instruction count 14, allocated bytes for code 56 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 117.50, instruction count 23, allocated bytes for code 92 (MethodHash=93bb9d9d) for method OVFTest:Test_sbyte(byte):byte (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

libraries.crossgen2.windows.arm64.checked.mch

-20 (-12.20%) : 10464.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M24270_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M24270_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M24270_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M24270_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M24270_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M24270_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M24270_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M24270_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M24270_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M24270_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M24270_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M24270_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M24270_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M24270_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M24270_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M24270_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M24270_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M24270_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M24270_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M24270_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24270_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M24270_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=dc34a131) for method System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-12.20%) : 229440.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)

@@ -9,22 +9,19 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
-; V01 arg1 [V01,T01] ( 4, 5 ) ref -> x19 class-hnd single-def <System.Type> -; V02 loc0 [V02,T00] ( 6, 16 ) ref -> x20 class-hnd <System.Type>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Type> +; V02 loc0 [V02,T00] ( 6, 5.50) ref -> x20 class-hnd <System.Type>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V05 cse1 [V05,T04] ( 3, 4 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 G_M45834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x1 ; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] mov x20, x0 @@ -32,68 +29,62 @@ G_M45834_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, mov x1, x19 ; gcrRegs +[x1] mov x0, x20
- adrp x21, [HIGH RELOC #0xD1FFAB1E] // function address - add x21, x21, [LOW RELOC #0xD1FFAB1E] - mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M45834_IG05 - ;; size=36 bbWeight=1 PerfScore 8.00
+ cbz w0, G_M45834_IG06 + ;; size=32 bbWeight=1 PerfScore 7.50
G_M45834_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M45834_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M45834_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M45834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - b G_M45834_IG07 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M45834_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] mov x0, x20 ; gcrRegs +[x0]
- mov x11, x21
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1]
- cbnz w0, G_M45834_IG09 - ;; size=24 bbWeight=2 PerfScore 13.00 -G_M45834_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M45834_IG08 + ;; size=28 bbWeight=0.50 PerfScore 3.50 +G_M45834_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 ; gcrRegs -[x20] mov x20, x0 ; gcrRegs +[x20]
- cbnz x20, G_M45834_IG06 - ;; size=28 bbWeight=4 PerfScore 38.00 -G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz x20, G_M45834_IG05 + ;; size=32 bbWeight=1 PerfScore 10.00 +G_M45834_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] b G_M45834_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M45834_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M45834_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M45834_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+G_M45834_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 16, PerfScore 70.00, instruction count 41, allocated bytes for code 164 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 27.62, instruction count 36, allocated bytes for code 144 (MethodHash=83464cf5) for method System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -115,9 +106,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-20 (-10.42%) : 120342.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)

@@ -9,45 +9,35 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 17 ) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> -; V01 loc0 [V01,T04] ( 4, 6 ) ubyte -> x20
+; V00 this [V00,T00] ( 7, 4.75) ref -> x19 this class-hnd single-def <System.IO.Packaging.XmlCompatibilityReader> +; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 16 ) ref -> x1 "argument with side effect" -; V04 tmp2 [V04,T02] ( 2, 16 ) ref -> x1 "argument with side effect" -; V05 cse0 [V05,T03] ( 3, 7 ) long -> x21 hoist "CSE - aggressive" -; V06 cse1 [V06,T05] ( 2, 5 ) long -> x22 hoist "CSE - aggressive" -; V07 cse2 [V07,T06] ( 2, 5 ) long -> x23 hoist "CSE - aggressive" -; V08 cse3 [V08,T07] ( 2, 5 ) long -> x24 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> x1 "argument with side effect" +; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x1 "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 1.75) long -> x21 hoist "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M42349_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M42349_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w20, #1 ldrsb wzr, [x19] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x21, [x0]
- adrp x22, [HIGH RELOC #0xD1FFAB1E] - add x22, x22, [LOW RELOC #0xD1FFAB1E] - adrp x23, [HIGH RELOC #0xD1FFAB1E] - add x23, x23, [LOW RELOC #0xD1FFAB1E] - adrp x24, [HIGH RELOC #0xD1FFAB1E] - add x24, x24, [LOW RELOC #0xD1FFAB1E]
b G_M42349_IG04
- ;; size=48 bbWeight=1 PerfScore 11.50 -G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 8.50 +G_M42349_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr wzr, [x0] ldr x1, [x11] @@ -55,43 +45,45 @@ G_M42349_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] sxtw w20, w0 cbz w20, G_M42349_IG05
- ;; size=32 bbWeight=2 PerfScore 25.00 -G_M42349_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.25 PerfScore 3.12 +G_M42349_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, x21] ; gcrRegs +[x0]
- mov x11, x22
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0] ldr x1, [x11] blr x1 mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x1] mov x1, x0 ; gcrRegs +[x1] mov x0, x19
- mov x11, x24
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] + add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11] blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M42349_IG03
- ;; size=64 bbWeight=4 PerfScore 90.00
+ ;; size=76 bbWeight=0.50 PerfScore 12.00
G_M42349_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w0, w20 ;; size=4 bbWeight=1 PerfScore 0.50 G_M42349_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 20, PerfScore 137.00, instruction count 48, allocated bytes for code 192 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
+; Total bytes of code 172, prolog size 16, PerfScore 33.12, instruction count 43, allocated bytes for code 172 (MethodHash=3b875a92) for method System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -102,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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) @@ -110,10 +102,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 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 (+64.71%) : 218247.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -8,14 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,42 +25,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+66.67%) : 176665.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

+32 (+66.67%) : 155284.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -24,26 +24,44 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x18] b G_M12955_IG04 ;; size=8 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M12955_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M12955_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x0, #0x34]
- cbnz w1, G_M12955_IG06
+ cbnz w1, G_M12955_IG10
ldr x1, [x0, #0x10] ; gcrRegs +[x1] cbz x1, G_M12955_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M12955_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M12955_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldrh w1, [x0, #0x34] + cbnz w1, G_M12955_IG10 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + cbz x1, G_M12955_IG07
;; size=16 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 53.50, instruction count 12, allocated bytes for code 48 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 59.62, instruction count 20, allocated bytes for code 80 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ 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)

libraries.pmi.windows.arm64.checked.mch

-44 (-15.71%) : 123306.dasm - Roslyn.Utilities.OneOrMany1[System.__Canon]:Any[System.Numerics.Vector1[float]](System.Func3[System.__Canon,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,59 +8,64 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 3 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T05] ( 5, 4.36) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> -; V03 arg2 [V03,T11] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V04 loc0 [V04 ] ( 4, 12 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V00 this [V00,T12] ( 3, 3 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T04] ( 5, 4.36) long -> x1 single-def +; V02 arg1 [V02,T09] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte]> +; V03 arg2 [V03,T17] ( 3, 2.25) simd16 -> [fp+0x40] HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V04 loc0 [V04 ] ( 4, 3.25) struct (24) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp3 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp4 [V10,T10] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
+; V10 tmp4 [V10,T15] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]>
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[System.__Canon]> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref "field V12._one (fldOffset=0x0)" P-INDEP ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref "field V12._many (fldOffset=0x8)" P-INDEP ;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "V10.[000..004)"
-; V16 tmp10 [V16,T00] ( 2, 32 ) long -> x1 "argument with side effect" -; V17 tmp11 [V17,T04] ( 2, 8 ) long -> x1 "argument with side effect" -; V18 tmp12 [V18,T03] ( 2, 8 ) ref -> x1 "argument with side effect" -; V19 cse0 [V19,T01] ( 3, 11 ) long -> x20 hoist "CSE - aggressive" -; V20 rat0 [V20,T09] ( 3, 4 ) long -> x20 "runtime lookup" -; V21 rat1 [V21,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V22 rat2 [V22,T08] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable"
+; V16 tmp10 [V16,T01] ( 2, 4 ) long -> x1 "argument with side effect" +; V17 tmp11 [V17,T07] ( 2, 1 ) long -> x1 "argument with side effect" +; V18 tmp12 [V18,T06] ( 2, 1 ) ref -> x1 "argument with side effect" +; V19 cse0 [V19,T16] ( 3, 2.25) long -> x20 hoist "CSE - aggressive" +; V20 rat0 [V20,T14] ( 3, 4 ) long -> x20 "runtime lookup" +; V21 rat1 [V21,T11] ( 3, 5.60) long -> x0 "spilling expr" +; V22 rat2 [V22,T13] ( 3, 4.48) long -> x20 "fgMakeTemp is creating a new local variable" +;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V24 rat4 [V24,T05] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V25 rat5 [V25,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V26 rat6 [V26,T03] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V27 rat7 [V27,T00] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V28 rat8 [V28,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M19422_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]!
- stp d8, d9, [sp, #0x50]
stp x19, x20, [sp, #0x60] mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V10 tmp4], [V10 tmp4+0x08] - str xzr, [fp, #0x28] // [V10 tmp4+0x10] - str x1, [fp, #0x48] - mov v8.16b, v0.16b
+ stp xzr, xzr, [fp, #0x10] // [V10 tmp4], [V10 tmp4+0x08] + str xzr, [fp, #0x20] // [V10 tmp4+0x10] + str x1, [fp, #0x58] + str q0, [fp, #0x40] // [V03 arg2]
mov x19, x2 ; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.50
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M19422_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc ; byrRegs +[x0] ldp x2, x3, [x0]
- stp x2, x3, [fp, #0x20]
+ stp x2, x3, [fp, #0x18]
;; size=8 bbWeight=1 PerfScore 5.00 G_M19422_IG03: ; bbWeight=1, nogc, extend
- ldp x0, x2, [fp, #0x18]
+ ldp x0, x2, [fp, #0x10]
; byrRegs -[x0]
- stp x0, x2, [fp, #0x30] - ldr x0, [fp, #0x28] - str x0, [fp, #0x40]
+ stp x0, x2, [fp, #0x28] + ldr x0, [fp, #0x20] + str x0, [fp, #0x38]
;; size=16 bbWeight=1 PerfScore 7.00 G_M19422_IG04: ; bbWeight=1, isz, extend movn w0, #0
- str w0, [fp, #0x30] // [V04 loc0]
+ str w0, [fp, #0x28] // [V04 loc0]
ldr x0, [x1, #0x38] ldr x2, [x0, #0x08] cmp x2, #24 @@ -78,69 +83,59 @@ G_M19422_IG07: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov v9.d[0], v8.d[1]
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD mov x20, x0
- mov v8.d[1], v9.d[0] - ;; size=32 bbWeight=0.36 PerfScore 1.98
+ ;; size=24 bbWeight=0.36 PerfScore 1.26
G_M19422_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M19422_IG10 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M19422_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M19422_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov v8.d[1], v9.d[0] - mov v0.16b, v8.16b
+ ldr q0, [fp, #0x40] // [V03 arg2]
ldr x0, [x19, #0x08] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0-x1]
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG13
- ;; size=68 bbWeight=2 PerfScore 39.00 -G_M19422_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=52 bbWeight=0.25 PerfScore 4.25 +G_M19422_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x20
- add x0, fp, #48 // [V04 loc0]
+ add x0, fp, #40 // [V04 loc0]
movz x2, #0xD1FFAB1E // code for Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- mov v9.d[0], v8.d[1]
blr x2
- mov v8.d[1], v9.d[0]
cbnz w0, G_M19422_IG09
- ;; size=40 bbWeight=8 PerfScore 76.00 -G_M19422_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M19422_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M19422_IG12: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M19422_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M19422_IG14: ; bbWeight=0.50, epilog, nogc, extend ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
ldp fp, lr, [sp], #0x70 ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 280, prolog size 28, PerfScore 154.82, instruction count 70, allocated bytes for code 280 (MethodHash=fb73b421) for method 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)
+; Total bytes of code 236, prolog size 24, PerfScore 49.13, instruction count 59, allocated bytes for code 236 (MethodHash=fb73b421) for method 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)
; ============================================================ Unwind Info: @@ -151,7 +146,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -163,8 +158,9 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]! E4 end E4 end
+ E4 end + E4 end

-16 (-8.51%) : 290168.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -12,9 +12,9 @@ ; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]> ;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 21.52) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 3.13) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,7 +22,7 @@ G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -37,23 +37,15 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=2.13, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG07 - ;; size=8 bbWeight=2.13 PerfScore 8.52 -G_M2572_IG04: ; bbWeight=6.13, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x2] - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=12 bbWeight=6.13 PerfScore 12.26 -G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG05 + ;; size=52 bbWeight=1 PerfScore 10.50 +G_M2572_IG03: ; bbWeight=2.88, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -69,13 +61,13 @@ G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #0xD1FFAB1E LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=2.88 PerfScore 28.77 +G_M2572_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -94,7 +86,7 @@ G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 41.28, instruction count 47, allocated bytes for code 188 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 172, prolog size 8, PerfScore 42.77, instruction count 43, allocated bytes for code 172 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ 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)

-20 (-8.33%) : 123339.dasm - Roslyn.Utilities.OneOrMany1[ubyte]:Any[System.Numerics.Vector1[float]](System.Func3[ubyte,System.Numerics.Vector1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

@@ -8,40 +8,38 @@ ; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 4 ) byref -> x0 this single-def -; V01 arg1 [V01,T03] ( 4, 6 ) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> -; V02 arg2 [V02,T09] ( 3, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T05] ( 4, 4 ) byref -> x0 this single-def +; V01 arg1 [V01,T03] ( 4, 2.50) ref -> x19 class-hnd single-def <System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte]> +; V02 arg2 [V02,T09] ( 3, 2.25) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V04 loc1 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1+Enumerator[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Roslyn.Utilities.OneOrMany`1[ubyte]>
-; V08 tmp3 [V08,T05] ( 3, 6 ) ubyte -> x1 "Inline return value spill temp"
+; V08 tmp3 [V08,T04] ( 3, 0.75) ubyte -> x1 "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T10] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V12 tmp7 [V12,T02] ( 3, 12 ) int -> x1 "Inline return value spill temp"
+; V12 tmp7 [V12,T02] ( 3, 1.50) int -> x1 "Inline return value spill temp"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "field V07._one (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref "field V07._many (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15,T00] ( 7, 31 ) int -> x22 "V03.[000..004)" -; V16 tmp11 [V16,T06] ( 2, 3 ) ubyte -> x20 single-def "V03.[008..009)" -; V17 tmp12 [V17,T01] ( 6, 17 ) ref -> x21 single-def "V03.[016..024)"
+; V15 tmp10 [V15,T00] ( 7, 4.75) int -> x22 "V03.[000..004)" +; V16 tmp11 [V16,T06] ( 2, 1.25) ubyte -> x20 single-def "V03.[008..009)" +; V17 tmp12 [V17,T01] ( 6, 3 ) ref -> x21 single-def "V03.[016..024)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[000..004)" ; V19 tmp14 [V19,T08] ( 2, 2 ) ubyte -> x20 single-def "V06.[008..009)" ; V20 tmp15 [V20,T07] ( 2, 2 ) ref -> x21 single-def "V06.[016..024)" ;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M17406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp d8, d9, [sp, #0x10]
stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] mov fp, sp
- mov v8.16b, v0.16b
mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] ldrb w20, [x0] @@ -50,14 +48,14 @@ G_M17406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, movn w22, #0 b G_M17406_IG06 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M17406_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M17406_IG03: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] cbnz x21, G_M17406_IG04 cbnz w22, G_M17406_IG15 sxtw w1, w20 b G_M17406_IG05
- ;; size=16 bbWeight=2 PerfScore 7.00 -G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.25 PerfScore 0.88 +G_M17406_IG04: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr w1, [x21, #0x08] cmp w22, w1 bhs G_M17406_IG14 @@ -65,54 +63,51 @@ G_M17406_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; byrRegs +[x1] ldrb w1, [x1, w22, UXTW #2] ; byrRegs -[x1]
- ;; size=20 bbWeight=2 PerfScore 16.00 -G_M17406_IG05: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - mov v0.16b, v8.16b
+ ;; size=20 bbWeight=0.25 PerfScore 2.00 +G_M17406_IG05: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str q0, [fp, #0x10] // [V02 arg2]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr x2, [x19, #0x18]
- mov v9.d[0], v8.d[1]
blr x2 ; gcrRegs -[x0]
- mov v8.d[1], v9.d[0]
+ ldr q0, [fp, #0x10] // [V02 arg2]
cbnz w0, G_M17406_IG12
- ;; size=28 bbWeight=2 PerfScore 21.00 -G_M17406_IG06: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0.25 PerfScore 2.75 +G_M17406_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 cbz x21, G_M17406_IG08
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG07: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
ldr w1, [x21, #0x08] b G_M17406_IG09
- ;; size=8 bbWeight=2 PerfScore 8.00 -G_M17406_IG08: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M17406_IG08: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
mov w1, #1
- ;; size=4 bbWeight=2 PerfScore 1.00 -G_M17406_IG09: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M17406_IG09: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
cmp w22, w1 blt G_M17406_IG03
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17406_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17406_IG10: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21] mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=4 bbWeight=0.06 PerfScore 0.03
G_M17406_IG11: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M17406_IG13: ; bbWeight=0.50, epilog, nogc, extend ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20]
- ldp d8, d9, [sp, #0x10]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M17406_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00 @@ -137,7 +132,7 @@ G_M17406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 95.50, instruction count 60, allocated bytes for code 240 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
+; Total bytes of code 220, prolog size 16, PerfScore 25.53, instruction count 55, allocated bytes for code 220 (MethodHash=c9d7bc01) for method Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -148,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -161,7 +156,8 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
+ E4 end + E4 end

+48 (+70.59%) : 181556.dasm - System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)

@@ -8,13 +8,15 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T02] ( 4, 12 ) byref -> x2 single-def
+; V01 arg1 [V01,T02] ( 6, 13.25) byref -> x2 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) int -> x4 "Span.get_Item index" -; V04 tmp2 [V04,T04] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V05 tmp3 [V05,T05] ( 2, 5 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T00] ( 6, 27 ) int -> x4 "Span.get_Item index" +; V04 tmp2 [V04,T04] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T05] ( 3, 5.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V06 cse0 [V06,T03] ( 3, 10 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T01] ( 3, 20 ) int -> x3 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 3, 1.25) int -> x3 "CSE - moderate" +; V08 cse2 [V08,T01] ( 3, 20 ) int -> x3 "CSE - aggressive" +; V09 cse3 [V09,T06] ( 3, 2.50) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,34 +28,56 @@ G_M33876_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b ; byrRegs +[x0 x2] b G_M33876_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M33876_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
+G_M33876_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
str w3, [x2]
- ;; size=4 bbWeight=2 PerfScore 2.00 -G_M33876_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ b G_M33876_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.50 +G_M33876_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
ldr w3, [x2] cmp w3, #1
- ble G_M33876_IG06 - ;; size=12 bbWeight=8 PerfScore 36.00 -G_M33876_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
+ ble G_M33876_IG10 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M33876_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
sub w3, w3, #1 sxtw w4, w3 cmp w4, w1
- bhs G_M33876_IG07
+ bhs G_M33876_IG11
ldr w4, [x0, w4, UXTW #2] cbz w4, G_M33876_IG03
+ ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M33876_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0 x2] + b G_M33876_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M33876_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref + ; byrRegs +[x0 x2] + str w3, [x2] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M33876_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + ldr w3, [x2] + cmp w3, #1 + ble G_M33876_IG10 + ;; size=12 bbWeight=8 PerfScore 36.00 +G_M33876_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz + sub w3, w3, #1 + sxtw w4, w3 + cmp w4, w1 + bhs G_M33876_IG11 + ldr w4, [x0, w4, UXTW #2] + cbz w4, G_M33876_IG07
;; size=24 bbWeight=4 PerfScore 26.00
-G_M33876_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M33876_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M33876_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33876_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 68.50, instruction count 17, allocated bytes for code 68 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 76.88, instruction count 29, allocated bytes for code 116 (MethodHash=39ed7bab) for method System.Data.SqlTypes.SqlDecimal:MpNormalize(System.ReadOnlySpan`1[uint],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+71.43%) : 9623.dasm - System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)

@@ -8,16 +8,18 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> -; V01 arg1 [V01,T01] ( 3, 6 ) byref -> x1 single-def -; V02 loc0 [V02,T00] ( 6, 18 ) ref -> x0 class-hnd <System.Runtime.InteropServices.ComEventsSink>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> +; V01 arg1 [V01,T02] ( 3, 2.50) byref -> x1 single-def +; V02 loc0 [V02,T00] ( 10, 20 ) ref -> x0 class-hnd <System.Runtime.InteropServices.ComEventsSink>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) simd16 -> zero-ref "V04.[000..016)" ;* V08 tmp5 [V08 ] ( 0, 0 ) simd16 -> zero-ref "V05.[000..016)"
-; V09 rat0 [V09,T03] ( 3, 24 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V09 cse0 [V09,T04] ( 3, 5 ) simd16 -> d17 "CSE - aggressive" +; V10 rat0 [V10,T05] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable" +; V11 rat1 [V11,T03] ( 3, 24 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -30,28 +32,48 @@ G_M31099_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, by ; byrRegs +[x1] b G_M31099_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31099_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref
+G_M31099_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; byrRegs -[x1]
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M31099_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz - cbz x0, G_M31099_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M31099_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
+ b G_M31099_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M31099_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz + ; byrRegs +[x1] + cbz x0, G_M31099_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M31099_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
ldr q16, [x0, #0x24] ldr q17, [x1] cmeq v16.16b, v16.16b, v17.16b uminp v16.4s, v16.4s, v16.4s
- umov x2, v16.d[0] - cmn x2, #1 - bne G_M31099_IG03 - ;; size=28 bbWeight=4 PerfScore 42.00 -G_M31099_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ umov x1, v16.d[0]
; byrRegs -[x1]
+ cmn x1, #1 + bne G_M31099_IG03 + ;; size=28 bbWeight=0.50 PerfScore 5.25 +G_M31099_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + b G_M31099_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M31099_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M31099_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M31099_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M31099_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr q16, [x0, #0x24] + cmeq v16.16b, v16.16b, v17.16b + uminp v16.4s, v16.4s, v16.4s + umov x1, v16.d[0] + cmn x1, #1 + bne G_M31099_IG07 + ;; size=24 bbWeight=4 PerfScore 30.00 +G_M31099_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 60.50, instruction count 14, allocated bytes for code 56 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 55.88, instruction count 24, allocated bytes for code 96 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+71.43%) : 120607.dasm - System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)

@@ -8,16 +8,18 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> -; V01 arg1 [V01,T01] ( 3, 6 ) byref -> x1 single-def -; V02 loc0 [V02,T00] ( 6, 18 ) ref -> x0 class-hnd <System.Runtime.InteropServices.ComEventsSink>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> +; V01 arg1 [V01,T02] ( 3, 2.50) byref -> x1 single-def +; V02 loc0 [V02,T00] ( 10, 20 ) ref -> x0 class-hnd <System.Runtime.InteropServices.ComEventsSink>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) simd16 -> zero-ref "V04.[000..016)" ;* V08 tmp5 [V08 ] ( 0, 0 ) simd16 -> zero-ref "V05.[000..016)"
-; V09 rat0 [V09,T03] ( 3, 24 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V09 cse0 [V09,T04] ( 3, 5 ) simd16 -> d17 "CSE - aggressive" +; V10 rat0 [V10,T05] ( 3, 3 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable" +; V11 rat1 [V11,T03] ( 3, 24 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -30,28 +32,48 @@ G_M31099_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, by ; byrRegs +[x1] b G_M31099_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31099_IG03: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref
+G_M31099_IG03: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; byrRegs -[x1]
ldr x0, [x0, #0x18]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M31099_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz - cbz x0, G_M31099_IG06 - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M31099_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
+ b G_M31099_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M31099_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz + ; byrRegs +[x1] + cbz x0, G_M31099_IG10 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M31099_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
ldr q16, [x0, #0x24] ldr q17, [x1] cmeq v16.16b, v16.16b, v17.16b uminp v16.4s, v16.4s, v16.4s
- umov x2, v16.d[0] - cmn x2, #1 - bne G_M31099_IG03 - ;; size=28 bbWeight=4 PerfScore 42.00 -G_M31099_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ umov x1, v16.d[0]
; byrRegs -[x1]
+ cmn x1, #1 + bne G_M31099_IG03 + ;; size=28 bbWeight=0.50 PerfScore 5.25 +G_M31099_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + b G_M31099_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M31099_IG07: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ldr x0, [x0, #0x18] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M31099_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M31099_IG10 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M31099_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr q16, [x0, #0x24] + cmeq v16.16b, v16.16b, v17.16b + uminp v16.4s, v16.4s, v16.4s + umov x1, v16.d[0] + cmn x1, #1 + bne G_M31099_IG07 + ;; size=24 bbWeight=4 PerfScore 30.00 +G_M31099_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 60.50, instruction count 14, allocated bytes for code 56 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 55.88, instruction count 24, allocated bytes for code 96 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.windows.arm64.Release.mch

-36 (-15.00%) : 356489.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]>
; V01 loc0 [V01 ] ( 2, 2 ) byte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[byte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[byte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M24034_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24034_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M24034_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M24034_IG08
+ bne G_M24034_IG07
;; size=56 bbWeight=1 PerfScore 15.50 G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M24034_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M24034_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M24034_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M24034_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M24034_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M24034_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M24034_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrsb x0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M24034_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M24034_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M24034_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M24034_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M24034_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M24034_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M24034_IG05
+ b G_M24034_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=a7c0a21d) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-36 (-15.00%) : 359905.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)

@@ -7,11 +7,11 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]>
; V01 loc0 [V01 ] ( 2, 2 ) ubyte -> [fp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V04 tmp2 [V04,T02] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
+; V04 tmp2 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd single-def "impAppendStmt" <System.Random>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Random> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -19,34 +19,33 @@ ;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V11 tmp9 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp10 [V12,T05] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
+; V12 tmp10 [V12,T02] ( 5, 3 ) ref -> x0 single-def "guarded devirt arg temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Random+Net5CompatSeedImpl>
-; V14 tmp12 [V14,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V14 tmp12 [V14,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V16 tmp14 [V16,T01] ( 2, 9 ) byref -> x19 single-def "Inlining Arg"
+; V16 tmp14 [V16,T03] ( 2, 2 ) byref -> x0 single-def "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V18 tmp16 [V18,T06] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp16 [V18,T04] ( 2, 2 ) byref -> x20 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP ;* V22 tmp20 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V07._length (fldOffset=0x8)" P-INDEP
-; V24 tmp22 [V24,T07] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T05] ( 4, 1.50) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp23 [V25,T08] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x8)" P-INDEP ;* V26 tmp24 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T04] ( 2, 4.50) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp26 [V28,T06] ( 2, 1 ) byref -> x20 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp27 [V29,T09] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP ; ; Lcl frame size = 16 G_M4386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp str wzr, [fp, #0x1C] // [V01 loc0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x19, [x0, #0x08] @@ -65,7 +64,7 @@ G_M4386_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M4386_IG08
+ bne G_M4386_IG07
;; size=56 bbWeight=1 PerfScore 15.50 G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldr x0, [x19, #0x08] @@ -75,41 +74,29 @@ G_M4386_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M4386_IG07 - add x19, x0, #8 - ; gcrRegs -[x19] - ; byrRegs +[x19] - mov w21, wzr - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M4386_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ bne G_M4386_IG06 + add x0, x0, #8
; gcrRegs -[x0]
- mov w0, w21 - add x22, x20, x0 - ; byrRegs +[x22] - mov x0, x19
; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Random+CompatPrng:InternalSample():int:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
+ ; gcrRegs -[x19]
; byrRegs -[x0]
- strb w0, [x22] - add w21, w21, #1 - cmp w21, #0 - ble G_M4386_IG04 - ;; size=48 bbWeight=4 PerfScore 40.00 -G_M4386_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19-x20 x22]
+ strb w0, [x20] + ;; size=56 bbWeight=0.50 PerfScore 8.00 +G_M4386_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x20]
ldrb w0, [fp, #0x1C] // [V01 loc0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4386_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+G_M4386_IG05: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M4386_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x0] ; byrRegs +[x20] mov x1, x20 @@ -121,9 +108,9 @@ G_M4386_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x blr x3 ; gcrRegs -[x0] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=28 bbWeight=0 PerfScore 0.00
-G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M4386_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -137,10 +124,10 @@ G_M4386_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} blr x3 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x20]
- b G_M4386_IG05
+ b G_M4386_IG04
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 20, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
+; Total bytes of code 204, prolog size 16, PerfScore 32.00, instruction count 51, allocated bytes for code 204 (MethodHash=e971eedd) for method System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -159,9 +146,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

-48 (-8.89%) : 148307.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)

@@ -9,11 +9,11 @@ ; 2 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 11, 12.92) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule> -; V01 loc0 [V01 ] ( 9, 54.71) struct (16) [fp+0x30] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator> -; V02 loc1 [V02 ] ( 4, 0.04) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection>
+; V00 this [V00,T04] ( 10, 4.03) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule> +; V01 loc0 [V01 ] ( 9, 0.07) struct (16) [fp+0x28] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator> +; V02 loc1 [V02 ] ( 4, 0.04) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.CustomAttributeHandle>
-; V04 loc3 [V04,T01] ( 5, 17.81) int -> x20
+; V04 loc3 [V04,T02] ( 3, 0.02) int -> x20
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle> ;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Reflection.Metadata.CustomAttribute> ;* V07 loc6 [V07,T17] ( 0, 0 ) ubyte -> zero-ref @@ -29,13 +29,13 @@ ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.CustomAttributeHandle> ;* V18 tmp10 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.CustomAttributeHandle>
-;* V20 tmp12 [V20,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V21 tmp13 [V21 ] ( 3, 8.91) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V01._reader (fldOffset=0x0)" P-DEP -; V22 tmp14 [V22 ] ( 3, 8.92) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V01._lastRowId (fldOffset=0x8)" P-DEP -; V23 tmp15 [V23 ] ( 7, 36.89) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V01._currentRowId (fldOffset=0xc)" P-DEP -; V24 tmp16 [V24 ] ( 2, 0.02) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._reader (fldOffset=0x0)" P-DEP -; V25 tmp17 [V25 ] ( 2, 0.02) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V02._firstRowId (fldOffset=0x8)" P-DEP -; V26 tmp18 [V26 ] ( 2, 0.02) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V02._lastRowId (fldOffset=0xc)" P-DEP
+;* V20 tmp12 [V20,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V21 tmp13 [V21 ] ( 3, 0.02) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V01._reader (fldOffset=0x0)" P-DEP +; V22 tmp14 [V22 ] ( 3, 0.02) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V01._lastRowId (fldOffset=0x8)" P-DEP +; V23 tmp15 [V23 ] ( 7, 0.05) int -> [fp+0x34] do-not-enreg[X] addr-exposed "field V01._currentRowId (fldOffset=0xc)" P-DEP +; V24 tmp16 [V24 ] ( 2, 0.02) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V02._reader (fldOffset=0x0)" P-DEP +; V25 tmp17 [V25 ] ( 2, 0.02) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V02._firstRowId (fldOffset=0x8)" P-DEP +; V26 tmp18 [V26 ] ( 2, 0.02) int -> [fp+0x24] do-not-enreg[X] addr-exposed "field V02._lastRowId (fldOffset=0xc)" P-DEP
;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref "field V03._rowId (fldOffset=0x0)" P-INDEP ; V28 tmp20 [V28,T13] ( 2, 0 ) int -> x1 "field V05._rowId (fldOffset=0x0)" P-INDEP ; V29 tmp21 [V29,T10] ( 3, 0 ) ref -> x0 "field V06._reader (fldOffset=0x0)" P-INDEP @@ -44,28 +44,27 @@ ; V32 tmp24 [V32,T07] ( 3, 0.03) ref -> x0 single-def "field V12._reader (fldOffset=0x0)" P-INDEP ;* V33 tmp25 [V33,T09] ( 0, 0 ) int -> zero-ref single-def "field V12._firstRowId (fldOffset=0x8)" P-INDEP ; V34 tmp26 [V34,T08] ( 2, 0.02) int -> x1 single-def "field V12._lastRowId (fldOffset=0xc)" P-INDEP
-; V35 tmp27 [V35,T00] ( 6, 17.81) int -> x19 "field V13._rowId (fldOffset=0x0)" P-INDEP -; V36 tmp28 [V36,T02] ( 2, 17.81) int -> x19 "field V15._rowId (fldOffset=0x0)" P-INDEP
+; V35 tmp27 [V35,T01] ( 5, 0.02) int -> x19 "field V13._rowId (fldOffset=0x0)" P-INDEP +; V36 tmp28 [V36,T03] ( 2, 0.02) int -> x19 "field V15._rowId (fldOffset=0x0)" P-INDEP
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._rowId (fldOffset=0x0)" P-INDEP ; V38 tmp30 [V38,T16] ( 2, 0 ) int -> x1 "field V19._rowId (fldOffset=0x0)" P-INDEP ; V39 tmp31 [V39,T12] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V40 PSPSym [V40,T05] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym"
+; V40 PSPSym [V40,T05] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M13056_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x48] - str x21, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]! + stp x19, x20, [sp, #0x40]
mov fp, sp
- stp xzr, xzr, [fp, #0x30] // [V01 loc0], [V01 loc0+0x08] - stp xzr, xzr, [fp, #0x20] // [V02 loc1], [V02 loc1+0x08] - add x1, sp, #96 - str x1, [fp, #0x40] // [V40 PSPSym] - str x0, [fp, #0x18] // [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V01 loc0], [V01 loc0+0x08] + stp xzr, xzr, [fp, #0x18] // [V02 loc1], [V02 loc1+0x08] + add x1, sp, #80 + str x1, [fp, #0x38] // [V40 PSPSym] + str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00 -G_M13056_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M13056_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0] ldrb w1, [x0, #0x6D] cbz w1, G_M13056_IG06 @@ -77,22 +76,21 @@ G_M13056_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre cset x0, eq ;; size=12 bbWeight=1 PerfScore 4.00 G_M13056_IG04: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48] - ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40] + ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M13056_IG05: ; bbWeight=0.01, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M13056_IG05: ; bbWeight=0.01, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ldr x20, [fp, #0x18] // [V00 this] - ; gcrRegs +[x20] - strb w0, [x20, #0x6D] - mov x0, x20
+ ldr x1, [fp, #0x10] // [V00 this] + ; gcrRegs +[x1] + strb w0, [x1, #0x6D] + ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] b G_M13056_IG03
- ;; size=20 bbWeight=0.01 PerfScore 0.05
+ ;; size=20 bbWeight=0.01 PerfScore 0.06
G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
+ ; gcrRegs -[x1]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -100,11 +98,11 @@ G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x1 ; gcr arg pop 0 ldr w1, [x0, #0xD1FFAB1E]
- str x0, [fp, #0x20] // [V24 tmp16]
+ str x0, [fp, #0x18] // [V24 tmp16]
mov w0, #1 ; gcrRegs -[x0]
- stp w0, w1, [fp, #0x28] // [V25 tmp17], [V26 tmp18] - add x0, fp, #32 // [V02 loc1]
+ stp w0, w1, [fp, #0x20] // [V25 tmp17], [V26 tmp18] + add x0, fp, #24 // [V02 loc1]
movz x1, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection:GetEnumerator():System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -112,81 +110,30 @@ G_M13056_IG06: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- stp x0, x1, [fp, #0x30] // [V01 loc0], [V01 loc0+0x08] - b G_M13056_IG08 - ;; size=68 bbWeight=0.01 PerfScore 0.18 -G_M13056_IG07: ; bbWeight=8.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ stp x0, x1, [fp, #0x28] // [V01 loc0], [V01 loc0+0x08] + ;; size=64 bbWeight=0.01 PerfScore 0.17 +G_M13056_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [fp, #0x30] // [V21 tmp13] - ; gcrRegs +[x0] - ldr x0, [x0, #0xD1FFAB1E] - cbnz x0, G_M13056_IG10 - ldr w0, [fp, #0x3C] // [V23 tmp15] - ; gcrRegs -[x0] - and w19, w0, #0xD1FFAB1E - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0] - mov w1, w19 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ; gcr arg pop 0 - sxtw w20, w0 - cmn w20, #1 - bne G_M13056_IG11 - ;; size=60 bbWeight=8.90 PerfScore 164.73 -G_M13056_IG08: ; bbWeight=8.91, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldp w1, w0, [fp, #0x38] // [V22 tmp14], [V23 tmp15]
+ ldp w1, w0, [fp, #0x30] // [V22 tmp14], [V23 tmp15]
cmp w0, w1
- bge G_M13056_IG09 - ldr w0, [fp, #0x3C] // [V23 tmp15] - add w0, w0, #1 - str w0, [fp, #0x3C] // [V23 tmp15] - b G_M13056_IG07 - ;; size=28 bbWeight=8.91 PerfScore 71.31 -G_M13056_IG09: ; bbWeight=1.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #0xD1FFAB1E - str w0, [fp, #0x3C] // [V23 tmp15] - b G_M13056_IG05 - ;; size=12 bbWeight=1.24 PerfScore 3.09 -G_M13056_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add x0, fp, #48 // [V01 loc0] - movz x1, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:GetCurrentCustomAttributeIndirect():System.Reflection.Metadata.CustomAttributeHandle:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - sxtw w19, w0 - ldr x0, [fp, #0x18] // [V00 this]
+ blt G_M13056_IG14 + ;; size=12 bbWeight=0.01 PerfScore 0.03 +G_M13056_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M13056_IG13 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M13056_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, #2 + ldr x1, [fp, #0x10] // [V00 this] + ; gcrRegs +[x1] + strb w0, [x1, #0x6D] + mov x0, x1
; gcrRegs +[x0]
- mov w1, w19 - movz x2, #0xD1FFAB1E // code for <unknown method>
+ movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this
movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x0] - ; gcr arg pop 0 - sxtw w20, w0 - cmn w20, #1 - beq G_M13056_IG08 - ;; size=68 bbWeight=0 PerfScore 0.00 -G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #2 - ldr x21, [fp, #0x18] // [V00 this] - ; gcrRegs +[x21] - strb w0, [x21, #0x6D] - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:get_MetadataReader():System.Reflection.Metadata.MetadataReader:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1
+ ; gcrRegs -[x1]
; gcr arg pop 0 mov w1, w19 movz x2, #0xD1FFAB1E // code for System.Reflection.Metadata.MetadataReader:GetCustomAttribute(System.Reflection.Metadata.CustomAttributeHandle):System.Reflection.Metadata.CustomAttribute:this @@ -215,7 +162,7 @@ G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x1 ; gcr arg pop 0 sxtw w1, w0
- mov x0, x21
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0] mov w2, w19 mov w3, w20 @@ -226,37 +173,81 @@ G_M13056_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x4 ; gcrRegs -[x0] ; gcr arg pop 0
- ;; size=152 bbWeight=0 PerfScore 0.00 -G_M13056_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x21]
+ b G_M13056_IG15 + ;; size=156 bbWeight=0 PerfScore 0.00 +G_M13056_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #40 // [V01 loc0] + movz x2, #0xD1FFAB1E // code for System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator:GetCurrentCustomAttributeIndirect():System.Reflection.Metadata.CustomAttributeHandle:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
...

+48 (+70.59%) : 448989.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)

@@ -9,10 +9,10 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 10032 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests> -; V01 loc0 [V01,T02] ( 3, 3 ) int -> x0
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests> +; V01 loc0 [V01,T00] ( 6, 6 ) int -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3, 3 ) byref -> x19 hoist "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 5, 5 ) byref -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -23,12 +23,17 @@ G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x0, [fp, #0x48] ; gcrRegs +[x0] ;; size=16 bbWeight=1 PerfScore 4.50
-G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x19, x0, #16 ; byrRegs +[x19]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38489_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldapr w0, [x19]
; gcrRegs -[x0]
+ add w0, w0, #1 + stlr w0, [x19] + tst w0, #0xD1FFAB1E + beq G_M38489_IG05 + ;; size=24 bbWeight=1 PerfScore 6.50 +G_M38489_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldapr w0, [x19] add w0, w0, #1 stlr w0, [x19] @@ -45,8 +50,18 @@ G_M38489_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; gcr arg pop 0 b G_M38489_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
+G_M38489_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + mov w0, wzr + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + b G_M38489_IG03 + ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 16, PerfScore 11.00, instruction count 17, allocated bytes for code 68 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)
+; Total bytes of code 116, prolog size 16, PerfScore 17.00, instruction count 29, allocated bytes for code 116 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -57,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+24 (+75.00%) : 154817.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+75.00%) : 574383.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 26376 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> -; V02 loc1 [V02,T02] ( 3, 2 ) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V01 loc0 [V01,T02] ( 5, 4 ) ref -> registers class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables> +; V02 loc1 [V02,T01] ( 6, 5 ) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,22 +21,42 @@ G_M46173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M46173_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- ldr x1, [x0, #0x08]
+ mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M46173_IG04 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M46173_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + cbnz x2, G_M46173_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M46173_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x2] + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M46173_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - mov x0, x1
+G_M46173_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] +[x2] + mov x1, x2 + ; gcrRegs +[x1] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46173_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + ldr x2, [x1, #0x08] + ; gcrRegs +[x2] + cbz x2, G_M46173_IG03 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M46173_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x0, x2
; gcrRegs +[x0]
- b G_M46173_IG02 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov x1, x0 + ; gcrRegs +[x1] + b G_M46173_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
+; Total bytes of code 56, prolog size 8, PerfScore 13.00, instruction count 14, allocated bytes for code 56 (MethodHash=03f14ba2) for method Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetRootScope():Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-40 (-9.17%) : 225456.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)

@@ -8,36 +8,34 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
+; V00 this [V00,T04] ( 3, 3 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.TripleDES>
; V01 arg1 [V01,T02] ( 6, 6 ) ref -> x19 class-hnd single-def <ubyte[]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V05 tmp3 [V05,T01] ( 2, 10 ) int -> x21 "Inlining Arg"
+; V05 tmp3 [V05,T01] ( 2, 4 ) int -> x0 "Inlining Arg"
; V06 tmp4 [V06,T05] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 1 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 17 ) int -> x22 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V13 tmp11 [V13,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 cse0 [V14,T04] ( 2, 5 ) byref -> x23 hoist "CSE - aggressive"
+; V14 cse0 [V14,T03] ( 2, 2 ) byref -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M39649_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x20]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=28 bbWeight=1 PerfScore 5.50 -G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=1 PerfScore 3.50 +G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E @@ -50,36 +48,26 @@ G_M39649_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x2 ; gcrRegs -[x0] ldr w1, [x19, #0x08]
- lsl w21, w1, #3
+ lsl w0, w1, #3
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w22, wzr - add x23, x1, #16 - ; byrRegs +[x23] - ;; size=68 bbWeight=1 PerfScore 17.00 -G_M39649_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x23, w22, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
- add x2, fp, #16 // [V07 tmp5] - mov w0, w21
+ ; byrRegs -[x1] + add x2, fp, #24 // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M39649_IG04 - add w22, w22, #1 - cmp w22, #0 - bgt G_M39649_IG06 - b G_M39649_IG03 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x23]
+ cbz w0, G_M39649_IG04
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.TripleDES:IsWeakKey(ubyte[]):ubyte @@ -88,7 +76,7 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x1] blr x1 ; gcrRegs -[x0]
- cbnz w0, G_M39649_IG07
+ cbnz w0, G_M39649_IG05
mov x0, x20 ; gcrRegs +[x0] mov x1, x19 @@ -99,16 +87,14 @@ G_M39649_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 13.50 -G_M39649_IG05: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ;; size=152 bbWeight=1 PerfScore 40.00 +G_M39649_IG03: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00 -G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - strb wzr, [fp, #0x10] // [V07 tmp5]
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M39649_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + strb wzr, [fp, #0x18] // [V07 tmp5]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -137,7 +123,7 @@ G_M39649_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=80 bbWeight=0 PerfScore 0.00
-G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -186,7 +172,7 @@ G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=132 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 20, PerfScore 96.00, instruction count 109, allocated bytes for code 436 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
+; Total bytes of code 396, prolog size 12, PerfScore 46.50, instruction count 99, allocated bytes for code 396 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -197,7 +183,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -205,9 +191,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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
E4 end

-16 (-8.51%) : 184502.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)

@@ -12,9 +12,9 @@ ; V01 tmp1 [V01,T01] ( 4, 8 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]> ;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V04 tmp4 [V04,T00] ( 5, 21.52) int -> x0 "Inline stloc first use temp"
+;* V04 tmp4 [V04,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V06 cse0 [V06,T02] ( 2, 3.13) byref -> x1 hoist "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,7 +22,7 @@ G_M2572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -37,23 +37,15 @@ G_M2572_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=1 PerfScore 7.00 -G_M2572_IG03: ; bbWeight=2.13, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M2572_IG07 - ;; size=8 bbWeight=2.13 PerfScore 8.52 -G_M2572_IG04: ; bbWeight=6.13, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ; gcrRegs -[x2] - add w0, w0, #1 - cmp w0, #1 - blt G_M2572_IG03 - ;; size=12 bbWeight=6.13 PerfScore 12.26 -G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M2572_IG05 + ;; size=52 bbWeight=1 PerfScore 10.50 +G_M2572_IG03: ; bbWeight=2.88, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -69,13 +61,13 @@ G_M2572_IG05: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref movk x8, #0xD1FFAB1E LSL #16 movk x8, #0xD1FFAB1E LSL #32 ldr x8, [x8]
- ;; size=60 bbWeight=1 PerfScore 10.00 -G_M2572_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=2.88 PerfScore 28.77 +G_M2572_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x8 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M2572_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x6] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -94,7 +86,7 @@ G_M2572_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 41.28, instruction count 47, allocated bytes for code 188 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 172, prolog size 8, PerfScore 42.77, instruction count 43, allocated bytes for code 172 (MethodHash=7398f5f3) for method System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ 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)

-32 (-8.00%) : 235759.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)

@@ -9,62 +9,58 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.Security.Cryptography.RC2>
-; V01 arg1 [V01,T01] ( 7, 9 ) int -> x19 single-def
+; V01 arg1 [V01,T01] ( 7, 5.50) int -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V06 tmp4 [V06,T04] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]>
-; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp5 [V07 ] ( 2, 0.50) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 16.50) int -> x21 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V11 tmp9 [V11,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" ; V12 tmp10 [V12,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V13 cse0 [V13,T03] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
+; V13 cse0 [V13,T03] ( 2, 1 ) byref -> x1 "CSE - aggressive"
; ; Lcl frame size = 16 G_M43684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov w19, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M43684_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ldr w1, [x20, #0x38] cmp w19, w1
- bgt G_M43684_IG09
+ bgt G_M43684_IG07
cbnz w19, G_M43684_IG05 ;; size=16 bbWeight=1 PerfScore 5.50 G_M43684_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref str wzr, [x20, #0x3C] ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M43684_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M43684_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz cmp w19, #40
- blt G_M43684_IG10
+ blt G_M43684_IG08
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov w21, wzr - add x22, x1, #16 - ; byrRegs +[x22] - ;; size=32 bbWeight=0.50 PerfScore 3.50 -G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref, isz
+ add x1, x1, #16
; gcrRegs -[x1]
- ldr x1, [x22, w21, UXTW #3]
+ ; byrRegs +[x1] + ldr x1, [x1]
; gcrRegs +[x1]
+ ; byrRegs -[x1]
add x2, fp, #24 // [V07 tmp5] mov w0, w19 movz x3, #0xD1FFAB1E // code for System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte @@ -73,23 +69,15 @@ G_M43684_IG06: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=400000 {x2 ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- cbnz w0, G_M43684_IG07 - add w21, w21, #1 - cmp w21, #0 - bgt G_M43684_IG11 - b G_M43684_IG06 - ;; size=52 bbWeight=4 PerfScore 54.00 -G_M43684_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; byrRegs -[x22]
+ cbz w0, G_M43684_IG09
str w19, [x20, #0x3C]
- ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M43684_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x30]
+ ;; size=68 bbWeight=0.50 PerfScore 9.00 +G_M43684_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M43684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -119,7 +107,7 @@ G_M43684_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -148,7 +136,7 @@ G_M43684_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43684_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb wzr, [fp, #0x18] // [V07 tmp5] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -180,7 +168,7 @@ G_M43684_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 16, PerfScore 72.50, instruction count 100, allocated bytes for code 400 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
+; Total bytes of code 368, prolog size 12, PerfScore 21.50, instruction count 92, allocated bytes for code 368 (MethodHash=914c555b) for method System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -191,7 +179,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -202,9 +190,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]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end
E4 end E4 end E4 end

+44 (+64.71%) : 72052.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x10] ; gcrRegs +[x2] ldr w3, [x2, #0x20] cmp w1, w3 bge G_M17963_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M17963_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M17963_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M17963_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M17963_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x18]
- b G_M17963_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x10] + ; gcrRegs +[x2] + ldr w3, [x2, #0x20] + cmp w1, w3 + bge G_M17963_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M17963_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M17963_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x18] + b G_M17963_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #8 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+68.75%) : 213382.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)

@@ -8,28 +8,40 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
-; V01 loc0 [V01,T00] ( 3, 24 ) int -> x0
+; V01 loc0 [V01,T00] ( 6, 27 ) int -> x20
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 3, 17 ) byref -> x19 hoist "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 5, 19 ) byref -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp x19, x20, [sp, #0x10]
mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50
-G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] add x19, x0, #16 ; byrRegs +[x19]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs -[x0]
ldapr w0, [x19]
- add w0, w0, #1 - stlr w0, [x19] - tst w0, #0xD1FFAB1E
+ ; gcrRegs -[x0] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E + bne G_M38489_IG03 + mov w0, wzr + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + ;; size=48 bbWeight=1 PerfScore 12.50 +G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz + ldapr w0, [x19] + add w20, w0, #1 + stlr w20, [x19] + tst w20, #0xD1FFAB1E
bne G_M38489_IG03 mov w0, wzr movz x1, #0xD1FFAB1E // code for <unknown method> @@ -41,7 +53,7 @@ G_M38489_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by b G_M38489_IG03 ;; size=48 bbWeight=8 PerfScore 104.00
-; Total bytes of code 64, prolog size 12, PerfScore 107.00, instruction count 16, allocated bytes for code 64 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 119.00, instruction count 27, allocated bytes for code 108 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
; ============================================================ Unwind Info: @@ -52,12 +64,12 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ---- E1 set_fp; mov fp, sp
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end E4 end

+48 (+75.00%) : 312008.dasm - System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:b_00():this (FullOpts)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.CESchedulerPairTests+<>c>
-; V01 loc0 [V01 ] ( 2, 10 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
+; V01 loc0 [V01 ] ( 4, 11.25) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinWait>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04 ] ( 2, 10 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
+; V04 tmp2 [V04 ] ( 4, 11.25) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01._count (fldOffset=0x0)" P-DEP
; ; Lcl frame size = 16 @@ -24,7 +24,25 @@ G_M31209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M31209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref b G_M31209_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31209_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, fp, #24 // [V01 loc0] + mov w1, #20 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + b G_M31209_IG07 + ;; size=32 bbWeight=0.25 PerfScore 1.88 +G_M31209_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr w0, [fp, #0x18] // [V04 tmp2] + cmp w0, #10 + bge G_M31209_IG08 + ;; size=12 bbWeight=1 PerfScore 3.50 +G_M31209_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M31209_IG03 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M31209_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] mov w1, #20 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -33,17 +51,17 @@ G_M31209_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M31209_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31209_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr w0, [fp, #0x18] // [V04 tmp2] cmp w0, #10
- blt G_M31209_IG03
+ blt G_M31209_IG06
;; size=12 bbWeight=8 PerfScore 28.00
-G_M31209_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M31209_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=4 PerfScore 8.00
-; Total bytes of code 64, prolog size 12, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 58.38, instruction count 28, allocated bytes for code 112 (MethodHash=3fe58616) for method System.Threading.Tasks.Tests.CESchedulerPairTests+<>c:<TestCreationOptions>b__0_0():this (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.windows.arm64.checked.mch

-44 (-33.33%) : 1379.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)

@@ -8,18 +8,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) byref -> x0 single-def -; V01 arg1 [V01,T05] ( 4, 4 ) byref -> x1 single-def -; V02 arg2 [V02,T06] ( 4, 4 ) byref -> x2 single-def -;* V03 loc0 [V03,T10] ( 0, 0 ) int -> zero-ref -; V04 loc1 [V04,T07] ( 2, 5 ) byref -> x2 single-def -; V05 loc2 [V05,T08] ( 2, 5 ) byref -> x1 single-def -; V06 loc3 [V06,T00] ( 5, 17 ) int -> x3 -; V07 loc4 [V07,T01] ( 4, 16 ) byref -> x5 -; V08 loc5 [V08,T03] ( 3, 12 ) byref -> x6
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> x0 single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> x1 single-def +; V02 arg2 [V02,T02] ( 4, 4 ) byref -> x2 single-def +;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref +; V04 loc1 [V04,T05] ( 2, 2 ) byref -> x2 single-def +; V05 loc2 [V05,T06] ( 2, 2 ) byref -> x1 single-def +;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref +; V07 loc4 [V07,T03] ( 4, 4 ) byref -> x0 +; V08 loc5 [V08,T04] ( 3, 3 ) byref -> x2
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T09] ( 2, 5 ) byref -> x0 hoist "CSE - aggressive" -; V11 cse1 [V11,T02] ( 4, 16 ) long -> x4 "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,41 +34,26 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2} stp xzr, xzr, [x2, #0x20] str xzr, [x2, #0x30] add x1, x1, #4
- mov w3, wzr
ldrsb wzr, [x0] add x0, x0, #28
- ;; size=36 bbWeight=1 PerfScore 9.50 -G_M31235_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0007 {x0 x1 x2}, byref, isz - sxtw x4, w3 - mov x5, #20 - mul x5, x4, x5 - add x5, x0, x5 - ; byrRegs +[x5] - lsl x6, x4, #4 - add x6, x2, x6 - ; byrRegs +[x6] - ldr w7, [x5, #0x10] - lsl x4, x4, #2 - str w7, [x1, x4] - ldr d16, [x5] - ldr w4, [x5, #0x08] - mov v16.s[2], w4 - str d16, [x6] - mov w4, v16.s[2] - str w4, [x6, #0x08] - ldr s16, [x5, #0x0C] - str s16, [x6, #0x0C] - add w3, w3, #1 - cmp w3, #0 - ble G_M31235_IG03 - ;; size=80 bbWeight=4 PerfScore 104.00 -G_M31235_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x0-x2 x5-x6]
+ ldr w3, [x0, #0x10] + str w3, [x1] + ldr d16, [x0] + ldr w1, [x0, #0x08] + ; byrRegs -[x1] + mov v16.s[2], w1 + str d16, [x2] + mov w1, v16.s[2] + str w1, [x2, #0x08] + ldr s16, [x0, #0x0C] + str s16, [x2, #0x0C] + ;; size=72 bbWeight=1 PerfScore 27.00 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 132, prolog size 8, PerfScore 117.00, instruction count 33, allocated bytes for code 132 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 30.50, instruction count 22, allocated bytes for code 88 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.90%) : 33079.dasm - System.Linq.Expressions.CachedReflectionInfo:getMethodBaseGetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)

@@ -15,9 +15,9 @@ ;* V04 tmp4 [V04,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V06 tmp6 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Reflection.MethodInfo>
-; V07 tmp7 [V07,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp"
+;* V07 tmp7 [V07,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V09 cse0 [V09,T01] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
+; V09 cse0 [V09,T01] ( 2, 1 ) byref -> x0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -31,9 +31,9 @@ G_M10374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- cbnz x0, G_M10374_IG06
+ cbnz x0, G_M10374_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -49,22 +49,14 @@ G_M10374_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x6, #0x10]
- mov w0, wzr - add x1, x6, #16 - ; byrRegs +[x1] - ;; size=48 bbWeight=0.50 PerfScore 3.50 -G_M10374_IG04: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, byref, isz - ldr x2, [x1, w0, UXTW #3] - ; gcrRegs +[x2] - cbz x2, G_M10374_IG07 - add w0, w0, #1 - cmp w0, #1 - blt G_M10374_IG04 - ;; size=20 bbWeight=4 PerfScore 24.00 -G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; byrRegs -[x1]
+ add x0, x6, #16 + ; byrRegs +[x0] + ldr x0, [x0] + ; gcrRegs +[x0] + ; byrRegs -[x0] + cbz x0, G_M10374_IG05
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E @@ -89,12 +81,12 @@ G_M10374_IG05: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
- ;; size=84 bbWeight=0.50 PerfScore 7.00 -G_M10374_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=136 bbWeight=0.50 PerfScore 12.25 +G_M10374_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10374_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E @@ -113,7 +105,7 @@ G_M10374_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 43.50, instruction count 58, allocated bytes for code 232 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 21.25, instruction count 54, allocated bytes for code 216 (MethodHash=027dd779) for method System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
; ============================================================ Unwind Info: @@ -124,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.41%) : 33235.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,28 +8,33 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> x0 -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> x22 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> x0 +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> x1 "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> x1 "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> x20 hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> x20 "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> x2 "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> x20 hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> x20 "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> x2 "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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 x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=24 bbWeight=1 PerfScore 5.00 @@ -46,9 +51,7 @@ G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- add x20, x19, #40 - ; byrRegs +[x20] - mov x8, x20
+ add x8, x19, #40
; byrRegs +[x8] movz x1, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,10 +60,10 @@ G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- ; byrRegs -[x8 x20]
+ ; byrRegs -[x8]
mov w0, #2 str w0, [x19, #0x14]
- ;; size=44 bbWeight=0.50 PerfScore 7.00
+ ;; size=40 bbWeight=0.50 PerfScore 6.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] ldr x1, [x0, #0x38] @@ -79,19 +82,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x20, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60 G_M34024_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- add x0, x19, #40 - ; byrRegs +[x0] - mov x21, x0 - ; byrRegs +[x21]
b G_M34024_IG10
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; byrRegs -[x0] - ldr x22, [x19, #0x30] - ; gcrRegs +[x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x21, [x19, #0x30] + ; gcrRegs +[x21]
ldr x2, [x19, #0x20] ; gcrRegs +[x2]
- mov x1, x22
+ mov x1, x21
; gcrRegs +[x1] ldr x0, [x2, #0x08] ; gcrRegs +[x0] @@ -100,11 +98,11 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; gcrRegs -[x0-x1] cbnz w0, G_M34024_IG14
- ;; size=28 bbWeight=2 PerfScore 29.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x22]
+ ;; size=28 bbWeight=0.50 PerfScore 7.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
mov x1, x20
- mov x0, x21
+ add x0, x19, #40
; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this movk x2, #0xD1FFAB1E LSL #16 @@ -113,41 +111,40 @@ G_M34024_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 blr x2 ; byrRegs -[x0] cbnz w0, G_M34024_IG09
- ;; size=32 bbWeight=4 PerfScore 30.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; byrRegs -[x21]
+ ;; size=32 bbWeight=1 PerfScore 7.50 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str xzr, [x19, #0x08] movn w14, #0 str w14, [x19, #0x14]
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.12 PerfScore 0.31
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x22]
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x21]
add x14, x19, #8 ; byrRegs +[x14]
- mov x15, x22
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x22]
+ ; gcrRegs -[x15 x21]
; byrRegs -[x14] mov w0, #1 ;; size=16 bbWeight=0.50 PerfScore 1.25 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 272, prolog size 20, PerfScore 99.90, instruction count 68, allocated bytes for code 272 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 260, prolog size 20, PerfScore 54.46, instruction count 65, allocated bytes for code 260 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +155,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 65 (0x00041) Actual length = 260 (0x000104)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -169,10 +166,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

+40 (+62.50%) : 24893.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 22 ) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> -; V01 loc0 [V01,T01] ( 3, 13 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
+; V00 arg0 [V00,T00] ( 10, 24.50) ref -> x19 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder> +; V01 loc0 [V01,T01] ( 5, 14.50) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -24,10 +24,11 @@ G_M1427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M1427_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M1427_IG04 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M1427_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M1427_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x19, [x19, #0x10]
- ;; size=4 bbWeight=2 PerfScore 6.00 -G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ b G_M1427_IG08 + ;; size=8 bbWeight=0.25 PerfScore 1.00 +G_M1427_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -36,19 +37,41 @@ G_M1427_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x19, G_M1427_IG06 - ;; size=24 bbWeight=8 PerfScore 32.00 -G_M1427_IG05: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=1 PerfScore 4.00 +G_M1427_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cbz x0, G_M1427_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M1427_IG06: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + b G_M1427_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M1427_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] +[x19] + ldr x19, [x19, #0x10] + ;; size=4 bbWeight=2 PerfScore 6.00 +G_M1427_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x19, G_M1427_IG10 + ;; size=24 bbWeight=8 PerfScore 32.00 +G_M1427_IG09: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M1427_IG07
;; size=4 bbWeight=4 PerfScore 4.00
-G_M1427_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1427_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19] ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 64, prolog size 16, PerfScore 50.00, instruction count 16, allocated bytes for code 64 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
+; Total bytes of code 104, prolog size 16, PerfScore 55.62, instruction count 26, allocated bytes for code 104 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+64.71%) : 24388.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> x1
+; V00 this [V00,T02] ( 11, 25.50) ref -> x0 this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> x1 "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> x0 single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> x0 single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> x1 "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> x0 "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> x0 "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> x3 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> x3 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> x2 "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> x2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,42 +24,65 @@ G_M15847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M15847_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M15847_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x2, [x0, #0x08] ; gcrRegs +[x2] ldr w3, [x2, #0x18] cmp w1, w3 bge G_M15847_IG04
- ;; size=16 bbWeight=8 PerfScore 60.00 -G_M15847_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M15847_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0]
- b G_M15847_IG02 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M15847_IG04: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M15847_IG06 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M15847_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] cmp w1, w3
- ble G_M15847_IG06 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M15847_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ble G_M15847_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M15847_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
sub w1, w1, w3 sub w1, w1, #1 ldr x0, [x0, #0x10]
- b G_M15847_IG02
+ ;; size=12 bbWeight=0.50 PerfScore 2.00 +G_M15847_IG06: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x2, [x0, #0x08] + ; gcrRegs +[x2] + ldr w3, [x2, #0x18] + cmp w1, w3 + bge G_M15847_IG08 + ;; size=16 bbWeight=8 PerfScore 60.00 +G_M15847_IG07: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x2 + ; gcrRegs +[x0] + b G_M15847_IG06 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M15847_IG08: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] + cmp w1, w3 + ble G_M15847_IG10 + ;; size=8 bbWeight=8 PerfScore 12.00 +G_M15847_IG09: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + sub w1, w1, w3 + sub w1, w1, #1 + ldr x0, [x0, #0x10] + b G_M15847_IG06
;; size=16 bbWeight=4 PerfScore 20.00
-G_M15847_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M15847_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x0, x0, #32 ; gcrRegs -[x0] ; byrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M15847_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M15847_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 102.00, instruction count 17, allocated bytes for code 68 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 113.75, instruction count 28, allocated bytes for code 112 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+70.59%) : 29611.dasm - System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)

@@ -8,67 +8,93 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
+; V00 this [V00,T04] ( 7, 17 ) ref -> x0 this class-hnd <System.Management.Automation.FunctionInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 17 ) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T04] ( 3, 17 ) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 4, 25 ) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
+; V02 tmp1 [V02,T02] ( 6, 19.12) ref -> x1 "CASTCLASS eval op1" +; V03 tmp2 [V03,T03] ( 6, 19.12) long -> x3 "fgMakeTemp is creating a new local variable" +; V04 tmp3 [V04,T00] ( 8, 29.12) ref -> x0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
; V05 cse0 [V05,T01] ( 3, 20 ) ref -> x1 "CSE - aggressive"
+; V06 cse1 [V06,T06] ( 3, 2.50) ref -> x1 "CSE - aggressive" +; V07 cse2 [V07,T05] ( 3, 5 ) long -> x19 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M40934_IG02: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M40934_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0] ldr x1, [x0, #0x20] ; gcrRegs +[x1]
- cbz x1, G_M40934_IG06 - ;; size=8 bbWeight=8 PerfScore 32.00 -G_M40934_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M40934_IG03: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x1 ; gcrRegs +[x0] ldr x2, [x0]
- movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + mov x3, x19
cmp x2, x3 beq G_M40934_IG05
- ;; size=28 bbWeight=4 PerfScore 26.00 -G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=0.50 PerfScore 3.50 +G_M40934_IG04: ; bbWeight=0.06, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x3 + bl CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + ;; size=8 bbWeight=0.06 PerfScore 0.09 +G_M40934_IG05: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x20] + ; gcrRegs +[x1] + cbz x1, G_M40934_IG09 + ;; size=8 bbWeight=8 PerfScore 32.00 +G_M40934_IG06: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x0, x1 + ; gcrRegs +[x0] + ldr x2, [x0] + mov x3, x19 + cmp x2, x3 + beq G_M40934_IG08 + ;; size=20 bbWeight=4 PerfScore 22.00 +G_M40934_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x0, x3 bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M40934_IG05: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - b G_M40934_IG02
+G_M40934_IG08: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + b G_M40934_IG05
;; size=4 bbWeight=4 PerfScore 4.00
-G_M40934_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M40934_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w0, [x0, #0x64] ; gcrRegs -[x0] ;; size=4 bbWeight=1 PerfScore 3.00
-G_M40934_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M40934_IG10: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 68, prolog size 8, PerfScore 69.25, instruction count 17, allocated bytes for code 68 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 75.84, instruction count 29, allocated bytes for code 116 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -76,7 +102,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 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
E4 end E4 end

smoke_tests.nativeaot.windows.arm64.checked.mch

-24 (-11.11%) : 9538.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)

@@ -7,33 +7,33 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 18 ) ref -> x19 this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> -; V01 arg1 [V01,T03] ( 7, 9 ) ref -> x20 class-hnd single-def <System.Linq.Expressions.InvocationExpression> -; V02 loc0 [V02,T06] ( 2, 5 ) ref -> x21 class-hnd exact single-def <System.String> -; V03 loc1 [V03,T02] ( 5, 17 ) int -> x22 -;* V04 loc2 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V00 this [V00,T00] ( 9, 9 ) ref -> x19 this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> +; V01 arg1 [V01,T01] ( 7, 6 ) ref -> x20 class-hnd single-def <System.Linq.Expressions.InvocationExpression> +; V02 loc0 [V02,T04] ( 2, 2 ) ref -> x1 class-hnd exact single-def <System.String> +;* V03 loc1 [V03,T07] ( 0, 0 ) int -> zero-ref +;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V09 tmp4 [V09,T04] ( 2, 8 ) ref -> x1 "guarded devirt return temp"
+; V09 tmp4 [V09,T05] ( 2, 2 ) ref -> x1 "guarded devirt return temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V12 tmp7 [V12,T05] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> -; V13 tmp8 [V13,T00] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
+; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> +; V13 tmp8 [V13,T03] ( 3, 6 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Text.StringBuilder> +; V14 cse0 [V14,T06] ( 2, 2 ) byref -> x1 "CSE - aggressive"
; ; Lcl frame size = 0 G_M18080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M18080_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -56,30 +56,28 @@ G_M18080_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x2, [x2, #0x30] blr x2 ; gcrRegs -[x1]
- adrp x21, [HIGH RELOC #0xD1FFAB1E] - add x21, x21, [LOW RELOC #0xD1FFAB1E] - ; gcrRegs +[x21] - mov w22, wzr - ldr x2, [x20]
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E]
- cmp x2, x1 - beq G_M18080_IG06 - ;; size=80 bbWeight=1 PerfScore 26.50 -G_M18080_IG03: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x1] + ldr x2, [x20] + adrp x0, [HIGH RELOC #0xD1FFAB1E]
; gcrRegs -[x0]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E] + cmp x2, x0 + beq G_M18080_IG04
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldrsb wzr, [x0] mov w2, #2
- add x1, x21, #12
+ add x1, x1, #12 + ; gcrRegs -[x1]
; byrRegs +[x1] bl <unknown method> ; gcrRegs -[x0] ; byrRegs -[x1] mov x0, x20 ; gcrRegs +[x0]
- mov w1, w22
+ mov w1, wzr
bl System.Linq.Expressions.InvocationExpression1:GetArgument(int):System.Linq.Expressions.Expression:this mov x1, x0 ; gcrRegs +[x1] @@ -88,27 +86,19 @@ G_M18080_IG03: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldr x2, [x2, #0x30] blr x2 ; gcrRegs -[x1]
- add w22, w22, #1 - cmp w22, #0 - ble G_M18080_IG03 - ;; size=64 bbWeight=4 PerfScore 80.00 -G_M18080_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x21]
ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
mov w1, #41 ldr wzr, [x0] bl System.Text.StringBuilder:Append(ushort):System.Text.StringBuilder:this ; gcrRegs -[x19] mov x0, x20
- ;; size=20 bbWeight=1 PerfScore 8.00 -G_M18080_IG05: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x20]
+ ;; size=148 bbWeight=1 PerfScore 52.00 +G_M18080_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M18080_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x20 ; gcrRegs +[x0] @@ -117,7 +107,7 @@ G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 brk_windows #0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 216, prolog size 16, PerfScore 123.00, instruction count 54, allocated bytes for code 216 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 192, prolog size 12, PerfScore 58.50, instruction count 48, allocated bytes for code 192 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
; ============================================================ Unwind Info: @@ -128,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -136,9 +126,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-4 (-2.94%) : 12807.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -8,21 +8,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd exact single-def <Internal.TypeSystem.NoMetadata.NoMetadataType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> x19 single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> x19 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> x20 single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> x20 single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> x0 "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> x22 hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> x0 "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,10 +41,10 @@ G_M3627_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ldr w22, [x20, #0x08] b G_M3627_IG04 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M3627_IG03: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] cmp w21, w22
- bhs G_M3627_IG10
+ bhs G_M3627_IG09
add x0, x20, #16 ; byrRegs +[x0] ldr x0, [x0, w21, UXTW #3] @@ -55,41 +55,38 @@ G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by ldr x2, [x2, #0x40] blr x2 ; gcrRegs -[x0]
- cbnz w0, G_M3627_IG06 - ;; size=36 bbWeight=2 PerfScore 27.00 -G_M3627_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M3627_IG07 + ;; size=36 bbWeight=0.25 PerfScore 3.38 +G_M3627_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w22, w21 bgt G_M3627_IG03
- ;; size=12 bbWeight=8 PerfScore 16.00 -G_M3627_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M3627_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M3627_IG08 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M3627_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3627_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M3627_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3627_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M3627_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3627_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M3627_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M3627_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 63.00, instruction count 34, allocated bytes for code 136 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 21.38, instruction count 33, allocated bytes for code 132 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -100,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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)

-4 (-2.56%) : 7179.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -9,21 +9,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd exact single-def <Internal.TypeSystem.NoMetadata.NoMetadataType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> x19 single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> x19 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> x20 single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> x21 "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> x20 single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> x20 single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> x0 "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> x22 hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> x0 "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> x22 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -42,10 +42,10 @@ G_M3627_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ldr w22, [x20, #0x08] b G_M3627_IG04 ;; size=16 bbWeight=1 PerfScore 7.50
-G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M3627_IG03: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] cmp w21, w22
- bhs G_M3627_IG10
+ bhs G_M3627_IG09
add x15, x20, #16 ; byrRegs +[x15] ldr x0, [x15, w21, UXTW #3] @@ -61,41 +61,38 @@ G_M3627_IG03: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by mov w1, w19 blr x2 ; gcrRegs -[x0]
- cbnz w0, G_M3627_IG06 - ;; size=56 bbWeight=2 PerfScore 38.00 -G_M3627_IG04: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M3627_IG07 + ;; size=56 bbWeight=0.25 PerfScore 4.75 +G_M3627_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w22, w21 bgt G_M3627_IG03
- ;; size=12 bbWeight=8 PerfScore 16.00 -G_M3627_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M3627_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M3627_IG08 - ;; size=4 bbWeight=4 PerfScore 4.00 -G_M3627_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M3627_IG07: ; bbWeight=0.50, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.50 PerfScore 2.00 -G_M3627_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3627_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M3627_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3627_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M3627_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M3627_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 16, PerfScore 74.00, instruction count 39, allocated bytes for code 156 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 16, PerfScore 22.75, instruction count 38, allocated bytes for code 152 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ 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)

+32 (+57.14%) : 20035.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T04] ( 4, 4 ) int -> x2 single-def -; V02 arg2 [V02,T02] ( 3, 6 ) ushort -> x3 single-def -; V03 loc0 [V03,T00] ( 6, 18 ) int -> x4
+; V01 arg1 [V01,T03] ( 4, 4 ) int -> x2 single-def +; V02 arg2 [V02,T05] ( 3, 2.50) ushort -> x3 single-def +; V03 loc0 [V03,T00] ( 10, 20 ) int -> x4
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V06 tmp2 [V06,T01] ( 2, 9 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp1 [V05,T02] ( 3, 5.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V06 tmp2 [V06,T01] ( 3, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 cse0 [V07,T04] ( 3, 5 ) int -> x3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -26,29 +27,47 @@ G_M43086_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre add w4, w2, #1 b G_M43086_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M43086_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M43086_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + add w4, w4, #1 + b G_M43086_IG08 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M43086_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + cmp w4, w1 + bhs G_M43086_IG10 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M43086_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldrh w5, [x0, w4, UXTW #2] + uxth w3, w3 + cmp w5, w3 + beq G_M43086_IG03 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M43086_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M43086_IG10 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M43086_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ; byrRegs +[x0]
add w4, w4, #1 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M43086_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w4, w1
- bhs G_M43086_IG06
+ bhs G_M43086_IG10
;; size=8 bbWeight=8 PerfScore 12.00
-G_M43086_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M43086_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrh w5, [x0, w4, UXTW #2]
- uxth w6, w3 - cmp w5, w6 - beq G_M43086_IG03 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M43086_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w5, w3 + beq G_M43086_IG07 + ;; size=12 bbWeight=4 PerfScore 18.00 +G_M43086_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] sub w0, w4, w2 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M43086_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M43086_IG11: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 38.50, instruction count 14, allocated bytes for code 56 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 41.00, instruction count 22, allocated bytes for code 88 (MethodHash=781b57b1) for method System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+57.14%) : 11752.dasm - System.Type:GetRootElementType():System.Type:this (FullOpts)

@@ -7,53 +7,71 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> x0 this class-hnd single-def <System.Type> -; V01 loc0 [V01,T00] ( 7, 22 ) ref -> x19 class-hnd <System.Type>
+; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <System.Type> +; V01 loc0 [V01,T00] ( 10, 25 ) ref -> x20 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 G_M1457_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
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M1457_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0]
mov x19, x0 ; gcrRegs +[x19]
- ldr x1, [x0]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M1457_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + mov x20, x19 + ; gcrRegs +[x20] + mov x0, x19 + ; gcrRegs +[x0] + ldr x21, [x19] + ldr x1, [x21, #0xD1FFAB1E] + blr x1 + ; gcrRegs -[x0] + cbz w0, G_M1457_IG04 + mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x21, #0xD1FFAB1E] + blr x1 + ; gcrRegs -[x19-x20] + mov x20, x0 + ; gcrRegs +[x20] + ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1 ; gcrRegs -[x0] cbz w0, G_M1457_IG04
- ;; size=20 bbWeight=1 PerfScore 8.50 -G_M1457_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+ ;; size=56 bbWeight=1 PerfScore 22.00 +G_M1457_IG03: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
+ ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1
- ; gcrRegs -[x19] - mov x19, x0 - ; gcrRegs +[x19] - ldr x1, [x19]
+ ; gcrRegs -[x20] + mov x20, x0 + ; gcrRegs +[x20] + ldr x1, [x20]
ldr x1, [x1, #0xD1FFAB1E] blr x1 ; gcrRegs -[x0] cbnz w0, G_M1457_IG03 ;; size=36 bbWeight=4 PerfScore 64.00
-G_M1457_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19
+G_M1457_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + mov x0, x20
; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M1457_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ 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 84, prolog size 12, PerfScore 79.50, instruction count 21, allocated bytes for code 84 (MethodHash=6cd9fa4e) for method System.Type:GetRootElementType():System.Type:this (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 95.50, instruction count 33, allocated bytes for code 132 (MethodHash=6cd9fa4e) for method System.Type:GetRootElementType():System.Type:this (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ 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) @@ -72,10 +90,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

+36 (+64.29%) : 2457.dasm - System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)

@@ -7,44 +7,55 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 18 ) byref -> x0 single-def -; V01 arg1 [V01,T03] ( 3, 10 ) long -> x1 single-def -; V02 loc0 [V02,T00] ( 5, 40 ) long -> x2 -; V03 loc1 [V03,T01] ( 5, 27 ) long -> x3
+; V00 arg0 [V00,T02] ( 6, 20 ) byref -> x0 single-def +; V01 arg1 [V01,T03] ( 4, 11 ) long -> x1 single-def +; V02 loc0 [V02,T00] ( 10, 45 ) long -> x2 +; V03 loc1 [V03,T01] ( 10, 32 ) long -> x3
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0
-G_M36377_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=8 PerfScore 12.00 -G_M36377_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M36377_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0] ldr x2, [x0] add x3, x2, x1
+ movn x4, #0xD1FFAB1E LSL #48
cmp x3, x2
- bge G_M36377_IG04 - ;; size=16 bbWeight=8 PerfScore 40.00 -G_M36377_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref - movn x3, #0xD1FFAB1E LSL #48 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M36377_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ csel x3, x3, x4, ge
mov x4, x2 casal x4, x3, [x0] cmp x4, x2
- bne G_M36377_IG02
+ beq G_M36377_IG06 + ;; size=36 bbWeight=1 PerfScore 10.00 +G_M36377_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ldr x2, [x0] + add x3, x2, x1 + cmp x3, x2 + bge G_M36377_IG05
;; size=16 bbWeight=8 PerfScore 40.00
-G_M36377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36377_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + movn x3, #0xD1FFAB1E LSL #48 + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M36377_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + mov x4, x2 + casal x4, x3, [x0] + cmp x4, x2 + bne G_M36377_IG03 + ;; size=16 bbWeight=8 PerfScore 40.00 +G_M36377_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] mov x0, x3 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M36377_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M36377_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 95.50, instruction count 14, allocated bytes for code 56 (MethodHash=ecbb71e6) for method System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 95.00, instruction count 23, allocated bytes for code 92 (MethodHash=ecbb71e6) for method System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ 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)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 5,626 25 5,498 103 -508 +1,647,964
benchmarks.run_pgo.windows.arm64.checked.mch 18,896 85 18,759 52 -4,708 +6,913,256
benchmarks.run_tiered.windows.arm64.checked.mch 2,820 9 2,807 4 -156 +896,124
coreclr_tests.run.windows.arm64.checked.mch 31,408 1,522 29,559 327 -50,512 +7,448,444
libraries.crossgen2.windows.arm64.checked.mch 22,674 235 22,403 36 -2,976 +5,105,580
libraries.pmi.windows.arm64.checked.mch 26,140 120 25,927 93 -1,644 +7,379,796
libraries_tests.run.windows.arm64.Release.mch 47,145 437 46,331 377 -27,428 +23,917,036
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 25,997 134 25,725 138 -4,708 +10,460,032
realworld.run.windows.arm64.checked.mch 5,080 28 5,033 19 -544 +1,927,344
smoke_tests.nativeaot.windows.arm64.checked.mch 2,315 11 2,287 17 -72 +415,312
188,101 2,606 184,329 1,166 -93,256 +66,110,888

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,176 4 24,172 230 (0.94%) 271 (1.11%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,634 48,066 48,568 104 (0.11%) 349 (0.36%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,396 36,693 11,703 61 (0.13%) 77 (0.16%)
coreclr_tests.run.windows.arm64.checked.mch 594,952 362,539 232,413 442 (0.07%) 751 (0.13%)
libraries.crossgen2.windows.arm64.checked.mch 243,664 15 243,649 0 (0.00%) 167 (0.07%)
libraries.pmi.windows.arm64.checked.mch 302,605 6 302,599 2,059 (0.68%) 2,266 (0.74%)
libraries_tests.run.windows.arm64.Release.mch 624,361 460,799 163,562 901 (0.14%) 1,693 (0.27%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 314,630 21,559 293,071 2,183 (0.69%) 2,407 (0.76%)
realworld.run.windows.arm64.checked.mch 32,809 3 32,806 370 (1.11%) 435 (1.31%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,095 8 24,087 3 (0.01%) 60 (0.25%)
2,306,322 929,692 1,376,630 6,353 (0.27%) 8,476 (0.37%)

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: 10657768 (overridden on cmd)
Total bytes of diff: 12305224 (overridden on cmd)
Total bytes of delta: 1647456 (15.46 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25440 : 21309.dasm (66.22 % of base)
       15840 : 8883.dasm (45.73 % of base)
       13092 : 18236.dasm (97.35 % of base)
        8592 : 22653.dasm (79.23 % of base)
        8368 : 1346.dasm (74.79 % of base)
        8288 : 15998.dasm (77.92 % of base)
        7848 : 10175.dasm (58.69 % of base)
        7516 : 22258.dasm (36.64 % of base)
        7352 : 8152.dasm (87.40 % of base)
        7288 : 24060.dasm (80.91 % of base)
        7240 : 15628.dasm (62.31 % of base)
        7124 : 17291.dasm (86.00 % of base)
        6404 : 22714.dasm (33.28 % of base)
        6404 : 9503.dasm (82.19 % of base)
        6140 : 20097.dasm (68.13 % of base)
        6092 : 18188.dasm (79.70 % of base)
        5996 : 4200.dasm (94.16 % of base)
        5952 : 9060.dasm (57.72 % of base)
        5712 : 18489.dasm (97.81 % of base)
        5288 : 22230.dasm (87.84 % of base)

Top file improvements (bytes):
        -112 : 460.dasm (-10.65 % of base)
         -72 : 22668.dasm (-4.97 % of base)
         -68 : 2114.dasm (-16.04 % of base)
         -56 : 19523.dasm (-5.58 % of base)
         -24 : 8902.dasm (-1.39 % of base)
         -16 : 10167.dasm (-1.75 % of base)
         -16 : 22041.dasm (-5.33 % of base)
         -16 : 7281.dasm (-3.54 % of base)
         -16 : 9027.dasm (-0.89 % of base)
         -12 : 5967.dasm (-4.41 % of base)
         -12 : 5006.dasm (-2.29 % of base)
         -12 : 16995.dasm (-2.29 % of base)
         -12 : 19473.dasm (-2.27 % of base)
          -8 : 10561.dasm (-1.21 % of base)
          -8 : 15225.dasm (-0.88 % of base)
          -8 : 22081.dasm (-0.81 % of base)
          -8 : 8636.dasm (-2.13 % of base)
          -4 : 9769.dasm (-2.17 % of base)
          -4 : 100.dasm (-2.08 % of base)
          -4 : 219.dasm (-2.00 % of base)

83 total files with Code Size differences (23 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
       25440 (66.22 % of base) : 21309.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       15840 (45.73 % of base) : 8883.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       13092 (97.35 % of base) : 18236.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        8592 (79.23 % of base) : 22653.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        8368 (74.79 % of base) : 1346.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        8288 (77.92 % of base) : 15998.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7848 (58.69 % of base) : 10175.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7516 (36.64 % of base) : 22258.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7352 (87.40 % of base) : 8152.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        7288 (80.91 % of base) : 24060.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        7240 (62.31 % of base) : 15628.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
        7124 (86.00 % of base) : 17291.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6404 (33.28 % of base) : 22714.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6404 (82.19 % of base) : 9503.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        6140 (68.13 % of base) : 20097.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        6092 (79.70 % of base) : 18188.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5996 (94.16 % of base) : 4200.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        5952 (57.72 % of base) : 9060.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)
        5712 (97.81 % of base) : 18489.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5288 (87.84 % of base) : 22230.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

Top method improvements (bytes):
        -112 (-10.65 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -72 (-4.97 % of base) : 22668.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -68 (-16.04 % of base) : 2114.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -56 (-5.58 % of base) : 19523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -24 (-1.39 % of base) : 8902.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
         -16 (-0.89 % of base) : 9027.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
         -16 (-1.75 % of base) : 10167.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -16 (-3.54 % of base) : 7281.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -16 (-5.33 % of base) : 22041.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -12 (-2.27 % of base) : 19473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 16995.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-4.41 % of base) : 5967.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 5006.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          -8 (-0.81 % of base) : 22081.dasm - BenchmarksGame.FannkuchRedux_9:Bench(int,ubyte):int (FullOpts)
          -8 (-0.88 % of base) : 15225.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceLookupHelpers:.cctor() (FullOpts)
          -8 (-2.13 % of base) : 8636.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.21 % of base) : 10561.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 219.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.85 % of base) : 6101.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 100.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
        1732 (107.98 % of base) : 22238.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
        1544 (100.00 % of base) : 284.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        2816 (98.60 % of base) : 7529.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        1260 (98.13 % of base) : 21240.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (FullOpts)
        5712 (97.81 % of base) : 18489.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
       13092 (97.35 % of base) : 18236.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        3308 (97.29 % of base) : 22730.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        2748 (97.03 % of base) : 5057.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberBegin(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):this (FullOpts)
        2196 (96.83 % of base) : 17592.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
        2496 (96.59 % of base) : 7614.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
         564 (96.58 % of base) : 21927.dasm - System.Text.Json.Utf8JsonReader:SkipAllCommentsMultiSegment(byref):ubyte:this (FullOpts)
        1880 (96.51 % of base) : 10751.dasm - System.Tests.Perf_Array:ArrayRetrieve1D():int:this (FullOpts)
        2396 (96.30 % of base) : 16969.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (FullOpts)
        1740 (96.03 % of base) : 5936.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
        2068 (95.74 % of base) : 23404.dasm - ProtoBuf.Internal.PrimaryTypeProvider:ProtoBuf.Serializers.ISerializer<ProtoBuf.Internal.PrimaryTypeProvider.ScaledTicks>.Read(byref,ProtoBuf.Internal.PrimaryTypeProvider+ScaledTicks):ProtoBuf.Internal.PrimaryTypeProvider+ScaledTicks:this (FullOpts)
        1324 (95.66 % of base) : 21242.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (FullOpts)
        1584 (95.65 % of base) : 22412.dasm - MicroBenchmarks.Serializers.LoginViewModel:proto_2(byref,MicroBenchmarks.Serializers.LoginViewModel):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
        2964 (95.61 % of base) : 20179.dasm - MicroBenchmarks.Serializers.MyEventsListerItem:proto_8(byref,MicroBenchmarks.Serializers.MyEventsListerItem):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
         772 (95.54 % of base) : 20480.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDeclarationModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):this (FullOpts)
        1156 (95.38 % of base) : 15928.dasm - System.Text.Tests.Perf_StringBuilder:Append_Strings(int):System.Text.StringBuilder:this (FullOpts)

Top method improvements (percentages):
         -68 (-16.04 % of base) : 2114.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
        -112 (-10.65 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -56 (-5.58 % of base) : 19523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -16 (-5.33 % of base) : 22041.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -72 (-4.97 % of base) : 22668.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -12 (-4.41 % of base) : 5967.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -16 (-3.54 % of base) : 7281.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -12 (-2.29 % of base) : 16995.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-2.29 % of base) : 5006.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         -12 (-2.27 % of base) : 19473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 9769.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
          -8 (-2.13 % of base) : 8636.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.13 % of base) : 3600.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 100.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 4474.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.Net.CredentialHostKey,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 219.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.85 % of base) : 6101.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (FullOpts)
         -16 (-1.75 % of base) : 10167.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -24 (-1.39 % of base) : 8902.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
          -8 (-1.21 % of base) : 10561.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (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: 46143416 (overridden on cmd)
Total bytes of diff: 53051964 (overridden on cmd)
Total bytes of delta: 6908548 (14.97 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25440 : 72141.dasm (66.22 % of base)
       15840 : 23030.dasm (45.70 % of base)
        9608 : 84002.dasm (97.64 % of base)
        9092 : 82166.dasm (79.17 % of base)
        9040 : 82178.dasm (79.77 % of base)
        8568 : 82177.dasm (78.90 % of base)
        8288 : 47066.dasm (77.92 % of base)
        7740 : 26392.dasm (56.98 % of base)
        7516 : 80242.dasm (36.64 % of base)
        7092 : 93601.dasm (75.83 % of base)
        6740 : 45186.dasm (61.97 % of base)
        6716 : 52022.dasm (70.37 % of base)
        6588 : 52038.dasm (69.46 % of base)
        6404 : 82941.dasm (33.28 % of base)
        6116 : 52037.dasm (67.74 % of base)
        6096 : 92122.dasm (79.09 % of base)
        5832 : 25251.dasm (80.69 % of base)
        5808 : 65013.dasm (96.80 % of base)
        5420 : 80335.dasm (96.37 % of base)
        5420 : 80383.dasm (96.37 % of base)

Top file improvements (bytes):
        -236 : 96685.dasm (-2.41 % of base)
        -212 : 33135.dasm (-2.29 % of base)
        -156 : 94593.dasm (-20.63 % of base)
        -156 : 42972.dasm (-20.74 % of base)
        -152 : 43783.dasm (-20.00 % of base)
        -148 : 49264.dasm (-19.89 % of base)
        -148 : 49265.dasm (-1.55 % of base)
        -148 : 89421.dasm (-1.51 % of base)
        -148 : 93936.dasm (-1.55 % of base)
        -128 : 96592.dasm (-1.36 % of base)
        -124 : 13260.dasm (-21.09 % of base)
        -124 : 15867.dasm (-21.09 % of base)
        -124 : 28083.dasm (-21.09 % of base)
        -124 : 40460.dasm (-21.09 % of base)
        -124 : 47574.dasm (-21.09 % of base)
        -124 : 51206.dasm (-21.09 % of base)
        -124 : 13666.dasm (-21.09 % of base)
        -124 : 76247.dasm (-21.09 % of base)
        -124 : 83182.dasm (-21.09 % of base)
        -124 : 13890.dasm (-21.09 % of base)

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

Top method regressions (bytes):
       25440 (66.22 % of base) : 72141.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       15840 (45.70 % of base) : 23030.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        9608 (97.64 % of base) : 84002.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        9092 (79.17 % of base) : 82166.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        9040 (79.77 % of base) : 82178.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8568 (78.90 % of base) : 82177.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 47066.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7740 (56.98 % of base) : 26392.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7516 (36.64 % of base) : 80242.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7092 (75.83 % of base) : 93601.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        6740 (61.97 % of base) : 45186.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        6716 (70.37 % of base) : 52022.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6588 (69.46 % of base) : 52038.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6404 (33.28 % of base) : 82941.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6116 (67.74 % of base) : 52037.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6096 (79.09 % of base) : 92122.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5832 (80.69 % of base) : 25251.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5808 (96.80 % of base) : 65013.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        5420 (96.37 % of base) : 80335.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
        5420 (96.37 % of base) : 80383.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)

Top method improvements (bytes):
        -236 (-2.41 % of base) : 96685.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -212 (-2.29 % of base) : 33135.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -156 (-20.63 % of base) : 94593.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-20.74 % of base) : 42972.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -152 (-20.00 % of base) : 43783.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-19.89 % of base) : 49264.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-1.55 % of base) : 49265.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -148 (-1.51 % of base) : 89421.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -148 (-1.55 % of base) : 93936.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -128 (-1.36 % of base) : 96592.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -124 (-21.09 % of base) : 13260.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 15867.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 28083.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 40460.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 47574.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 51206.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13666.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 76247.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 83182.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13890.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)

Top method regressions (percentages):
        3180 (122.87 % of base) : 43704.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        3172 (122.57 % of base) : 92739.dasm - System.Buffers.Text.Base64:Vector128Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
        2528 (106.40 % of base) : 90657.dasm - NumericSortJagged:Run():double:this (Tier1)
        2572 (105.58 % of base) : 49304.dasm - System.Buffers.Tests.NonStandardArrayPoolTests`1[System.__Canon]:RentNoReturn():this (Tier1-OSR)
        2588 (105.55 % of base) : 46399.dasm - System.Buffers.Tests.NonStandardArrayPoolTests`1[ubyte]:RentNoReturn():this (Tier1-OSR)
        2220 (105.51 % of base) : 95062.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int (Tier1)
        1588 (103.39 % of base) : 71435.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1684 (102.93 % of base) : 94289.dasm - Benchstone.MDBenchI.MDPuzzle:Trial(int):ubyte:this (Tier1)
        1696 (101.92 % of base) : 34676.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength8OrLongerOrUnknown,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        1716 (101.90 % of base) : 34673.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        1196 (101.70 % of base) : 95050.dasm - StringSort:StrHeapSort(System.String[],int,int) (Tier1-OSR)
        4136 (101.17 % of base) : 92795.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        2576 (100.78 % of base) : 51176.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        4104 (100.59 % of base) : 88524.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        1592 (100.51 % of base) : 67176.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
        1380 (100.29 % of base) : 42411.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:InsertionSort(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]) (Tier1)
        3764 (100.21 % of base) : 31011.dasm - EMFloat:SetupCPUEmFloatArrays(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int) (Tier1)
        2088 (100.19 % of base) : 9356.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        2164 (100.00 % of base) : 13140.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
        3384 (99.88 % of base) : 96591.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[int](System.String,System.ReadOnlySpan`1[ushort],int,byref,System.Text.RegularExpressions.MatchCallback`1[int],int,ubyte):this (Tier1-OSR)

Top method improvements (percentages):
        -124 (-21.09 % of base) : 13260.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 15867.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 28083.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 40460.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 47574.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 51206.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13666.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 76247.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 83182.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 13890.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 46184.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 53105.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.09 % of base) : 74590.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -156 (-20.74 % of base) : 42972.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-20.63 % of base) : 94593.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -152 (-20.00 % of base) : 43783.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
        -148 (-19.89 % of base) : 49264.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+Negate`1[short]](byref,short,int):int (Tier1)
         -84 (-9.05 % of base) : 78698.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -88 (-8.94 % of base) : 25805.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -88 (-8.94 % of base) : 77301.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)


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: 15239072 (overridden on cmd)
Total bytes of diff: 16135040 (overridden on cmd)
Total bytes of delta: 895968 (5.88 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25484 : 42697.dasm (66.45 % of base)
       15840 : 19312.dasm (45.73 % of base)
       11400 : 46125.dasm (101.93 % of base)
        8592 : 45512.dasm (79.23 % of base)
        8288 : 30580.dasm (77.92 % of base)
        7848 : 21424.dasm (58.69 % of base)
        7516 : 45121.dasm (36.64 % of base)
        7352 : 27689.dasm (87.69 % of base)
        7240 : 30289.dasm (62.31 % of base)
        6404 : 45636.dasm (33.28 % of base)
        6140 : 39554.dasm (68.13 % of base)
        6016 : 47567.dasm (78.87 % of base)
        5724 : 21190.dasm (80.39 % of base)
        5272 : 19648.dasm (36.15 % of base)
        4712 : 42032.dasm (66.55 % of base)
        4644 : 19641.dasm (57.45 % of base)
        4624 : 3491.dasm (86.46 % of base)
        4556 : 44845.dasm (85.96 % of base)
        4372 : 46736.dasm (32.02 % of base)
        4340 : 47293.dasm (41.38 % of base)

Top file improvements (bytes):
        -112 : 5406.dasm (-11.34 % of base)
         -12 : 43124.dasm (-4.41 % of base)
          -8 : 22566.dasm (-1.21 % of base)
          -4 : 38627.dasm (-2.13 % of base)
          -4 : 41517.dasm (-0.46 % of base)
          -4 : 4237.dasm (-1.96 % of base)
          -4 : 926.dasm (-2.08 % of base)
          -4 : 19321.dasm (-0.93 % of base)
          -4 : 19355.dasm (-2.13 % of base)

83 total files with Code Size differences (9 improved, 74 regressed), 4 unchanged.

Top method regressions (bytes):
       25484 (66.45 % of base) : 42697.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       15840 (45.73 % of base) : 19312.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
       11400 (101.93 % of base) : 46125.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8592 (79.23 % of base) : 45512.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        8288 (77.92 % of base) : 30580.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        7848 (58.69 % of base) : 21424.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        7516 (36.64 % of base) : 45121.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        7352 (87.69 % of base) : 27689.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        7240 (62.31 % of base) : 30289.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        6404 (33.28 % of base) : 45636.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        6140 (68.13 % of base) : 39554.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6016 (78.87 % of base) : 47567.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5724 (80.39 % of base) : 21190.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5272 (36.15 % of base) : 19648.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4712 (66.55 % of base) : 42032.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
        4644 (57.45 % of base) : 19641.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
        4624 (86.46 % of base) : 3491.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        4556 (85.96 % of base) : 44845.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        4372 (32.02 % of base) : 46736.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        4340 (41.38 % of base) : 47293.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)

Top method improvements (bytes):
        -112 (-11.34 % of base) : 5406.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 43124.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 22566.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 41517.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 4237.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 926.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 38627.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 19355.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 19321.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
        1652 (110.72 % of base) : 42800.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1456 (106.12 % of base) : 42796.dasm - Benchstone.BenchF.MatInv4:MinV1(float[],byref,byref,float[],float[]) (Tier1-OSR)
       11400 (101.93 % of base) : 46125.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        1544 (100.00 % of base) : 1276.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
        2836 (98.61 % of base) : 13832.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        3308 (97.29 % of base) : 45645.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        2516 (96.62 % of base) : 13853.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
        2232 (96.04 % of base) : 41803.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexSyntaxTrivia(ubyte,ubyte,byref):this (Tier1)
         828 (95.83 % of base) : 41982.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDeclarationModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):this (Tier1)
        3384 (95.70 % of base) : 22430.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
        1584 (95.65 % of base) : 45138.dasm - MicroBenchmarks.Serializers.LoginViewModel:proto_2(byref,MicroBenchmarks.Serializers.LoginViewModel):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
        2984 (95.64 % of base) : 40109.dasm - MicroBenchmarks.Serializers.MyEventsListerItem:proto_8(byref,MicroBenchmarks.Serializers.MyEventsListerItem):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        2060 (94.67 % of base) : 29383.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         820 (94.47 % of base) : 48092.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1)
         728 (94.30 % of base) : 44142.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
        1376 (94.25 % of base) : 40110.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:proto_10(byref,MicroBenchmarks.Serializers.MyEventsListerItemTask):MicroBenchmarks.Serializers.MyEventsListerItemTask (FullOpts)
        1276 (94.10 % of base) : 29380.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1-OSR)
        2284 (93.91 % of base) : 41905.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseModifiers(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,ubyte,ubyte,byref):this (Tier1)
         412 (93.64 % of base) : 31629.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (Tier1-OSR)
        1292 (93.08 % of base) : 13813.dasm - MicroBenchmarks.Serializers.IndexViewModel:proto_2(byref,MicroBenchmarks.Serializers.IndexViewModel):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)

Top method improvements (percentages):
        -112 (-11.34 % of base) : 5406.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -12 (-4.41 % of base) : 43124.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 38627.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -4 (-2.13 % of base) : 19355.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-2.08 % of base) : 926.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -4 (-1.96 % of base) : 4237.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -8 (-1.21 % of base) : 22566.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.93 % of base) : 19321.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-0.46 % of base) : 41517.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesOnly>d__172:MoveNext():ubyte:this (Tier1)


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: 493954596 (overridden on cmd)
Total bytes of diff: 501352528 (overridden on cmd)
Total bytes of delta: 7397932 (1.50 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
      126392 : 491318.dasm (99.73 % of base)
       26480 : 589057.dasm (98.91 % of base)
       16932 : 581782.dasm (92.06 % of base)
       13156 : 498880.dasm (97.57 % of base)
       12932 : 392761.dasm (115.75 % of base)
       12832 : 392599.dasm (86.66 % of base)
       12824 : 390124.dasm (87.07 % of base)
       12812 : 390850.dasm (114.31 % of base)
       10944 : 389467.dasm (98.74 % of base)
       10692 : 387243.dasm (72.03 % of base)
       10656 : 392405.dasm (99.07 % of base)
        9676 : 388963.dasm (99.22 % of base)
        9676 : 392225.dasm (99.22 % of base)
        9608 : 392581.dasm (88.21 % of base)
        9604 : 579762.dasm (91.08 % of base)
        9056 : 532525.dasm (90.96 % of base)
        9044 : 390074.dasm (86.20 % of base)
        8940 : 589336.dasm (100.22 % of base)
        8592 : 502725.dasm (79.17 % of base)
        8432 : 391481.dasm (68.07 % of base)

Top file improvements (bytes):
        -192 : 254748.dasm (-32.65 % of base)
        -192 : 267722.dasm (-32.65 % of base)
        -192 : 356297.dasm (-32.65 % of base)
        -192 : 385124.dasm (-32.65 % of base)
        -156 : 218877.dasm (-21.31 % of base)
        -156 : 250597.dasm (-21.31 % of base)
        -156 : 266993.dasm (-21.20 % of base)
        -156 : 295329.dasm (-21.31 % of base)
        -156 : 309577.dasm (-21.20 % of base)
        -156 : 312205.dasm (-21.20 % of base)
        -156 : 23713.dasm (-21.31 % of base)
        -156 : 258377.dasm (-21.31 % of base)
        -156 : 269925.dasm (-21.31 % of base)
        -156 : 301493.dasm (-21.31 % of base)
        -156 : 308485.dasm (-21.31 % of base)
        -156 : 314165.dasm (-21.20 % of base)
        -156 : 320561.dasm (-21.31 % of base)
        -156 : 36189.dasm (-21.20 % of base)
        -156 : 7333.dasm (-21.31 % of base)
        -156 : 224397.dasm (-21.20 % of base)

82 total files with Code Size differences (39 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
      126392 (99.73 % of base) : 491318.dasm - Program:TestEntryPoint():int (FullOpts)
       26480 (98.91 % of base) : 589057.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
       16932 (92.06 % of base) : 581782.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
       13156 (97.57 % of base) : 498880.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12932 (115.75 % of base) : 392761.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       12832 (86.66 % of base) : 392599.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       12824 (87.07 % of base) : 390124.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       12812 (114.31 % of base) : 390850.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       10944 (98.74 % of base) : 389467.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       10692 (72.03 % of base) : 387243.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
       10656 (99.07 % of base) : 392405.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
        9676 (99.22 % of base) : 388963.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9676 (99.22 % of base) : 392225.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (Tier1)
        9608 (88.21 % of base) : 392581.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1-OSR)
        9604 (91.08 % of base) : 579762.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        9056 (90.96 % of base) : 532525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        9044 (86.20 % of base) : 390074.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1-OSR)
        8940 (100.22 % of base) : 589336.dasm - SimpleArray_01.Test:Test1() (FullOpts)
        8592 (79.17 % of base) : 502725.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        8432 (68.07 % of base) : 391481.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)

Top method improvements (bytes):
        -192 (-32.65 % of base) : 254748.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 267722.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 356297.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 385124.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 218877.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 250597.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 266993.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 295329.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 309577.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 312205.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 23713.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 258377.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 269925.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 301493.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 308485.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 314165.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 320561.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 36189.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.31 % of base) : 7333.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -156 (-21.20 % of base) : 224397.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        1276 (131.28 % of base) : 526357.dasm - struct1:Process2DArray(byref) (FullOpts)
         844 (129.45 % of base) : 525671.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
        1248 (128.40 % of base) : 525670.dasm - class1:Process2DArray(byref) (FullOpts)
         908 (127.53 % of base) : 526358.dasm - struct1:ProcessJagged2DArray(byref) (FullOpts)
         676 (121.58 % of base) : 224984.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         512 (119.63 % of base) : 224831.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         496 (115.89 % of base) : 224877.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
       12932 (115.75 % of base) : 392761.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       12812 (114.31 % of base) : 390850.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
         472 (110.28 % of base) : 224875.dasm - Chaos.A0A0A3`1[System.__Canon]:RecurseA0A0A3(int):this (Tier1)
         472 (110.28 % of base) : 224874.dasm - Chaos.A0A3A4`1[System.__Canon]:RecurseA0A3A4(int):this (Tier1)
        1728 (109.92 % of base) : 387168.dasm - Internal.TypeSystem.InstantiatedType:InstantiateTypeArray[System.__Canon](System.__Canon[],Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):System.__Canon[] (Tier1)
         832 (109.47 % of base) : 525979.dasm - Test_jaggedarr_basics.double1:Process2DArray(byref) (FullOpts)
         468 (109.35 % of base) : 224879.dasm - Chaos.A0A0A1:RecurseA0A0A1(int):this (Tier1)
         468 (109.35 % of base) : 224828.dasm - Chaos.A0A0A3`1[System.__Canon]:RecurseA0A0A3(int):this (Tier1)
         468 (109.35 % of base) : 224878.dasm - Chaos.A0A1A2`1[System.__Canon]:RecurseA0A1A2(int):this (Tier1)
         468 (109.35 % of base) : 224832.dasm - Chaos.A0A1A2`1[System.__Canon]:RecurseA0A1A2(int):this (Tier1)
         468 (109.35 % of base) : 224880.dasm - Chaos.A0A3:RecurseA0A3(int):this (Tier1)
         468 (109.35 % of base) : 224827.dasm - Chaos.A0A3A4`1[System.__Canon]:RecurseA0A3A4(int):this (Tier1)
         468 (109.35 % of base) : 224876.dasm - Chaos.A0A4`1[System.__Canon]:RecurseA0A4(int):this (Tier1)

Top method improvements (percentages):
         -68 (-56.67 % of base) : 540458.dasm - foo:Main():int (FullOpts)
         -92 (-41.82 % of base) : 501397.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
         -92 (-40.35 % of base) : 501399.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
        -192 (-32.65 % of base) : 254748.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 267722.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 356297.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 385124.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -124 (-21.38 % of base) : 228266.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 296118.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 356729.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 360578.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 361014.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 378293.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 383653.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 393049.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 225502.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 268237.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 308154.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 373801.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 391027.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


libraries.crossgen2.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: 58806560 (overridden on cmd)
Total bytes of diff: 63909164 (overridden on cmd)
Total bytes of delta: 5102604 (8.68 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       56704 : 25122.dasm (72.10 % of base)
       18656 : 134264.dasm (68.11 % of base)
       12264 : 39897.dasm (97.92 % of base)
       11712 : 159977.dasm (90.76 % of base)
       11676 : 91432.dasm (75.23 % of base)
       10508 : 124833.dasm (74.76 % of base)
       10060 : 39793.dasm (94.48 % of base)
        8672 : 2225.dasm (75.28 % of base)
        8600 : 58755.dasm (97.77 % of base)
        8204 : 193654.dasm (43.21 % of base)
        6696 : 65273.dasm (88.85 % of base)
        6500 : 17703.dasm (94.53 % of base)
        6492 : 198774.dasm (69.93 % of base)
        6280 : 124766.dasm (85.23 % of base)
        5808 : 125018.dasm (81.66 % of base)
        5512 : 193707.dasm (95.96 % of base)
        5480 : 95042.dasm (79.84 % of base)
        5472 : 59072.dasm (83.82 % of base)
        5096 : 24604.dasm (30.25 % of base)
        5068 : 193981.dasm (88.23 % of base)

Top file improvements (bytes):
         -80 : 21010.dasm (-9.13 % of base)
         -48 : 132129.dasm (-0.49 % of base)
         -44 : 17270.dasm (-10.09 % of base)
         -40 : 148248.dasm (-8.40 % of base)
         -40 : 169752.dasm (-8.40 % of base)
         -36 : 218179.dasm (-5.59 % of base)
         -32 : 216695.dasm (-4.68 % of base)
         -32 : 222265.dasm (-3.45 % of base)
         -32 : 88243.dasm (-6.56 % of base)
         -28 : 178994.dasm (-5.43 % of base)
         -28 : 202117.dasm (-5.38 % of base)
         -28 : 217338.dasm (-4.86 % of base)
         -28 : 198854.dasm (-3.45 % of base)
         -28 : 239473.dasm (-5.69 % of base)
         -28 : 239477.dasm (-5.22 % of base)
         -28 : 157586.dasm (-5.43 % of base)
         -28 : 157590.dasm (-6.14 % of base)
         -28 : 159813.dasm (-5.98 % of base)
         -28 : 178886.dasm (-5.22 % of base)
         -28 : 89302.dasm (-4.27 % of base)

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

Top method regressions (bytes):
       56704 (72.10 % of base) : 25122.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
       18656 (68.11 % of base) : 134264.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       12264 (97.92 % of base) : 39897.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       11712 (90.76 % of base) : 159977.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
       11676 (75.23 % of base) : 91432.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       10508 (74.76 % of base) : 124833.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10060 (94.48 % of base) : 39793.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        8672 (75.28 % of base) : 2225.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        8600 (97.77 % of base) : 58755.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        8204 (43.21 % of base) : 193654.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
        6696 (88.85 % of base) : 65273.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        6500 (94.53 % of base) : 17703.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        6492 (69.93 % of base) : 198774.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        6280 (85.23 % of base) : 124766.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5808 (81.66 % of base) : 125018.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        5512 (95.96 % of base) : 193707.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
        5480 (79.84 % of base) : 95042.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        5472 (83.82 % of base) : 59072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5096 (30.25 % of base) : 24604.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
        5068 (88.23 % of base) : 193981.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessRedefine(System.Xml.Schema.XmlSchemaRedefine):this (FullOpts)

Top method improvements (bytes):
         -80 (-9.13 % of base) : 21010.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -48 (-0.49 % of base) : 132129.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -44 (-10.09 % of base) : 17270.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -40 (-8.40 % of base) : 148248.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 169752.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -36 (-5.59 % of base) : 218179.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -32 (-4.68 % of base) : 216695.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
         -32 (-3.45 % of base) : 222265.dasm - System.Linq.Parallel.FirstQueryOperator`1+FirstQueryOperatorEnumerator`1[System.__Canon,System.__Canon]:MoveNext(byref,byref):ubyte:this (FullOpts)
         -32 (-6.56 % of base) : 88243.dasm - System.Speech.Recognition.RecognizerBase:System.Speech.Recognition.IRecognizerInternal.GetGrammarFromId(ulong):System.Speech.Recognition.Grammar:this (FullOpts)
         -28 (-5.22 % of base) : 178886.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.__Canon]:TryGetKey(System.__Canon,byref):ubyte:this (FullOpts)
         -28 (-3.45 % of base) : 198854.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)
         -28 (-5.43 % of base) : 178994.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-5.43 % of base) : 157586.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-6.14 % of base) : 157590.dasm - Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -28 (-4.86 % of base) : 217338.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -28 (-5.69 % of base) : 239473.dasm - System.Diagnostics.Eventing.Reader.EventKeyword:PrepareData():this (FullOpts)
         -28 (-5.22 % of base) : 239477.dasm - System.Diagnostics.Eventing.Reader.EventLogLink:PrepareData():this (FullOpts)
         -28 (-5.98 % of base) : 159813.dasm - System.Management.ManagementNamedValueCollection:GetContext():System.Management.IWbemContext:this (FullOpts)
         -28 (-4.27 % of base) : 89302.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:AddLexicon(System.Uri,System.String):this (FullOpts)
         -28 (-5.38 % of base) : 202117.dasm - System.Text.Json.JsonPropertyDictionary`1[System.__Canon]:ContainsProperty(System.String):ubyte:this (FullOpts)

Top method regressions (percentages):
        4808 (117.27 % of base) : 125356.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1716 (115.95 % of base) : 240308.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4592 (115.26 % of base) : 125398.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         340 (111.84 % of base) : 89613.dasm - System.Speech.Internal.SrgsCompiler.ParseElementCollection:TrimEnd(System.Speech.Internal.SrgsCompiler.Arc,System.Speech.Internal.SrgsCompiler.Backend):System.Speech.Internal.SrgsCompiler.Arc (FullOpts)
         328 (107.89 % of base) : 89612.dasm - System.Speech.Internal.SrgsCompiler.ParseElementCollection:TrimStart(System.Speech.Internal.SrgsCompiler.Arc,System.Speech.Internal.SrgsCompiler.Backend):System.Speech.Internal.SrgsCompiler.Arc (FullOpts)
         144 (105.88 % of base) : 95971.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.VisualBasic.Symbol):Microsoft.CodeAnalysis.VisualBasic.Symbol (FullOpts)
         152 (105.56 % of base) : 50303.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 50305.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         152 (105.56 % of base) : 50308.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:SkipInsignificantDirectives(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
         164 (105.13 % of base) : 50304.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
        2356 (102.61 % of base) : 94291.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
        1240 (102.31 % of base) : 225166.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
        1412 (101.15 % of base) : 193891.dasm - System.Xml.XmlTextReaderImpl:SkipUntil(ushort,ubyte):this (FullOpts)
         168 (100.00 % of base) : 57655.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ContainingNonLambdaMember(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
        2988 (99.73 % of base) : 193713.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        2668 (99.70 % of base) : 193014.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberEnd(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],ubyte):this (FullOpts)
        2588 (99.23 % of base) : 193734.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
        3096 (98.22 % of base) : 213221.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
       12264 (97.92 % of base) : 39897.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        3268 (97.84 % of base) : 193027.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberBegin(System.Xml.Serialization.XmlSerializationReaderILGen+Member[]):this (FullOpts)

Top method improvements (percentages):
         -20 (-12.20 % of base) : 10464.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-12.20 % of base) : 229440.dasm - System.Reflection.Emit.TypeBuilderImpl:IsSubclassOf(System.Type):ubyte:this (FullOpts)
         -20 (-10.42 % of base) : 120342.dasm - System.IO.Packaging.XmlCompatibilityReader:SkipToKnownAttribute():ubyte:this (FullOpts)
         -16 (-10.26 % of base) : 137923.dasm - System.Security.Cryptography.TripleDES:get_Key():ubyte[]:this (FullOpts)
         -44 (-10.09 % of base) : 17270.dasm - System.Reflection.CustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType,ubyte):ubyte (FullOpts)
         -80 (-9.13 % of base) : 21010.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-8.89 % of base) : 156242.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 177651.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:Any(int):ubyte:this (FullOpts)
         -16 (-8.89 % of base) : 136865.dasm - System.Security.Cryptography.DES:get_Key():ubyte[]:this (FullOpts)
         -16 (-8.51 % of base) : 156067.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-8.51 % of base) : 177473.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -40 (-8.40 % of base) : 148248.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -40 (-8.40 % of base) : 169752.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
         -24 (-7.69 % of base) : 156511.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -24 (-7.69 % of base) : 177923.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 155684.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All(System.Func`2[System.__Canon,ubyte]):ubyte:this (FullOpts)
         -16 (-7.69 % of base) : 145717.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -16 (-7.69 % of base) : 167390.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -24 (-7.50 % of base) : 19724.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:IsSubsetOfHashSetWithSameComparer(System.Collections.Generic.HashSet`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-7.46 % of base) : 155825.dasm - Microsoft.CodeAnalysis.UnionCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)


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: 77801572 (overridden on cmd)
Total bytes of diff: 85179724 (overridden on cmd)
Total bytes of delta: 7378152 (9.48 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       21040 : 141176.dasm (71.99 % of base)
       19212 : 90459.dasm (80.64 % of base)
       17804 : 90418.dasm (96.97 % of base)
       13292 : 58840.dasm (97.56 % of base)
       11492 : 192044.dasm (102.57 % of base)
       11360 : 150266.dasm (99.61 % of base)
       10768 : 178626.dasm (77.89 % of base)
       10760 : 35798.dasm (98.46 % of base)
       10148 : 35904.dasm (92.15 % of base)
        9596 : 233889.dasm (91.04 % of base)
        9144 : 65987.dasm (90.79 % of base)
        8364 : 94643.dasm (88.60 % of base)
        8356 : 232242.dasm (99.24 % of base)
        8332 : 233484.dasm (67.81 % of base)
        7280 : 90734.dasm (72.60 % of base)
        7200 : 230041.dasm (87.08 % of base)
        6864 : 90408.dasm (87.51 % of base)
        6848 : 244228.dasm (54.44 % of base)
        6556 : 244164.dasm (90.01 % of base)
        6372 : 121414.dasm (69.17 % of base)

Top file improvements (bytes):
        -116 : 228513.dasm (-12.45 % of base)
         -68 : 174035.dasm (-11.33 % of base)
         -68 : 174075.dasm (-11.11 % of base)
         -56 : 65639.dasm (-5.58 % of base)
         -44 : 123306.dasm (-15.71 % of base)
         -36 : 145338.dasm (-1.55 % of base)
         -36 : 87286.dasm (-2.73 % of base)
         -32 : 288193.dasm (-8.08 % of base)
         -32 : 288194.dasm (-6.96 % of base)
         -28 : 240917.dasm (-5.79 % of base)
         -24 : 191870.dasm (-2.84 % of base)
         -24 : 252836.dasm (-3.57 % of base)
         -24 : 255497.dasm (-2.46 % of base)
         -20 : 123339.dasm (-8.33 % of base)
         -20 : 256171.dasm (-3.12 % of base)
         -20 : 256172.dasm (-3.05 % of base)
         -20 : 262360.dasm (-1.71 % of base)
         -20 : 174034.dasm (-3.62 % of base)
         -20 : 174074.dasm (-3.55 % of base)
         -16 : 290168.dasm (-8.51 % of base)

92 total files with Code Size differences (33 improved, 59 regressed), 20 unchanged.

Top method regressions (bytes):
       21040 (71.99 % of base) : 141176.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       19212 (80.64 % of base) : 90459.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       17804 (96.97 % of base) : 90418.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
       13292 (97.56 % of base) : 58840.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11492 (102.57 % of base) : 192044.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
       11360 (99.61 % of base) : 150266.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
       10768 (77.89 % of base) : 178626.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10760 (98.46 % of base) : 35798.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10148 (92.15 % of base) : 35904.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9596 (91.04 % of base) : 233889.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        9144 (90.79 % of base) : 65987.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8364 (88.60 % of base) : 94643.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        8356 (99.24 % of base) : 232242.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        8332 (67.81 % of base) : 233484.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        7280 (72.60 % of base) : 90734.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        7200 (87.08 % of base) : 230041.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        6864 (87.51 % of base) : 90408.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        6848 (54.44 % of base) : 244228.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
        6556 (90.01 % of base) : 244164.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.DebugInfo,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
        6372 (69.17 % of base) : 121414.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)

Top method improvements (bytes):
        -116 (-12.45 % of base) : 228513.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -68 (-11.33 % of base) : 174035.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 174075.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -56 (-5.58 % of base) : 65639.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-15.71 % of base) : 123306.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)
         -36 (-2.73 % of base) : 87286.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+PerThreadStartStopData+<Stackify>d__3:MoveNext():ubyte:this (FullOpts)
         -36 (-1.55 % of base) : 145338.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
         -32 (-8.08 % of base) : 288193.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-6.96 % of base) : 288194.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -28 (-5.79 % of base) : 240917.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
         -24 (-3.57 % of base) : 252836.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
         -24 (-2.46 % of base) : 255497.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Find(System.Predicate`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float]:this (FullOpts)
         -24 (-2.84 % of base) : 191870.dasm - System.Management.ManagementQueryConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
         -20 (-3.62 % of base) : 174034.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
         -20 (-3.55 % of base) : 174074.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.Nullable`1[int],double,ubyte],double):ubyte:this (FullOpts)
         -20 (-8.33 % of base) : 123339.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -20 (-3.12 % of base) : 256171.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-3.05 % of base) : 256172.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -20 (-1.71 % of base) : 262360.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_GetMethodValue():System.Reflection.MethodInfo:this (FullOpts)
         -16 (-1.18 % of base) : 30061.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 180750.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 292321.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 180811.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1600 (105.54 % of base) : 215240.dasm - System.Xml.Serialization.XmlSerializationWriterCodeGen:WriteDerivedTypes(System.Xml.Serialization.StructMapping):this (FullOpts)
        3636 (104.36 % of base) : 240458.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
         232 (103.57 % of base) : 263703.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
       11492 (102.57 % of base) : 192044.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
        5136 (102.47 % of base) : 90612.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindRedimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
        2644 (101.23 % of base) : 118601.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillArgumentListInner(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+SpillBuilder],ubyte,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        1856 (100.43 % of base) : 55387.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEDeltaAssemblyBuilder:GetAnonymousDelegateMapFromMetadata(System.Reflection.Metadata.MetadataReader,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Emit.SynthesizedDelegateKey,Microsoft.CodeAnalysis.Emit.SynthesizedDelegateValue] (FullOpts)
        4772 (100.42 % of base) : 93466.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:ReportIndirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref) (FullOpts)
        3244 (100.12 % of base) : 94565.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:ProcessPartialMethodsIfAny(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        3152 (99.87 % of base) : 94475.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindOptions(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax],Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
       11360 (99.61 % of base) : 150266.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
        8356 (99.24 % of base) : 232242.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        4252 (99.16 % of base) : 90785.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlnsAttributes(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.BoundXmlAttribute],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
        6076 (98.96 % of base) : 232244.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByReverseImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
        3032 (98.57 % of base) : 269317.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
       10760 (98.46 % of base) : 35798.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        6040 (97.92 % of base) : 58852.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

Top method improvements (percentages):
         -44 (-15.71 % of base) : 123306.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)
        -116 (-12.45 % of base) : 228513.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -68 (-11.33 % of base) : 174035.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]: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)
         -68 (-11.11 % of base) : 174075.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[System.Numerics.Vector`1[float]](System.Func`3[System.Nullable`1[int],System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -16 (-8.51 % of base) : 290168.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -20 (-8.33 % of base) : 123339.dasm - Roslyn.Utilities.OneOrMany`1[ubyte]:Any[System.Numerics.Vector`1[float]](System.Func`3[ubyte,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-8.08 % of base) : 288193.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -32 (-6.96 % of base) : 288194.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
         -16 (-6.90 % of base) : 187549.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Byte():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187557.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Char():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187551.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int16():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187553.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int32():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187555.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int64():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187550.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_SByte():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187552.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt16():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187554.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt32():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187556.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt64():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.90 % of base) : 187540.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -16 (-6.78 % of base) : 122708.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -16 (-6.78 % of base) : 158260.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (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: 307088556 (overridden on cmd)
Total bytes of diff: 330978164 (overridden on cmd)
Total bytes of delta: 23889608 (7.78 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       23112 : 57839.dasm (90.38 % of base)
       22664 : 85873.dasm (90.77 % of base)
       20412 : 490973.dasm (94.57 % of base)
       19288 : 150261.dasm (83.45 % of base)
       18400 : 87439.dasm (98.69 % of base)
       18152 : 571165.dasm (95.28 % of base)
       17104 : 382658.dasm (93.79 % of base)
       16624 : 594771.dasm (99.00 % of base)
       16108 : 537084.dasm (89.47 % of base)
       15812 : 586047.dasm (85.62 % of base)
       15752 : 594778.dasm (98.33 % of base)
       15216 : 54454.dasm (90.08 % of base)
       14992 : 571273.dasm (70.10 % of base)
       14756 : 85821.dasm (87.19 % of base)
       14460 : 408085.dasm (77.48 % of base)
       14340 : 54442.dasm (73.37 % of base)
       14244 : 408246.dasm (76.42 % of base)
       14188 : 408211.dasm (75.42 % of base)
       14168 : 408122.dasm (75.44 % of base)
       13732 : 549359.dasm (86.69 % of base)

Top file improvements (bytes):
       -5076 : 68111.dasm (-31.63 % of base)
        -404 : 37352.dasm (-2.55 % of base)
        -364 : 74688.dasm (-2.30 % of base)
        -288 : 272870.dasm (-3.72 % of base)
        -288 : 272836.dasm (-3.70 % of base)
        -288 : 272844.dasm (-5.18 % of base)
        -284 : 80693.dasm (-2.99 % of base)
        -236 : 51164.dasm (-2.48 % of base)
        -192 : 186122.dasm (-32.65 % of base)
        -192 : 256025.dasm (-32.65 % of base)
        -192 : 4493.dasm (-32.65 % of base)
        -192 : 89781.dasm (-32.65 % of base)
        -192 : 90682.dasm (-32.65 % of base)
        -192 : 1036.dasm (-32.65 % of base)
        -192 : 191898.dasm (-32.65 % of base)
        -192 : 255273.dasm (-32.65 % of base)
        -192 : 315914.dasm (-32.65 % of base)
        -192 : 617439.dasm (-32.65 % of base)
        -192 : 67567.dasm (-32.65 % of base)
        -192 : 104864.dasm (-32.65 % of base)

93 total files with Code Size differences (30 improved, 63 regressed), 20 unchanged.

Top method regressions (bytes):
       23112 (90.38 % of base) : 57839.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       22664 (90.77 % of base) : 85873.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       20412 (94.57 % of base) : 490973.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
       19288 (83.45 % of base) : 150261.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       18400 (98.69 % of base) : 87439.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       18152 (95.28 % of base) : 571165.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       17104 (93.79 % of base) : 382658.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (Tier1)
       16624 (99.00 % of base) : 594771.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeDefTableRows():this (Tier1)
       16108 (89.47 % of base) : 537084.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       15812 (85.62 % of base) : 586047.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
       15752 (98.33 % of base) : 594778.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeRefTableRows():this (Tier1)
       15216 (90.08 % of base) : 54454.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       14992 (70.10 % of base) : 571273.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       14756 (87.19 % of base) : 85821.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       14460 (77.48 % of base) : 408085.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (Tier1)
       14340 (73.37 % of base) : 54442.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       14244 (76.42 % of base) : 408246.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (Tier1)
       14188 (75.42 % of base) : 408211.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (Tier1)
       14168 (75.44 % of base) : 408122.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (Tier1)
       13732 (86.69 % of base) : 549359.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingNumbers_TryGetMethods() (Tier1-OSR)

Top method improvements (bytes):
       -5076 (-31.63 % of base) : 68111.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -404 (-2.55 % of base) : 37352.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -364 (-2.30 % of base) : 74688.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -288 (-5.18 % of base) : 272844.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternDotIsStar():this (Tier1)
        -288 (-3.70 % of base) : 272836.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithLeadingStar():this (Tier1)
        -288 (-3.72 % of base) : 272870.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithTrailingStar():this (Tier1)
        -284 (-2.99 % of base) : 80693.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -236 (-2.48 % of base) : 51164.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -192 (-32.65 % of base) : 186122.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 256025.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 4493.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 89781.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 90682.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 1036.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 191898.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 255273.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 315914.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 617439.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 67567.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 104864.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
        5308 (174.84 % of base) : 582125.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
        4016 (144.25 % of base) : 151501.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
        1948 (115.95 % of base) : 293192.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[System.Linq.Parallel.Pair`2[int,int],int][],int[],System.Threading.CancellationToken):this (Tier1)
        6760 (110.89 % of base) : 592074.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
        2492 (110.85 % of base) : 311602.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchValuesLargerIndexOfAny_ManyString() (Tier1-OSR)
        2480 (110.32 % of base) : 311745.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchIndexOfAny_ManyString() (Tier1-OSR)
        2480 (110.32 % of base) : 312857.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchLastIndexOfAny_String_ManyByte() (Tier1-OSR)
        2484 (110.30 % of base) : 313485.dasm - System.SpanTests.ReadOnlySpanTests:TestNoMatchValuesLargerLastIndexOfAny_String_ManyByte() (Tier1-OSR)
         524 (109.17 % of base) : 453811.dasm - System.Lazy`1[int]:CreateValue():int:this (Instrumented Tier1)
         524 (109.17 % of base) : 79578.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (Instrumented Tier1)
        6004 (109.08 % of base) : 538013.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (Tier1-OSR)
        4684 (108.93 % of base) : 51595.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[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] (Tier1)
        4020 (107.14 % of base) : 61390.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        4016 (106.92 % of base) : 84742.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        1496 (106.86 % of base) : 292944.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,System.Linq.Parallel.Tests.NotComparable]]:QuickSort(int,int,System.Linq.Parallel.Pair`2[int,System.Linq.Parallel.Tests.NotComparable][],int[],System.Threading.CancellationToken):this (Tier1)
        3152 (106.20 % of base) : 589003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31374_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3988 (104.62 % of base) : 570674.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupSymbolsInternal(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
        2744 (104.10 % of base) : 597475.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        6296 (103.48 % of base) : 441720.dasm - System.Runtime.Serialization.ReflectionXmlFormatWriter:ReflectionWriteCollection(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (Tier1-OSR)
        4992 (103.48 % of base) : 112375.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitArguments(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IArgumentProvider):System.Linq.Expressions.Expression[] (Tier1)

Top method improvements (percentages):
        -192 (-32.65 % of base) : 186122.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 256025.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 4493.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 89781.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 90682.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 1036.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 191898.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 255273.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 315914.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 617439.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 67567.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 104864.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 285669.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 63242.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
        -192 (-32.65 % of base) : 66079.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
       -5076 (-31.63 % of base) : 68111.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -124 (-21.38 % of base) : 4413.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 89753.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 97605.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
        -124 (-21.38 % of base) : 861.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)


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: 169130060 (overridden on cmd)
Total bytes of diff: 179585384 (overridden on cmd)
Total bytes of delta: 10455324 (6.18 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       25804 : 113525.dasm (35.30 % of base)
       23760 : 109854.dasm (33.89 % of base)
       20780 : 59867.dasm (71.40 % of base)
       17292 : 181595.dasm (104.29 % of base)
       13316 : 209134.dasm (56.43 % of base)
       13200 : 208717.dasm (56.71 % of base)
       13164 : 7034.dasm (97.37 % of base)
       13028 : 49922.dasm (97.51 % of base)
       12620 : 44732.dasm (96.22 % of base)
       11364 : 146006.dasm (101.10 % of base)
       11344 : 54470.dasm (83.81 % of base)
       11232 : 307202.dasm (95.74 % of base)
       10484 : 92165.dasm (77.34 % of base)
       10060 : 182987.dasm (92.87 % of base)
        9972 : 56202.dasm (91.52 % of base)
        9508 : 96663.dasm (72.82 % of base)
        8992 : 6169.dasm (90.79 % of base)
        8988 : 109139.dasm (94.25 % of base)
        7780 : 112764.dasm (84.75 % of base)
        7744 : 122735.dasm (96.03 % of base)

Top file improvements (bytes):
        -500 : 70091.dasm (-6.38 % of base)
        -420 : 51147.dasm (-3.31 % of base)
        -420 : 45408.dasm (-3.31 % of base)
        -400 : 68785.dasm (-5.25 % of base)
        -128 : 241277.dasm (-3.62 % of base)
         -88 : 308430.dasm (-3.96 % of base)
         -88 : 308243.dasm (-4.07 % of base)
         -84 : 291578.dasm (-10.99 % of base)
         -84 : 308242.dasm (-4.61 % of base)
         -80 : 309058.dasm (-4.32 % of base)
         -80 : 181581.dasm (-12.99 % of base)
         -72 : 291746.dasm (-8.26 % of base)
         -64 : 301604.dasm (-7.34 % of base)
         -60 : 291747.dasm (-5.49 % of base)
         -56 : 301561.dasm (-10.85 % of base)
         -56 : 301553.dasm (-11.02 % of base)
         -56 : 301559.dasm (-10.85 % of base)
         -56 : 55549.dasm (-5.58 % of base)
         -48 : 113721.dasm (-7.84 % of base)
         -44 : 287230.dasm (-6.47 % of base)

91 total files with Code Size differences (31 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
       25804 (35.30 % of base) : 113525.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
       23760 (33.89 % of base) : 109854.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
       20780 (71.40 % of base) : 59867.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       17292 (104.29 % of base) : 181595.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
       13316 (56.43 % of base) : 209134.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13200 (56.71 % of base) : 208717.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       13164 (97.37 % of base) : 7034.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13028 (97.51 % of base) : 49922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12620 (96.22 % of base) : 44732.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11364 (101.10 % of base) : 146006.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
       11344 (83.81 % of base) : 54470.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
       11232 (95.74 % of base) : 307202.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
       10484 (77.34 % of base) : 92165.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10060 (92.87 % of base) : 182987.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
        9972 (91.52 % of base) : 56202.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9508 (72.82 % of base) : 96663.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        8992 (90.79 % of base) : 6169.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8988 (94.25 % of base) : 109139.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test4():ubyte (FullOpts)
        7780 (84.75 % of base) : 112764.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array010.array010.Test:MainMethod():int (FullOpts)
        7744 (96.03 % of base) : 122735.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)

Top method improvements (bytes):
        -500 (-6.38 % of base) : 70091.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]:ComparingWithOtherSets(int):this (FullOpts)
        -420 (-3.31 % of base) : 51147.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -420 (-3.31 % of base) : 45408.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
        -400 (-5.25 % of base) : 68785.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
        -128 (-3.62 % of base) : 241277.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
         -88 (-3.96 % of base) : 308430.dasm - System.Threading.Tasks.Dataflow.Tests.TransformBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -88 (-4.07 % of base) : 308243.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -84 (-10.99 % of base) : 291578.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3390_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -84 (-4.61 % of base) : 308242.dasm - System.Threading.Tasks.Dataflow.Tests.BufferBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -80 (-4.32 % of base) : 309058.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptionsAsyncEnumerable>d__37:MoveNext():this (FullOpts)
         -80 (-12.99 % of base) : 181581.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -72 (-8.26 % of base) : 291746.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3565_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-7.34 % of base) : 301604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32922_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -60 (-5.49 % of base) : 291747.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3566_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-5.58 % of base) : 55549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__65:MoveNext():ubyte:this (FullOpts)
         -56 (-11.02 % of base) : 301553.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32878_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 301559.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32881_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 301561.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32883_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -48 (-7.84 % of base) : 113721.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -44 (-6.47 % of base) : 287229.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1348_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method regressions (percentages):
        4852 (118.34 % of base) : 91820.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
        1708 (116.99 % of base) : 193029.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        4620 (115.96 % of base) : 91779.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         580 (111.54 % of base) : 99019.dasm - System.Diagnostics.Metrics.Tests.MetricsTests+<>c__DisplayClass15_0:<SerializedEventsTest>b__3():this (FullOpts)
        2724 (107.58 % of base) : 301689.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex26382_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3168 (107.03 % of base) : 290455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3214_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         952 (104.39 % of base) : 312429.dasm - System.Threading.Tests.BarrierTests:RunBarrierTest7a() (FullOpts)
       17292 (104.29 % of base) : 181595.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
         232 (103.57 % of base) : 88592.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 30150.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
         232 (103.57 % of base) : 42560.dasm - System.Composition.Hosting.Util.SmallSparseInitonlyArray:TryGetValue(int,byref):ubyte:this (FullOpts)
        1396 (101.16 % of base) : 50401.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
       11364 (101.10 % of base) : 146006.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
        3168 (100.25 % of base) : 291694.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3465_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        3632 (100.22 % of base) : 167901.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (FullOpts)
        1640 (100.00 % of base) : 207578.dasm - DataContractSerializerTests:DCS_InvalidDataContract_Read_Invalid_Types_Throws() (FullOpts)
        2148 (99.81 % of base) : 46133.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)
        2476 (99.20 % of base) : 207545.dasm - DataContractSerializerTests:DCS_MyPersonSurrogate_Stress() (FullOpts)
        2712 (99.12 % of base) : 291709.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3483_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        2004 (99.01 % of base) : 51694.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanInterpolatedStringLiteralContents(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation]):this (FullOpts)

Top method improvements (percentages):
         -80 (-12.99 % of base) : 181581.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -56 (-11.02 % of base) : 301553.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32878_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -84 (-10.99 % of base) : 291578.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3390_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 301559.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32881_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-10.85 % of base) : 301561.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32883_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-9.17 % of base) : 225456.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
         -16 (-8.51 % of base) : 184502.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -72 (-8.26 % of base) : 291746.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3565_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -32 (-8.00 % of base) : 235759.dasm - System.Security.Cryptography.RC2:set_EffectiveKeySize(int):this (FullOpts)
         -48 (-7.84 % of base) : 113721.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test3a():ubyte (FullOpts)
         -24 (-7.69 % of base) : 3121.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -64 (-7.34 % of base) : 301604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32922_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-7.19 % of base) : 226854.dasm - System.Security.Cryptography.DES:set_Key(ubyte[]):this (FullOpts)
         -40 (-6.85 % of base) : 172157.dasm - PurchaseOrder:CreateInstance():PurchaseOrder (FullOpts)
         -20 (-6.58 % of base) : 186497.dasm - System.Reflection.Emit.Tests.TypeBuilderGetMethod+<>c:<GetMethod_TypeNotTypeBuilder_ThrowsArgumentException>b__2_0():System.Object:this (FullOpts)
         -16 (-6.56 % of base) : 196425.dasm - System.Runtime.InteropServices.Tests.PrelinkTests:Prelink_RuntimeSuppliedMethod_Success():this (FullOpts)
         -44 (-6.47 % of base) : 287229.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1348_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 287230.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1350_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 287231.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1354_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-6.47 % of base) : 287232.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 15374216 (overridden on cmd)
Total bytes of diff: 17301016 (overridden on cmd)
Total bytes of delta: 1926800 (12.53 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       13104 : 19612.dasm (97.44 % of base)
       10480 : 24519.dasm (97.18 % of base)
       10008 : 23433.dasm (91.35 % of base)
        9288 : 18417.dasm (91.45 % of base)
        8368 : 31219.dasm (74.79 % of base)
        7888 : 1191.dasm (96.76 % of base)
        6828 : 17193.dasm (84.80 % of base)
        6680 : 23746.dasm (77.93 % of base)
        6520 : 11733.dasm (94.49 % of base)
        6520 : 11732.dasm (87.92 % of base)
        6196 : 29932.dasm (94.05 % of base)
        6096 : 20836.dasm (87.44 % of base)
        5968 : 19498.dasm (79.19 % of base)
        5712 : 20026.dasm (97.81 % of base)
        5384 : 11933.dasm (101.05 % of base)
        5312 : 11932.dasm (99.25 % of base)
        5068 : 1278.dasm (110.27 % of base)
        4960 : 6949.dasm (79.64 % of base)
        4928 : 23231.dasm (54.63 % of base)
        4892 : 20689.dasm (87.80 % of base)

Top file improvements (bytes):
        -112 : 460.dasm (-10.65 % of base)
         -72 : 1450.dasm (-5.45 % of base)
         -68 : 14519.dasm (-16.04 % of base)
         -56 : 27802.dasm (-5.58 % of base)
         -44 : 1379.dasm (-33.33 % of base)
         -16 : 2185.dasm (-2.15 % of base)
         -16 : 33079.dasm (-6.90 % of base)
         -16 : 12593.dasm (-3.28 % of base)
         -12 : 1470.dasm (-1.32 % of base)
         -12 : 27760.dasm (-2.27 % of base)
         -12 : 29736.dasm (-0.66 % of base)
         -12 : 5152.dasm (-1.49 % of base)
         -12 : 33235.dasm (-4.41 % of base)
         -12 : 15597.dasm (-2.29 % of base)
         -12 : 20714.dasm (-1.94 % of base)
          -8 : 30096.dasm (-0.68 % of base)
          -8 : 31923.dasm (-0.80 % of base)
          -4 : 100.dasm (-2.08 % of base)
          -4 : 17294.dasm (-2.13 % of base)
          -4 : 23353.dasm (-1.96 % of base)

81 total files with Code Size differences (25 improved, 56 regressed), 19 unchanged.

Top method regressions (bytes):
       13104 (97.44 % of base) : 19612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       10480 (97.18 % of base) : 24519.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       10008 (91.35 % of base) : 23433.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9288 (91.45 % of base) : 18417.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8368 (74.79 % of base) : 31219.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        7888 (96.76 % of base) : 1191.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        6828 (84.80 % of base) : 17193.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6680 (77.93 % of base) : 23746.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
        6520 (87.92 % of base) : 11732.dasm - SixLabors.ImageSharp.Advanced.ParallelRowIterator:IterateRows[SixLabors.ImageSharp.Processing.Processors.Convolution.Convolution2PassProcessor`1+HorizontalConvolutionRowOperation[SixLabors.ImageSharp.PixelFormats.Rgba32],System.Numerics.Vector4](SixLabors.ImageSharp.Rectangle,byref,byref) (FullOpts)
        6520 (94.49 % of base) : 11733.dasm - SixLabors.ImageSharp.Advanced.ParallelRowIterator+RowOperationWrapper`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Convolution2PassProcessor`1+HorizontalConvolutionRowOperation[SixLabors.ImageSharp.PixelFormats.Rgba32],System.Numerics.Vector4]:Invoke(int):this (FullOpts)
        6196 (94.05 % of base) : 29932.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        6096 (87.44 % of base) : 20836.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        5968 (79.19 % of base) : 19498.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5712 (97.81 % of base) : 20026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5384 (101.05 % of base) : 11933.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5312 (99.25 % of base) : 11932.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        5068 (110.27 % of base) : 1278.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        4960 (79.64 % of base) : 6949.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckEntityDefn$cont@2269(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.TypedTree+Entity,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Core.Unit) (FullOpts)
        4928 (54.63 % of base) : 23231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
        4892 (87.80 % of base) : 20689.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)

Top method improvements (bytes):
        -112 (-10.65 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -72 (-5.45 % of base) : 1450.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
         -68 (-16.04 % of base) : 14519.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -56 (-5.58 % of base) : 27802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 1379.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -16 (-2.15 % of base) : 2185.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -16 (-3.28 % of base) : 12593.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -16 (-6.90 % of base) : 33079.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -12 (-1.32 % of base) : 1470.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -12 (-1.49 % of base) : 5152.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -12 (-2.27 % of base) : 27760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
         -12 (-2.29 % of base) : 15597.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-0.66 % of base) : 29736.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetRegkeyForPath(System.String,ubyte):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
         -12 (-1.94 % of base) : 20714.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
         -12 (-4.41 % of base) : 33235.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-0.68 % of base) : 30096.dasm - System.Management.Automation.LanguagePrimitives:FigureParseConversion(System.Type,System.Type):System.Management.Automation.LanguagePrimitives+PSConverter`1[System.Object] (FullOpts)
          -8 (-0.80 % of base) : 31923.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
          -4 (-3.70 % of base) : 9552.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
          -4 (-2.17 % of base) : 12799.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 219.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
        2464 (128.33 % of base) : 1423.dasm - BepuPhysics.Constraints.TwoBodyTypeProcessor`7[BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.Constraints.Contact.Contact1Functions,BepuPhysics.Constraints.AccessNoPose,BepuPhysics.Constraints.AccessNoPose,BepuPhysics.Constraints.AccessNoPose,BepuPhysics.Constraints.AccessNoPose]:WarmStart[DemoBenchmarks.ShapePileBenchmark+DemoPoseIntegratorCallbacks,BepuPhysics.Constraints.BatchShouldAlwaysIntegrate,BepuPhysics.Constraints.DisallowPoseIntegration](byref,byref,BepuPhysics.Bodies,byref,float,float,int,int,int):this (FullOpts)
        5068 (110.27 % of base) : 1278.dasm - DemoBenchmarks.OneBodyConstraintBenchmarks:Contact4OneBody():BepuPhysics.BodyVelocityWide:this (FullOpts)
        3152 (108.99 % of base) : 1252.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,byref,byref,byref,float,float,byref,byref,byref,byref):this (FullOpts)
        5384 (101.05 % of base) : 11933.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderRow(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        2876 (100.28 % of base) : 1373.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
        1544 (100.00 % of base) : 284.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        2892 (99.59 % of base) : 24615.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindPropertyPatternClause(Microsoft.CodeAnalysis.CSharp.Syntax.PropertyPatternClauseSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundPropertySubpattern]:this (FullOpts)
        5312 (99.25 % of base) : 11932.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)
        3820 (99.07 % of base) : 1505.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        3748 (99.05 % of base) : 11883.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ConvertStride(int):this (FullOpts)
        1984 (97.83 % of base) : 23747.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        5712 (97.81 % of base) : 20026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         916 (97.45 % of base) : 1407.dasm - BepuPhysics.CollisionDetection.PairCache:FlushMappingChanges():this (FullOpts)
       13104 (97.44 % of base) : 19612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        1636 (97.38 % of base) : 1298.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,float,float,byref,byref,byref):this (FullOpts)
       10480 (97.18 % of base) : 24519.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        2860 (97.01 % of base) : 19913.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:<ComputeApplicableUserDefinedImplicitConversionSet>g__addCandidatesFromType|146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],byref,ubyte):this (FullOpts)
        2120 (96.89 % of base) : 17691.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
        7888 (96.76 % of base) : 1191.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
         228 (96.61 % of base) : 15592.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)

Top method improvements (percentages):
         -44 (-33.33 % of base) : 1379.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -68 (-16.04 % of base) : 14519.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
        -112 (-10.65 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-6.90 % of base) : 33079.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -56 (-5.58 % of base) : 27802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetProperties>d__63:MoveNext():ubyte:this (FullOpts)
         -72 (-5.45 % of base) : 1450.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
         -12 (-4.41 % of base) : 33235.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-3.70 % of base) : 9552.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
         -16 (-3.28 % of base) : 12593.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -12 (-2.29 % of base) : 15597.dasm - Microsoft.CodeAnalysis.GreenNode:.ctor(ushort,Microsoft.CodeAnalysis.DiagnosticInfo[],Microsoft.CodeAnalysis.SyntaxAnnotation[],int):this (FullOpts)
         -12 (-2.27 % of base) : 27760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 12799.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.17 % of base) : 4538.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
         -16 (-2.15 % of base) : 2185.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
          -4 (-2.13 % of base) : 17294.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 100.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.08 % of base) : 3119.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.00 % of base) : 219.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-1.96 % of base) : 23353.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.94 % of base) : 20714.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)


smoke_tests.nativeaot.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: 3929512 (overridden on cmd)
Total bytes of diff: 4344752 (overridden on cmd)
Total bytes of delta: 415240 (10.57 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        6584 : 11365.dasm (74.89 % of base)
        4436 : 6162.dasm (87.25 % of base)
        4308 : 14887.dasm (88.06 % of base)
        4308 : 11945.dasm (88.28 % of base)
        4096 : 1130.dasm (89.59 % of base)
        4096 : 4441.dasm (89.59 % of base)
        2196 : 3451.dasm (75.72 % of base)
        2128 : 14432.dasm (74.93 % of base)
        2016 : 451.dasm (71.29 % of base)
        1896 : 6112.dasm (79.93 % of base)
        1880 : 8499.dasm (57.39 % of base)
        1844 : 5245.dasm (82.91 % of base)
        1828 : 10566.dasm (56.28 % of base)
        1828 : 4638.dasm (56.28 % of base)
        1764 : 6947.dasm (87.33 % of base)
        1752 : 1572.dasm (82.18 % of base)
        1712 : 4242.dasm (75.35 % of base)
        1712 : 1006.dasm (75.35 % of base)
        1696 : 11309.dasm (56.53 % of base)
        1680 : 6002.dasm (68.29 % of base)

Top file improvements (bytes):
         -24 : 9538.dasm (-11.11 % of base)
          -8 : 11988.dasm (-1.96 % of base)
          -8 : 11994.dasm (-1.85 % of base)
          -4 : 7808.dasm (-2.27 % of base)
          -4 : 12055.dasm (-2.33 % of base)
          -4 : 12807.dasm (-2.94 % of base)
          -4 : 13154.dasm (-2.38 % of base)
          -4 : 7179.dasm (-2.56 % of base)
          -4 : 9821.dasm (-2.27 % of base)
          -4 : 1246.dasm (-2.22 % of base)
          -4 : 4600.dasm (-2.22 % of base)

63 total files with Code Size differences (11 improved, 52 regressed), 17 unchanged.

Top method regressions (bytes):
        6584 (74.89 % of base) : 11365.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        4436 (87.25 % of base) : 6162.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4308 (88.06 % of base) : 14887.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4308 (88.28 % of base) : 11945.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4096 (89.59 % of base) : 1130.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        4096 (89.59 % of base) : 4441.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        2196 (75.72 % of base) : 3451.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2128 (74.93 % of base) : 14432.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2016 (71.29 % of base) : 451.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        1896 (79.93 % of base) : 6112.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        1880 (57.39 % of base) : 8499.dasm - Internal.Reflection.Extensions.NonPortable.CustomAttributeInstantiator:Instantiate(System.Reflection.CustomAttributeData):System.Attribute (FullOpts)
        1844 (82.91 % of base) : 5245.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1828 (56.28 % of base) : 10566.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        1828 (56.28 % of base) : 4638.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        1764 (87.33 % of base) : 6947.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
        1752 (82.18 % of base) : 1572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1712 (75.35 % of base) : 4242.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (FullOpts)
        1712 (75.35 % of base) : 1006.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (FullOpts)
        1696 (56.53 % of base) : 11309.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this (FullOpts)
        1680 (68.29 % of base) : 6002.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)

Top method improvements (bytes):
         -24 (-11.11 % of base) : 9538.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -8 (-1.85 % of base) : 11994.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)
          -8 (-1.96 % of base) : 11988.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -4 (-2.94 % of base) : 12807.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.56 % of base) : 7179.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.38 % of base) : 13154.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.22 % of base) : 1246.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.22 % of base) : 4600.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 9821.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 7808.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.33 % of base) : 12055.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
         428 (96.40 % of base) : 11848.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
         428 (96.40 % of base) : 5926.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
         456 (89.76 % of base) : 1151.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
         456 (89.76 % of base) : 4485.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
        4096 (89.59 % of base) : 1130.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        4096 (89.59 % of base) : 4441.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        4308 (88.28 % of base) : 11945.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4308 (88.06 % of base) : 14887.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        1764 (87.33 % of base) : 6947.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
        4436 (87.25 % of base) : 6162.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         904 (85.93 % of base) : 11415.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberInit(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.MemberBinding]):this (FullOpts)
         844 (85.08 % of base) : 5617.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
         844 (85.08 % of base) : 1756.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
         584 (84.88 % of base) : 7546.dasm - System.Reflection.DynamicInvokeInfo:CheckArguments(System.Span`1[System.Object],ulong,System.Object[],System.Reflection.BinderBundle):this (FullOpts)
         560 (84.34 % of base) : 12863.dasm - System.Reflection.DynamicInvokeInfo:CheckArguments(System.Span`1[System.Object],ulong,System.Object[],System.Reflection.BinderBundle):this (FullOpts)
        1000 (83.89 % of base) : 2497.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
        1000 (83.89 % of base) : 8094.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
        1844 (82.91 % of base) : 5245.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1752 (82.18 % of base) : 1572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        1644 (81.39 % of base) : 6475.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

Top method improvements (percentages):
         -24 (-11.11 % of base) : 9538.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -4 (-2.94 % of base) : 12807.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.56 % of base) : 7179.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -4 (-2.38 % of base) : 13154.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.33 % of base) : 12055.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 9821.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.27 % of base) : 7808.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.22 % of base) : 1246.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-2.22 % of base) : 4600.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-1.96 % of base) : 11988.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -8 (-1.85 % of base) : 11994.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)



windows x64

Diffs are based on 2,478,673 contexts (976,915 MinOpts, 1,501,758 FullOpts).

MISSED contexts: base: 6,816 (0.27%), diff: 8,236 (0.33%)

Overall (+69,970,980 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 43,157,840 +5,218,990
benchmarks.run.windows.x64.checked.mch 8,527,978 +1,457,716
benchmarks.run_pgo.windows.x64.checked.mch 35,281,691 +6,239,881
benchmarks.run_tiered.windows.x64.checked.mch 12,546,330 +791,808
coreclr_tests.run.windows.x64.checked.mch 392,032,764 +6,850,273
libraries.crossgen2.windows.x64.checked.mch 39,426,266 +4,170,815
libraries.pmi.windows.x64.checked.mch 60,047,589 +6,548,076
libraries_tests.run.windows.x64.Release.mch 276,546,440 +26,574,826
librariestestsnotieredcompilation.run.windows.x64.Release.mch 135,656,589 +9,498,864
realworld.run.windows.x64.checked.mch 13,710,148 +1,889,086
smoke_tests.nativeaot.windows.x64.checked.mch 5,066,508 +730,645

FullOpts (+69,970,980 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,739,224 +5,218,990
benchmarks.run.windows.x64.checked.mch 8,527,617 +1,457,716
benchmarks.run_pgo.windows.x64.checked.mch 21,284,086 +6,239,881
benchmarks.run_tiered.windows.x64.checked.mch 3,440,481 +791,808
coreclr_tests.run.windows.x64.checked.mch 119,501,197 +6,850,273
libraries.crossgen2.windows.x64.checked.mch 39,425,077 +4,170,815
libraries.pmi.windows.x64.checked.mch 59,934,070 +6,548,076
libraries_tests.run.windows.x64.Release.mch 102,825,764 +26,574,826
librariestestsnotieredcompilation.run.windows.x64.Release.mch 124,850,033 +9,498,864
realworld.run.windows.x64.checked.mch 13,323,545 +1,889,086
smoke_tests.nativeaot.windows.x64.checked.mch 5,065,561 +730,645

Example diffs

aspnet.run.windows.x64.checked.mch

-12 (-6.00%) : 44328.dasm - Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping:.cctor() (FullOpts)

@@ -9,20 +9,20 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T01] ( 4, 7.74) ref -> rax class-hnd exact single-def "dup spill" <System.Type[]>
+; V01 tmp1 [V01,T01] ( 4, 17.20) ref -> rax class-hnd exact single-def "dup spill" <System.Type[]>
;* V02 tmp2 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> ;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V04 tmp4 [V04,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping> -; V05 tmp5 [V05,T00] ( 5, 16.48) int -> rcx "Inline stloc first use temp"
+; V04 tmp4 [V04,T00] ( 3, 33.59) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping> +;* V05 tmp5 [V05,T02] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V06 tmp6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; ; Lcl frame size = 48
-G_M33296_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M33296_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx sub rsp, 48
- ;; size=5 bbWeight=1 PerfScore 1.25 -G_M33296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=5 bbWeight=1.00 PerfScore 1.25 +G_M33296_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Type[] mov edx, 1 call CORINFO_HELP_NEWARR_1_OBJ @@ -31,20 +31,11 @@ G_M33296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov gword ptr [rax+0x10], rcx
- xor ecx, ecx
+ cmp gword ptr [rax+0x10], 0 + je SHORT G_M33296_IG05 + ;; size=41 bbWeight=1.00 PerfScore 6.75 +G_M33296_IG03: ; bbWeight=5.60, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- ;; size=36 bbWeight=1 PerfScore 3.00 -G_M33296_IG03: ; bbWeight=0.87, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov edx, ecx - cmp gword ptr [rax+8*rdx+0x10], 0 - je SHORT G_M33296_IG07 - ;; size=10 bbWeight=0.87 PerfScore 3.70 -G_M33296_IG04: ; bbWeight=4.87, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp ecx, 1 - jl SHORT G_M33296_IG03 - ;; size=7 bbWeight=4.87 PerfScore 7.30 -G_M33296_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x20], rax ; gcr arg write xor rcx, rcx @@ -82,13 +73,13 @@ G_M33296_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rbx] nop
- ;; size=106 bbWeight=1 PerfScore 14.25 -G_M33296_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=106 bbWeight=5.60 PerfScore 79.77 +G_M33296_IG04: ; bbWeight=5.60, epilog, nogc, extend
add rsp, 48 pop rbx ret
- ;; size=6 bbWeight=1 PerfScore 1.75 -G_M33296_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=5.60 PerfScore 9.80 +G_M33296_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov ecx, 0x1875 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -102,7 +93,7 @@ G_M33296_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 5, PerfScore 31.25, instruction count 43, allocated bytes for code 200 (MethodHash=76a17def) for method Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping:.cctor() (FullOpts)
+; Total bytes of code 188, prolog size 5, PerfScore 97.57, instruction count 38, allocated bytes for code 188 (MethodHash=76a17def) for method Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping:.cctor() (FullOpts)
; ============================================================ Unwind Info:

-15 (-5.84%) : 97819.dasm - System.Linq.Enumerable+WhereSelectListIterator2[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,40 +8,43 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 15, 14.50) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]> -; V01 loc0 [V01,T11] ( 3, 2.50) int -> rcx
+; V00 this [V00,T00] ( 15, 10 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]> +; V01 loc0 [V01,T14] ( 3, 2.50) int -> rcx
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 2, 16 ) long -> rdx "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rdx "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 3, 4.50) ref -> rbp "field V02.key (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T07] ( 3, 4.50) ref -> r14 "field V02.value (fldOffset=0x8)" P-INDEP -; V09 tmp6 [V09 ] ( 6, 15 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]> -; V10 tmp7 [V10,T02] ( 3, 12 ) ref -> rax "argument with side effect" -; V11 tmp8 [V11,T10] ( 3, 3 ) ref -> rax single-def "argument with side effect" -; V12 cse0 [V12,T05] ( 2, 5 ) long -> rsi hoist "CSE - aggressive" -; V13 cse1 [V13,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V14 rat0 [V14,T08] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" -; V15 rat1 [V15,T09] ( 3, 4 ) long -> rsi "runtime lookup" -; V16 rat2 [V16,T04] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V07 tmp4 [V07,T08] ( 3, 1.50) ref -> rdi "field V02.key (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T09] ( 3, 1.50) ref -> rbp "field V02.value (fldOffset=0x8)" P-INDEP +; V09 tmp6 [V09 ] ( 6, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]> +; V10 tmp7 [V10,T04] ( 3, 3 ) ref -> rax "argument with side effect" +; V11 tmp8 [V11,T13] ( 3, 3 ) ref -> rax single-def "argument with side effect" +; V12 cse0 [V12,T15] ( 2, 2 ) long -> rsi hoist "CSE - aggressive" +; V13 rat0 [V13,T10] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" +; V14 rat1 [V14,T11] ( 3, 4 ) long -> rsi "runtime lookup" +; V15 rat2 [V15,T07] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" +;* V16 rat3 [V16,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V17 rat4 [V17,T12] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V18 rat5 [V18,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V19 rat6 [V19,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V20 rat7 [V20,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M14174_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 64
+ sub rsp, 56
xor eax, eax
+ mov qword ptr [rsp+0x20], rax
mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax - mov qword ptr [rsp+0x38], rcx
+ mov qword ptr [rsp+0x30], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=30 bbWeight=1 PerfScore 8.75
+ ;; size=28 bbWeight=1 PerfScore 7.75
G_M14174_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x14] cmp ecx, 1 @@ -55,17 +58,15 @@ G_M14174_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M14174_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx]
- lea rsi, bword ptr [rbx+0x30] - ; byrRegs +[rsi] - mov rdx, rsi
+ lea rdx, bword ptr [rbx+0x30]
; byrRegs +[rdx] cmp dword ptr [rcx], ecx call [System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this] ; gcrRegs -[rcx]
- ; byrRegs -[rdx rsi]
+ ; byrRegs -[rdx]
; gcr arg pop 0 mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M14174_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, qword ptr [rbx] mov rdx, qword ptr [rcx+0x30] @@ -84,23 +85,18 @@ G_M14174_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rsi, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M14174_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [rbx+0x30] - ; byrRegs +[rcx] - mov rdi, rcx - ; byrRegs +[rdi]
jmp SHORT G_M14174_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M14174_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; byrRegs -[rcx] - mov rbp, gword ptr [rbx+0x40]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M14174_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x40] + ; gcrRegs +[rdi] + mov rbp, gword ptr [rbx+0x48]
; gcrRegs +[rbp]
- mov r14, gword ptr [rbx+0x48] - ; gcrRegs +[r14]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
+ mov gword ptr [rsp+0x20], rdi
mov gword ptr [rsp+0x28], rbp
- mov gword ptr [rsp+0x30], r14 - lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] call [rax+0x18]<unknown method> @@ -108,49 +104,47 @@ G_M14174_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, ; gcr arg pop 0 test eax, eax jne SHORT G_M14174_IG14
- ;; size=38 bbWeight=2 PerfScore 29.50 -G_M14174_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rbp r14]
+ ;; size=38 bbWeight=0.50 PerfScore 7.38 +G_M14174_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp rdi]
mov rdx, rsi
- mov rcx, rdi
+ lea rcx, bword ptr [rbx+0x30]
; byrRegs +[rcx] call [System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:MoveNext():ubyte:this] ; byrRegs -[rcx] ; gcr arg pop 0 test eax, eax jne SHORT G_M14174_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M14174_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M14174_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdx, rdx ; gcrRegs +[rdx] mov gword ptr [rbx+0x08], rdx mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M14174_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M14174_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 56
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M14174_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbp r14]
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M14174_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbp rdi]
mov rax, gword ptr [rbx+0x28] ; gcrRegs +[rax]
+ mov gword ptr [rsp+0x20], rdi
mov gword ptr [rsp+0x28], rbp
- mov gword ptr [rsp+0x30], r14 - lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] call [rax+0x18]<unknown method>
- ; gcrRegs -[rcx rbp r14]
+ ; gcrRegs -[rcx rbp rdi]
; gcr arg pop 0 lea rcx, bword ptr [rbx+0x08] ; byrRegs +[rcx] @@ -162,16 +156,15 @@ G_M14174_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=402 mov eax, 1 ;; size=43 bbWeight=0.50 PerfScore 5.75 G_M14174_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 56
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 257, prolog size 27, PerfScore 91.65, instruction count 79, allocated bytes for code 257 (MethodHash=d793c8a1) for method System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 242, prolog size 25, PerfScore 52.31, instruction count 73, allocated bytes for code 242 (MethodHash=d793c8a1) for method System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -179,14 +172,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38 + 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)

-7 (-5.79%) : 77731.dasm - System.SpanHelpers:Fillint (Tier1-OSR)

@@ -10,23 +10,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def -;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref single-def -;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def -;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref -; V04 loc1 [V04,T04] ( 1, 1 ) int -> [rsp+0xE4] ld-addr-op tier0-frame -; V05 loc2 [V05,T05] ( 5,218.07) simd32 -> [rsp+0xB8] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> -; V06 loc3 [V06,T01] ( 4,217.07) byref -> rax -; V07 loc4 [V07,T03] ( 2, 29.27) long -> [rsp+0xA8] tier0-frame -; V08 loc5 [V08,T02] ( 1,100 ) long -> [rsp+0xA0] tier0-frame -; V09 loc6 [V09,T00] ( 6,502.44) long -> [rsp+0x98] tier0-frame -;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> -;* V11 loc8 [V11 ] ( 0, 0 ) long -> zero-ref -;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "dup spill" -;* V14 tmp2 [V14 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[uint]> -;* V15 tmp3 [V15 ] ( 0, 0 ) simd32 -> zero-ref -;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def +;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref single-def +;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def +;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref +; V04 loc1 [V04,T04] ( 1, 1 ) int -> [rsp+0xE4] ld-addr-op tier0-frame +; V05 loc2 [V05,T05] ( 7, 418.07) simd32 -> [rsp+0xB8] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> +; V06 loc3 [V06,T01] ( 6, 417.07) byref -> rax +; V07 loc4 [V07,T03] ( 2, 29.27) long -> [rsp+0xA8] tier0-frame +; V08 loc5 [V08,T02] ( 2, 200 ) long -> [rsp+0xA0] tier0-frame +; V09 loc6 [V09,T00] ( 11,1002.44) long -> [rsp+0x98] tier0-frame +;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> +;* V11 loc8 [V11 ] ( 0, 0 ) long -> zero-ref +;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "dup spill" +;* V14 tmp2 [V14 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[uint]> +;* V15 tmp3 [V15 ] ( 0, 0 ) simd32 -> zero-ref +;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -43,34 +43,35 @@ G_M11887_IG02: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, b add rcx, 64 mov rdx, qword ptr [rsp+0xA0] cmp rcx, rdx
- mov qword ptr [rsp+0xA0], rdx - jb SHORT G_M11887_IG06 - ;; size=53 bbWeight=100 PerfScore 1250.00 -G_M11887_IG03: ; bbWeight=14.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jae SHORT G_M11887_IG04 + ;; size=45 bbWeight=100 PerfScore 1150.00 +G_M11887_IG03: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + vmovups ymmword ptr [rax+rcx], ymm0 + vmovups ymmword ptr [rax+rcx+0x20], ymm0 + add rcx, 64 + cmp rcx, rdx + jb SHORT G_M11887_IG03 + ;; size=20 bbWeight=100 PerfScore 550.00 +G_M11887_IG04: ; bbWeight=14.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
mov rdx, qword ptr [rsp+0xA8] test dl, 32 jne SHORT G_M11887_IG07 ;; size=13 bbWeight=14.63 PerfScore 32.93
-G_M11887_IG04: ; bbWeight=14.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M11887_IG05: ; bbWeight=14.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
vmovups ymmword ptr [rax+rdx-0x20], ymm0 ;; size=6 bbWeight=14.63 PerfScore 29.27
-G_M11887_IG05: ; bbWeight=14.63, epilog, nogc, extend
+G_M11887_IG06: ; bbWeight=14.63, epilog, nogc, extend
vzeroupper add rsp, 296 pop rbp ret ;; size=12 bbWeight=14.63 PerfScore 40.24
-G_M11887_IG06: ; bbWeight=50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - mov qword ptr [rsp+0x98], rcx - vmovups ymmword ptr [rsp+0xB8], ymm0 - jmp SHORT G_M11887_IG02 - ;; size=19 bbWeight=50 PerfScore 200.00 -G_M11887_IG07: ; bbWeight=2.44, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M11887_IG07: ; bbWeight=2.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz
vmovups ymmword ptr [rax+rcx], ymm0
- jmp SHORT G_M11887_IG04
+ jmp SHORT G_M11887_IG05
;; size=7 bbWeight=2.44 PerfScore 9.76
-; Total bytes of code 121, prolog size 11, PerfScore 1862.20, instruction count 24, allocated bytes for code 121 (MethodHash=2dc3d190) for method System.SpanHelpers:Fill[int](byref,ulong,int) (Tier1-OSR)
+; Total bytes of code 114, prolog size 11, PerfScore 2112.20, instruction count 25, allocated bytes for code 114 (MethodHash=2dc3d190) for method System.SpanHelpers:Fill[int](byref,ulong,int) (Tier1-OSR)
; ============================================================ Unwind Info:

+48 (+75.00%) : 56686.dasm - System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)

@@ -9,11 +9,11 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.03) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V00 this [V00,T01] ( 6, 5.07) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 4, 2.05) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> -; V04 tmp2 [V04,T00] ( 4, 6.13) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V03 tmp1 [V03,T02] ( 8, 5.10) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> +; V04 tmp2 [V04,T00] ( 8, 12.25) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; ; Lcl frame size = 32 @@ -28,24 +28,34 @@ G_M18211_IG02: ; bbWeight=1.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x14] cmp eax, dword ptr [rcx+0x18]
- jl SHORT G_M18211_IG07
+ jl SHORT G_M18211_IG04
;; size=12 bbWeight=1.02 PerfScore 8.14
-G_M18211_IG03: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M18211_IG03: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] xor rdx, rdx ; gcrRegs +[rdx]
- ;; size=2 bbWeight=1.01 PerfScore 0.25 -G_M18211_IG04: ; bbWeight=1.02, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M18211_IG05 + ;; size=4 bbWeight=1.01 PerfScore 2.26 +G_M18211_IG04: ; bbWeight=0.01, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + ;; size=9 bbWeight=0.01 PerfScore 0.04 +G_M18211_IG05: ; bbWeight=1.02, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
test rdx, rdx
- jne SHORT G_M18211_IG06
+ jne SHORT G_M18211_IG07
;; size=5 bbWeight=1.02 PerfScore 1.27
-G_M18211_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M18211_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx rbx] add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-G_M18211_IG06: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18211_IG07: ; bbWeight=1.02, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdx rbx] mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] @@ -54,19 +64,44 @@ G_M18211_IG06: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp SHORT G_M18211_IG02
+ ;; size=18 bbWeight=1.02 PerfScore 8.39 +G_M18211_IG08: ; bbWeight=1.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x18] + ; gcrRegs +[rcx] + mov eax, dword ptr [rcx+0x14] + cmp eax, dword ptr [rcx+0x18] + jl SHORT G_M18211_IG12 + ;; size=12 bbWeight=1.02 PerfScore 8.14 +G_M18211_IG09: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=1.01 PerfScore 0.25 +G_M18211_IG10: ; bbWeight=1.02, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M18211_IG06 + ;; size=5 bbWeight=1.02 PerfScore 1.27 +G_M18211_IG11: ; bbWeight=0.02, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x10] + ; gcrRegs +[rcx] + mov r8d, 1 + cmp dword ptr [rcx], ecx + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + jmp SHORT G_M18211_IG08
;; size=20 bbWeight=0.02 PerfScore 0.18
-G_M18211_IG07: ; bbWeight=0.01, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M18211_IG12: ; bbWeight=0.01, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- jmp SHORT G_M18211_IG04
+ jmp SHORT G_M18211_IG10
;; size=11 bbWeight=0.01 PerfScore 0.06
-; Total bytes of code 64, prolog size 5, PerfScore 13.17, instruction count 21, allocated bytes for code 64 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
+; Total bytes of code 112, prolog size 5, PerfScore 33.27, instruction count 35, allocated bytes for code 112 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
; ============================================================ Unwind Info:

+48 (+75.00%) : 51152.dasm - System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)

@@ -9,11 +9,11 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.02) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V00 this [V00,T01] ( 6, 5.04) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 4, 2.03) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> -; V04 tmp2 [V04,T00] ( 4, 6.08) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V03 tmp1 [V03,T02] ( 8, 5.06) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> +; V04 tmp2 [V04,T00] ( 8, 12.17) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; ; Lcl frame size = 32 @@ -28,34 +28,35 @@ G_M18211_IG02: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x14] cmp eax, dword ptr [rcx+0x18]
- jl SHORT G_M18211_IG06
+ jl SHORT G_M18211_IG04
;; size=12 bbWeight=1.01 PerfScore 8.08
-G_M18211_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M18211_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] xor rdx, rdx ; gcrRegs +[rdx]
- ;; size=2 bbWeight=1.00 PerfScore 0.25 -G_M18211_IG04: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - test rdx, rdx - jne SHORT G_M18211_IG07 - ;; size=5 bbWeight=1.01 PerfScore 1.26 -G_M18211_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdx rbx] - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=1 PerfScore 1.75 -G_M18211_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rcx rbx]
+ jmp SHORT G_M18211_IG05 + ;; size=4 bbWeight=1.00 PerfScore 2.25 +G_M18211_IG04: ; bbWeight=0.01, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] +[rcx]
call [<unknown method>] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- jmp SHORT G_M18211_IG04 - ;; size=11 bbWeight=0.01 PerfScore 0.06 -G_M18211_IG07: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.01 PerfScore 0.03 +G_M18211_IG05: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ test rdx, rdx + jne SHORT G_M18211_IG07 + ;; size=5 bbWeight=1.01 PerfScore 1.26 +G_M18211_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rdx rbx] + add rsp, 32 + pop rbx + ret + ;; size=6 bbWeight=1 PerfScore 1.75 +G_M18211_IG07: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdx rbx]
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] mov r8d, 1 @@ -63,10 +64,44 @@ G_M18211_IG07: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp SHORT G_M18211_IG02
+ ;; size=18 bbWeight=1.01 PerfScore 8.34 +G_M18211_IG08: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x18] + ; gcrRegs +[rcx] + mov eax, dword ptr [rcx+0x14] + cmp eax, dword ptr [rcx+0x18] + jl SHORT G_M18211_IG12 + ;; size=12 bbWeight=1.01 PerfScore 8.08 +G_M18211_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=1.00 PerfScore 0.25 +G_M18211_IG10: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M18211_IG06 + ;; size=5 bbWeight=1.01 PerfScore 1.26 +G_M18211_IG11: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x10] + ; gcrRegs +[rcx] + mov r8d, 1 + cmp dword ptr [rcx], ecx + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + jmp SHORT G_M18211_IG08
;; size=20 bbWeight=0.01 PerfScore 0.11
+G_M18211_IG12: ; bbWeight=0.01, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + jmp SHORT G_M18211_IG10 + ;; size=11 bbWeight=0.01 PerfScore 0.06
-; Total bytes of code 64, prolog size 5, PerfScore 13.03, instruction count 21, allocated bytes for code 64 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
+; Total bytes of code 112, prolog size 5, PerfScore 32.99, instruction count 35, allocated bytes for code 112 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
; ============================================================ Unwind Info:

+22 (+91.67%) : 98393.dasm - NLog.Internal.StringBuilderExt:CalculateDigitCount(uint):int (FullOpts)

@@ -9,16 +9,22 @@ ; ; V00 arg0 [V00,T02] ( 3, 3 ) int -> rcx single-def ; V01 loc0 [V01,T01] ( 4, 18 ) int -> rax
-; V02 loc1 [V02,T00] ( 4, 25 ) int -> rcx
+; V02 loc1 [V02,T00] ( 7, 28 ) int -> rcx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 G_M27886_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M27886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor eax, eax - ;; size=2 bbWeight=1 PerfScore 0.25
+G_M27886_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov eax, 0xD1FFAB1E + mov ecx, ecx + imul rcx, rax + shr rcx, 35 + mov eax, 1 + test ecx, ecx + je SHORT G_M27886_IG04 + ;; size=24 bbWeight=1 PerfScore 4.50
G_M27886_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov edx, 0xD1FFAB1E mov ecx, ecx @@ -32,7 +38,7 @@ G_M27886_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 24, prolog size 0, PerfScore 37.25, instruction count 9, allocated bytes for code 24 (MethodHash=caae9311) for method NLog.Internal.StringBuilderExt:CalculateDigitCount(uint):int (FullOpts)
+; Total bytes of code 46, prolog size 0, PerfScore 41.50, instruction count 15, allocated bytes for code 46 (MethodHash=caae9311) for method NLog.Internal.StringBuilderExt:CalculateDigitCount(uint):int (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-32 (-10.63%) : 2364.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)

@@ -8,32 +8,30 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 8, 13.92) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.PortableThreadPool> -; V01 loc0 [V01,T03] ( 3, 9.92) ref -> rbx class-hnd exact single-def <<unknown class>> -; V02 loc1 [V02,T01] ( 5, 32.68) int -> rsi
+; V00 this [V00,T00] ( 8, 7 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.PortableThreadPool> +; V01 loc0 [V01,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def <<unknown class>> +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 47.52) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T02] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" <<unknown class>>
; V06 tmp2 [V06,T07] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp3 [V07,T05] ( 4, 8 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Threading.LowLevelLock> -; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" -; V09 cse0 [V09,T04] ( 2, 8.92) long -> rdi hoist "CSE - aggressive"
+; V07 tmp3 [V07,T01] ( 4, 8 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Threading.LowLevelLock> +; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" +; V09 cse0 [V09,T05] ( 2, 2 ) long -> rcx "CSE - aggressive"
; ; Lcl frame size = 48 G_M34740_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48
- lea rbp, [rsp+0x50] - mov qword ptr [rbp-0x30], rsp
+ lea rbp, [rsp+0x40] + mov qword ptr [rbp-0x20], rsp
mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=23 bbWeight=1 PerfScore 7.75 -G_M34740_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 5.75 +G_M34740_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] mov rbx, gword ptr [rcx+0x18] ; gcrRegs +[rbx] @@ -55,7 +53,7 @@ G_M34740_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp gword ptr [rcx+0x10], 0
- jne SHORT G_M34740_IG07
+ jne SHORT G_M34740_IG05
mov rcx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[rcx] mov edx, 1 @@ -64,37 +62,25 @@ G_M34740_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- xor esi, esi - mov rdi, 0xD1FFAB1E ; <unknown class> - ;; size=46 bbWeight=1 PerfScore 7.25 -G_M34740_IG04: ; bbWeight=7.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rcx, rdi
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov rsi, rax + ; gcrRegs +[rsi]
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, qword ptr [rcx+0x48]
- mov rcx, r14
+ mov rcx, rsi
call [<unknown method>] ; gcrRegs -[rax rcx] ; gcr arg pop 0
- mov ecx, esi - lea rcx, bword ptr [rbx+8*rcx+0x10]
+ lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
- mov rdx, r14
+ mov rdx, rsi
; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
+ ; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
- inc esi - test esi, esi - jle SHORT G_M34740_IG04 - ;; size=49 bbWeight=7.92 PerfScore 93.06 -G_M34740_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] lea rcx, bword ptr [rcx+0x10] @@ -105,12 +91,12 @@ G_M34740_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M34740_IG07 - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M34740_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M34740_IG05 + ;; size=99 bbWeight=1 PerfScore 21.00 +G_M34740_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M34740_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34740_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x18] @@ -121,78 +107,68 @@ G_M34740_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 nop ;; size=17 bbWeight=1 PerfScore 9.25
-G_M34740_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M34740_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.75 -G_M34740_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=8 bbWeight=1 PerfScore 2.75 +G_M34740_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50] - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M34740_IG10: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V00 V02}
+ lea rbp, [rbp+0x40] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34740_IG08: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V00}
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- lea rax, G_M34740_IG06
+ lea rax, G_M34740_IG04
;; size=22 bbWeight=0 PerfScore 0.00
-G_M34740_IG11: ; bbWeight=0, funclet epilog, nogc, extend
+G_M34740_IG09: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00 -G_M34740_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34740_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50] - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M34740_IG13: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rbp, [rbp+0x40] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34740_IG11: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x18] cmp dword ptr [rcx], ecx
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
call [System.Threading.LowLevelLock:Release():this] ; gcrRegs -[rcx] ; gcr arg pop 0 nop ;; size=17 bbWeight=0 PerfScore 0.00
-G_M34740_IG14: ; bbWeight=0, funclet epilog, nogc, extend
+G_M34740_IG12: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 301, prolog size 23, PerfScore 138.81, instruction count 99, allocated bytes for code 301 (MethodHash=d1ba784b) for method System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
+; Total bytes of code 269, prolog size 20, PerfScore 51.75, instruction count 81, allocated bytes for code 269 (MethodHash=d1ba784b) for method System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
; ============================================================ Unwind Info: @@ -200,51 +176,45 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
...

-15 (-7.61%) : 8727.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,32 +8,36 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rcx -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> rbp class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rcx +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> rdi class-hnd <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rdx "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rdx "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> rsi hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> rsi "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> rsi hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> rsi "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rdi push rsi
- push rbp
push rbx
- sub rsp, 40 - mov qword ptr [rsp+0x20], rcx
+ sub rsp, 48 + mov qword ptr [rsp+0x28], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x14] cmp ecx, 1 @@ -42,22 +46,20 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp ecx, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx]
- lea rsi, bword ptr [rbx+0x28] - ; byrRegs +[rsi] - mov rdx, rsi
+ lea rdx, bword ptr [rbx+0x28]
; byrRegs +[rdx] cmp dword ptr [rcx], ecx call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rcx]
- ; byrRegs -[rdx rsi]
+ ; byrRegs -[rdx]
; gcr arg pop 0 mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, qword ptr [rbx] mov rdx, qword ptr [rcx+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rsi, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [rbx+0x28] - ; byrRegs +[rcx] - mov rdi, rcx - ; byrRegs +[rdi]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; byrRegs -[rcx] - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x30] + ; gcrRegs +[rdi]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rdx, rbp
+ mov rdx, rdi
; gcrRegs +[rdx] mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] @@ -97,58 +94,55 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, ; gcr arg pop 0 test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rbp]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi]
mov rdx, rsi
- mov rcx, rdi
+ lea rcx, bword ptr [rbx+0x28]
; byrRegs +[rcx] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rcx] ; gcr arg pop 0 test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbp]
+ ;; size=8 bbWeight=0.50 PerfScore 1.38 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdi]
lea rcx, bword ptr [rbx+0x08] ; byrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, rdi
; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbp]
+ ; gcrRegs -[rdx rdi]
; byrRegs -[rcx] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 197, prolog size 13, PerfScore 74.65, instruction count 64, allocated bytes for code 197 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 182, prolog size 12, PerfScore 41.68, instruction count 58, allocated bytes for code 182 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -156,13 +150,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)

-4 (-7.55%) : 17832.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)

@@ -9,21 +9,21 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Struct.SpanWrapper>
-; V01 arg1 [V01,T03] ( 4, 8 ) byref -> rdx ld-addr-op single-def -; V02 loc0 [V02,T04] ( 4, 9 ) int -> rax
+; V01 arg1 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def +; V02 loc0 [V02,T05] ( 5, 9.25) int -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.ReadOnlySpan`1+Enumerator[int]> ;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1+Enumerator[int]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[int]> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-;* V09 tmp4 [V09,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp4 [V09,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 3, 20 ) int -> r8 "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 3 ) byref -> rcx single-def "V03.[000..008)" -; V14 tmp9 [V14,T02] ( 3, 11 ) int -> rdx single-def "V03.[008..012)" -; V15 tmp10 [V15,T01] ( 5, 17 ) int -> r8 "V03.[016..020)"
+; V13 tmp8 [V13,T06] ( 3, 3.25) byref -> rcx single-def "V03.[000..008)" +; V14 tmp9 [V14,T03] ( 3, 10 ) int -> rdx single-def "V03.[008..012)" +; V15 tmp10 [V15,T01] ( 4, 14.50) int -> r8 "V03.[016..020)"
; V16 tmp11 [V16,T07] ( 2, 2 ) byref -> rcx single-def "V06.[000..008)" ; V17 tmp12 [V17,T08] ( 2, 2 ) int -> rdx single-def "V06.[008..012)" ;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[016..020)" @@ -40,35 +40,39 @@ G_M19652_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byr ; byrRegs +[rcx] mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r8d, -1
jmp SHORT G_M19652_IG04
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M19652_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz - cmp r8d, edx - jae SHORT G_M19652_IG07
+ ;; size=10 bbWeight=1 PerfScore 6.25 +G_M19652_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov eax, dword ptr [rcx] + jmp SHORT G_M19652_IG07 + ;; size=4 bbWeight=0.25 PerfScore 1.00 +G_M19652_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + test edx, edx + jle SHORT G_M19652_IG09 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M19652_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + xor r8d, r8d + jmp SHORT G_M19652_IG03 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M19652_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
mov r10d, r8d add eax, dword ptr [rcx+4*r10]
- ;; size=12 bbWeight=2 PerfScore 9.00 -G_M19652_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=7 bbWeight=2 PerfScore 6.50 +G_M19652_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
inc r8d cmp r8d, edx
- jge SHORT G_M19652_IG06
+ jge SHORT G_M19652_IG09
;; size=8 bbWeight=8 PerfScore 12.00
-G_M19652_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz - jmp SHORT G_M19652_IG03
+G_M19652_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + jmp SHORT G_M19652_IG06
;; size=2 bbWeight=4 PerfScore 8.00
-G_M19652_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19652_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx] add rsp, 40 ret ;; size=5 bbWeight=4 PerfScore 5.00
-G_M19652_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 4, PerfScore 40.75, instruction count 18, allocated bytes for code 53 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 41.38, instruction count 19, allocated bytes for code 49 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
; ============================================================ Unwind Info:

+32 (+82.05%) : 26710.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,53 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> rdx
+; V00 this [V00,T02] ( 11, 25.50) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> rdx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> rdx "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> rcx single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> rcx single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> rdx "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> rcx "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> rcx "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> r8 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> rax "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> r8 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> rax "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 G_M17963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M17963_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M17963_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x10] ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x20] cmp edx, r8d jge SHORT G_M17963_IG04
- ;; size=13 bbWeight=8 PerfScore 42.00 -G_M17963_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M17963_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, rax ; gcrRegs +[rcx]
- jmp SHORT G_M17963_IG02 - ;; size=5 bbWeight=4 PerfScore 9.00 -G_M17963_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M17963_IG06 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M17963_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edx, r8d
- jle SHORT G_M17963_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M17963_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M17963_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M17963_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
sub edx, r8d dec edx mov rcx, gword ptr [rcx+0x18]
- jmp SHORT G_M17963_IG02
+ ;; size=9 bbWeight=0.50 PerfScore 1.25 +G_M17963_IG06: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+0x10] + ; gcrRegs +[rax] + mov r8d, dword ptr [rax+0x20] + cmp edx, r8d + jge SHORT G_M17963_IG08 + ;; size=13 bbWeight=8 PerfScore 42.00 +G_M17963_IG07: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M17963_IG06 + ;; size=5 bbWeight=4 PerfScore 9.00 +G_M17963_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp edx, r8d + jle SHORT G_M17963_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M17963_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + sub edx, r8d + dec edx + mov rcx, gword ptr [rcx+0x18] + jmp SHORT G_M17963_IG06
;; size=11 bbWeight=4 PerfScore 18.00
-G_M17963_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M17963_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rcx+0x08] ; byrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M17963_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M17963_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 39, prolog size 0, PerfScore 80.50, instruction count 14, allocated bytes for code 39 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 71, prolog size 0, PerfScore 89.38, instruction count 25, allocated bytes for code 71 (MethodHash=8272b9d4) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info:

+32 (+82.05%) : 24876.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,53 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[int]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> rdx
+; V00 this [V00,T02] ( 11, 25.50) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableSortedSet`1+Node[int]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> rdx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> rdx "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> rcx single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> rcx single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> rdx "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> rcx "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> rcx "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> r8 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> rax "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> r8 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> rax "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 G_M50558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M50558_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M50558_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x08] ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x1C] cmp edx, r8d jge SHORT G_M50558_IG04
- ;; size=13 bbWeight=8 PerfScore 42.00 -G_M50558_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M50558_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, rax ; gcrRegs +[rcx]
- jmp SHORT G_M50558_IG02 - ;; size=5 bbWeight=4 PerfScore 9.00 -G_M50558_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M50558_IG06 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M50558_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edx, r8d
- jle SHORT G_M50558_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M50558_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M50558_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M50558_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
sub edx, r8d dec edx mov rcx, gword ptr [rcx+0x10]
- jmp SHORT G_M50558_IG02
+ ;; size=9 bbWeight=0.50 PerfScore 1.25 +G_M50558_IG06: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+0x08] + ; gcrRegs +[rax] + mov r8d, dword ptr [rax+0x1C] + cmp edx, r8d + jge SHORT G_M50558_IG08 + ;; size=13 bbWeight=8 PerfScore 42.00 +G_M50558_IG07: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M50558_IG06 + ;; size=5 bbWeight=4 PerfScore 9.00 +G_M50558_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp edx, r8d + jle SHORT G_M50558_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M50558_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + sub edx, r8d + dec edx + mov rcx, gword ptr [rcx+0x10] + jmp SHORT G_M50558_IG06
;; size=11 bbWeight=4 PerfScore 18.00
-G_M50558_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M50558_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rcx+0x18] ; byrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M50558_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M50558_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 39, prolog size 0, PerfScore 80.50, instruction count 14, allocated bytes for code 39 (MethodHash=b9f63a81) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 71, prolog size 0, PerfScore 89.38, instruction count 25, allocated bytes for code 71 (MethodHash=b9f63a81) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info:

+34 (+125.93%) : 9512.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> r8 -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -20,21 +20,43 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=5 bbWeight=1 PerfScore 0.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test r8d, r8d
- je SHORT G_M22426_IG04 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, r8d mov eax, r8d mov r8d, edx test r8d, r8d
- jne SHORT G_M22426_IG03 - ;; size=16 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=21 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, r8d + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=11 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, r8d + mov r8d, ecx + jmp SHORT G_M22426_IG03 + ;; size=10 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 27, prolog size 5, PerfScore 110.75, instruction count 11, allocated bytes for code 27 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 61, prolog size 5, PerfScore 144.75, instruction count 25, allocated bytes for code 61 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-20 (-4.43%) : 29089.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -12,35 +12,35 @@ ; V00 this [V00,T00] ( 10, 10 ) ref -> rbx this class-hnd single-def <System.Reflection.RuntimeParameterInfo> ; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Signature> ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> rbp ld-addr-op single-def
-; V03 arg3 [V03,T02] ( 5, 5 ) int -> r14 single-def
+; V03 arg3 [V03,T03] ( 5, 5 ) int -> r14 single-def
; V04 arg4 [V04,T17] ( 1, 1 ) int -> [rsp+0x90] single-def ; V05 arg5 [V05,T18] ( 1, 1 ) int -> [rsp+0x98] single-def
-; V06 arg6 [V06,T12] ( 2, 2 ) ref -> r13 class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T13] ( 2, 2 ) ref -> r13 class-hnd single-def <System.Reflection.MemberInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
+; V08 tmp1 [V08,T04] ( 3, 6 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T09] ( 2, 4 ) int -> [rsp+0x24] spill-single-def "impImportAndPushBox"
-; V10 tmp3 [V10,T10] ( 4, 2 ) int -> r10
+; V10 tmp3 [V10,T11] ( 4, 2 ) int -> rax
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T13] ( 2, 2 ) int -> rax -; V14 tmp7 [V14,T04] ( 3, 6.00) ref -> rax class-hnd exact single-def "dup spill" <int[]>
+; V13 tmp6 [V13,T14] ( 2, 2 ) int -> rax +; V14 tmp7 [V14,T02] ( 3, 6.00) ref -> rax class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T14] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
; V18 tmp11 [V18,T08] ( 2, 4 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T11] ( 3, 2.00) ubyte -> r10 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5.00) int -> rcx "Inline stloc first use temp"
+; V21 tmp14 [V21,T12] ( 3, 2.00) ubyte -> rax "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T15] ( 2, 2 ) long -> rcx "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T16] ( 2, 2 ) long -> rcx "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Reflection.MetadataImport>
-; V30 cse0 [V30,T07] ( 4, 4 ) int -> [rsp+0x20] spill-single-def "CSE - aggressive" -; V31 cse1 [V31,T16] ( 2, 2.00) int -> r8 hoist "CSE - moderate"
+; V30 cse0 [V30,T10] ( 2, 2.00) int -> rcx "CSE - aggressive" +; V31 cse1 [V31,T07] ( 4, 4 ) int -> [rsp+0x20] spill-single-def "CSE - aggressive"
; ; Lcl frame size = 40 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 10.25 G_M43134_IG02: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref test r13, r13
- je G_M43134_IG12
+ je G_M43134_IG11
;; size=9 bbWeight=1 PerfScore 1.25 G_M43134_IG03: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport @@ -100,43 +100,36 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 mov r12d, dword ptr [rsp+0x24] ; gcrRegs -[r12] cmp r12d, ecx
- jne G_M43134_IG13
+ jne G_M43134_IG12
;; size=100 bbWeight=1 PerfScore 19.25 G_M43134_IG04: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref ; byrRegs -[rsi rdi] mov r12d, dword ptr [rsp+0x20] test r12d, r12d
- je G_M43134_IG15
+ je G_M43134_IG14
;; size=14 bbWeight=1 PerfScore 2.25
-G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+G_M43134_IG05: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; int[] mov edx, 1 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0 mov dword ptr [rax+0x10], 0xD1FFAB1E
- xor ecx, ecx - mov r8d, r14d - and r8d, 0xD1FFAB1E - ;; size=39 bbWeight=1.00 PerfScore 3.25 -G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs=0020 {rbp}, byref, isz - mov edx, ecx - cmp dword ptr [rax+4*rdx+0x10], r8d - je SHORT G_M43134_IG07 - inc ecx - cmp ecx, 1 - jge G_M43134_IG14 - jmp SHORT G_M43134_IG06 - ;; size=22 bbWeight=1.00 PerfScore 7.75 -G_M43134_IG07: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+ mov ecx, r14d + and ecx, 0xD1FFAB1E + cmp dword ptr [rax+0x10], ecx + je SHORT G_M43134_IG06 + jmp G_M43134_IG13 + ;; size=46 bbWeight=1.00 PerfScore 9.00 +G_M43134_IG06: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- mov r10d, 1 - ;; size=6 bbWeight=1.00 PerfScore 0.25
+ mov eax, 1 + ;; size=5 bbWeight=1.00 PerfScore 0.25 +G_M43134_IG07: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref + test al, al + je G_M43134_IG15 + ;; size=8 bbWeight=1 PerfScore 1.25
G_M43134_IG08: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- test r10b, r10b - je G_M43134_IG16 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M43134_IG09: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov esi, dword ptr [rsp+0x90] mov dword ptr [rbx+0x2C], esi lea rcx, bword ptr [rbx+0x18] @@ -170,12 +163,12 @@ G_M43134_IG09: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx ;; size=79 bbWeight=1 PerfScore 13.25
-G_M43134_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43134_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] ; byrRegs -[rsi rdi] mov gword ptr [rbx+0x20], rcx ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43134_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -187,7 +180,7 @@ G_M43134_IG11: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M43134_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs +[r13 r15] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -199,7 +192,7 @@ G_M43134_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 { ; gcr arg pop 0 jmp G_M43134_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M43134_IG13: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -209,16 +202,16 @@ G_M43134_IG13: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 ; gcr arg pop 0 jmp G_M43134_IG04 ;; size=31 bbWeight=0 PerfScore 0.00
+G_M43134_IG13: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref + xor eax, eax + jmp G_M43134_IG07 + ;; size=7 bbWeight=0 PerfScore 0.00
G_M43134_IG14: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- xor r10d, r10d - jmp G_M43134_IG08 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov eax, 1 + test al, al + jne G_M43134_IG08 + ;; size=13 bbWeight=0 PerfScore 0.00
G_M43134_IG15: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- mov r10d, 1 - test r10b, r10b - jne G_M43134_IG09 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M43134_IG16: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -226,10 +219,10 @@ G_M43134_IG16: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp G_M43134_IG09
+ jmp G_M43134_IG08
;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 451, prolog size 36, PerfScore 65.00, instruction count 107, allocated bytes for code 451 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 431, prolog size 36, PerfScore 63.00, instruction count 102, allocated bytes for code 431 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info:

-20 (-4.43%) : 35150.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)

@@ -12,35 +12,35 @@ ; V00 this [V00,T00] ( 10, 10 ) ref -> rbx this class-hnd single-def <System.Reflection.RuntimeParameterInfo> ; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Signature> ; V02 arg2 [V02,T01] ( 4, 8 ) byref -> rbp ld-addr-op single-def
-; V03 arg3 [V03,T02] ( 5, 5 ) int -> r14 single-def
+; V03 arg3 [V03,T03] ( 5, 5 ) int -> r14 single-def
; V04 arg4 [V04,T17] ( 1, 1 ) int -> [rsp+0x90] single-def ; V05 arg5 [V05,T18] ( 1, 1 ) int -> [rsp+0x98] single-def
-; V06 arg6 [V06,T12] ( 2, 2 ) ref -> r13 class-hnd single-def <System.Reflection.MemberInfo>
+; V06 arg6 [V06,T13] ( 2, 2 ) ref -> r13 class-hnd single-def <System.Reflection.MemberInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 6 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
+; V08 tmp1 [V08,T04] ( 3, 6 ) ref -> r12 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataImport>
; V09 tmp2 [V09,T09] ( 2, 4 ) int -> [rsp+0x24] spill-single-def "impImportAndPushBox"
-; V10 tmp3 [V10,T10] ( 4, 2 ) int -> r10
+; V10 tmp3 [V10,T11] ( 4, 2 ) int -> rax
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp6 [V13,T13] ( 2, 2 ) int -> rax -; V14 tmp7 [V14,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "dup spill" <int[]>
+; V13 tmp6 [V13,T14] ( 2, 2 ) int -> rax +; V14 tmp7 [V14,T02] ( 3, 6 ) ref -> rax class-hnd exact single-def "dup spill" <int[]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T14] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
; V18 tmp11 [V18,T08] ( 2, 4 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Reflection.MetadataImport> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T11] ( 3, 2 ) ubyte -> r10 "Inline return value spill temp" -; V22 tmp15 [V22,T05] ( 5, 5 ) int -> rcx "Inline stloc first use temp"
+; V21 tmp14 [V21,T12] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" +;* V22 tmp15 [V22,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref "field V02.m_keepalive (fldOffset=0x0)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "field V02.m_metadataImport2 (fldOffset=0x8)" P-INDEP ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V19.m_keepalive (fldOffset=0x0)" P-INDEP
-; V28 tmp21 [V28,T15] ( 2, 2 ) long -> rcx "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
+; V28 tmp21 [V28,T16] ( 2, 2 ) long -> rcx "field V19.m_metadataImport2 (fldOffset=0x8)" P-INDEP
;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Reflection.MetadataImport> ; V30 cse0 [V30,T07] ( 4, 4 ) int -> [rsp+0x20] spill-single-def "CSE - aggressive"
-; V31 cse1 [V31,T16] ( 2, 2 ) int -> r8 hoist "CSE - moderate"
+; V31 cse1 [V31,T10] ( 2, 2 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -66,7 +66,7 @@ G_M43134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 10.25 G_M43134_IG02: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref test r13, r13
- je G_M43134_IG11
+ je G_M43134_IG10
;; size=9 bbWeight=1 PerfScore 1.25 G_M43134_IG03: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref mov rcx, 0xD1FFAB1E ; System.Reflection.MetadataImport @@ -100,41 +100,34 @@ G_M43134_IG03: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 mov r12d, dword ptr [rsp+0x24] ; gcrRegs -[r12] cmp r12d, ecx
- jne G_M43134_IG12
+ jne G_M43134_IG11
;; size=100 bbWeight=1 PerfScore 19.25
-G_M43134_IG04: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+G_M43134_IG04: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref, isz
; byrRegs -[rsi rdi] mov r12d, dword ptr [rsp+0x20] test r12d, r12d
- je G_M43134_IG14
+ je G_M43134_IG13
mov rcx, 0xD1FFAB1E ; int[] mov edx, 1 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0 mov dword ptr [rax+0x10], 0xD1FFAB1E
- xor ecx, ecx - mov r8d, r14d - and r8d, 0xD1FFAB1E - ;; size=53 bbWeight=1 PerfScore 5.50 -G_M43134_IG05: ; bbWeight=1, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs=0020 {rbp}, byref, isz - mov edx, ecx - cmp dword ptr [rax+4*rdx+0x10], r8d - je SHORT G_M43134_IG06 - inc ecx - cmp ecx, 1 - jge G_M43134_IG13 - jmp SHORT G_M43134_IG05 - ;; size=22 bbWeight=1 PerfScore 7.75 -G_M43134_IG06: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+ mov ecx, r14d + and ecx, 0xD1FFAB1E + cmp dword ptr [rax+0x10], ecx + je SHORT G_M43134_IG05 + jmp G_M43134_IG12 + ;; size=60 bbWeight=1 PerfScore 11.25 +G_M43134_IG05: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- mov r10d, 1 - ;; size=6 bbWeight=1 PerfScore 0.25
+ mov eax, 1 + ;; size=5 bbWeight=1 PerfScore 0.25 +G_M43134_IG06: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref + test al, al + je G_M43134_IG14 + ;; size=8 bbWeight=1 PerfScore 1.25
G_M43134_IG07: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- test r10b, r10b - je G_M43134_IG15 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M43134_IG08: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov esi, dword ptr [rsp+0x90] mov dword ptr [rbx+0x2C], esi lea rcx, bword ptr [rbx+0x18] @@ -168,12 +161,12 @@ G_M43134_IG08: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx ;; size=79 bbWeight=1 PerfScore 13.25
-G_M43134_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43134_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] ; byrRegs -[rsi rdi] mov gword ptr [rbx+0x20], rcx ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M43134_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -185,7 +178,7 @@ G_M43134_IG10: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M43134_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, gcvars, byref
; gcrRegs +[r13 r15] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -197,7 +190,7 @@ G_M43134_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 { ; gcr arg pop 0 jmp G_M43134_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M43134_IG12: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
+G_M43134_IG11: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -207,16 +200,16 @@ G_M43134_IG12: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 ; gcr arg pop 0 jmp G_M43134_IG04 ;; size=31 bbWeight=0 PerfScore 0.00
+G_M43134_IG12: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref + xor eax, eax + jmp G_M43134_IG06 + ;; size=7 bbWeight=0 PerfScore 0.00
G_M43134_IG13: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- xor r10d, r10d - jmp G_M43134_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00
+ mov eax, 1 + test al, al + jne G_M43134_IG07 + ;; size=13 bbWeight=0 PerfScore 0.00
G_M43134_IG14: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
- mov r10d, 1 - test r10b, r10b - jne G_M43134_IG08 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M43134_IG15: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 {rbp}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -224,10 +217,10 @@ G_M43134_IG15: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0020 call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp G_M43134_IG08
+ jmp G_M43134_IG07
;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 451, prolog size 36, PerfScore 65.00, instruction count 107, allocated bytes for code 451 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
+; Total bytes of code 431, prolog size 36, PerfScore 63.00, instruction count 102, allocated bytes for code 431 (MethodHash=d49d5781) for method System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
; ============================================================ Unwind Info:

-4 (-3.54%) : 32696.dasm - System.SpanHelpers:Fillushort (Tier1-OSR)

@@ -10,22 +10,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def -;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref single-def -;* V02 arg2 [V02 ] ( 0, 0 ) ushort -> zero-ref single-def -;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref -; V04 loc1 [V04,T03] ( 1, 1 ) ushort -> [rsp+0xC4] ld-addr-op tier0-frame -; V05 loc2 [V05,T04] ( 5,201 ) simd32 -> [rsp+0x98] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> -; V06 loc3 [V06,T01] ( 4,200 ) byref -> rax -; V07 loc4 [V07,T05] ( 2, 0 ) long -> [rsp+0x88] tier0-frame -; V08 loc5 [V08,T02] ( 1,100 ) long -> [rsp+0x80] tier0-frame -; V09 loc6 [V09,T00] ( 6,500 ) long -> [rsp+0x78] tier0-frame -;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> -;* V11 loc8 [V11 ] ( 0, 0 ) long -> zero-ref -;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "dup spill" -;* V14 tmp2 [V14 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[ushort]> -;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def +;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref single-def +;* V02 arg2 [V02 ] ( 0, 0 ) ushort -> zero-ref single-def +;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref +; V04 loc1 [V04,T03] ( 1, 1 ) ushort -> [rsp+0xC4] ld-addr-op tier0-frame +; V05 loc2 [V05,T04] ( 7, 401 ) simd32 -> [rsp+0x98] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> +; V06 loc3 [V06,T01] ( 6, 400 ) byref -> rax +; V07 loc4 [V07,T05] ( 2, 0 ) long -> [rsp+0x88] tier0-frame +; V08 loc5 [V08,T02] ( 2, 200 ) long -> [rsp+0x80] tier0-frame +; V09 loc6 [V09,T00] ( 11,1000 ) long -> [rsp+0x78] tier0-frame +;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> +;* V11 loc8 [V11 ] ( 0, 0 ) long -> zero-ref +;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref "dup spill" +;* V14 tmp2 [V14 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[ushort]> +;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -42,31 +42,32 @@ G_M51983_IG02: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, b add rcx, 64 mov rdx, qword ptr [rsp+0x80] cmp rcx, rdx
- mov qword ptr [rsp+0x80], rdx - jb SHORT G_M51983_IG06 - ;; size=50 bbWeight=100 PerfScore 1250.00 -G_M51983_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jae SHORT G_M51983_IG04 + ;; size=42 bbWeight=100 PerfScore 1150.00 +G_M51983_IG03: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + vmovups ymmword ptr [rax+rcx], ymm0 + vmovups ymmword ptr [rax+rcx+0x20], ymm0 + add rcx, 64 + cmp rcx, rdx + jb SHORT G_M51983_IG03 + ;; size=20 bbWeight=100 PerfScore 550.00 +G_M51983_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
mov rdx, qword ptr [rsp+0x88] test dl, 32
- je SHORT G_M51983_IG04
+ je SHORT G_M51983_IG05
vmovups ymmword ptr [rax+rcx], ymm0 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M51983_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M51983_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
vmovups ymmword ptr [rax+rdx-0x20], ymm0 ;; size=6 bbWeight=0 PerfScore 0.00
-G_M51983_IG05: ; bbWeight=0, epilog, nogc, extend
+G_M51983_IG06: ; bbWeight=0, epilog, nogc, extend
vzeroupper add rsp, 264 pop rbp ret ;; size=12 bbWeight=0 PerfScore 0.00
-G_M51983_IG06: ; bbWeight=50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - mov qword ptr [rsp+0x78], rcx - vmovups ymmword ptr [rsp+0x98], ymm0 - jmp SHORT G_M51983_IG02 - ;; size=16 bbWeight=50 PerfScore 200.00
-; Total bytes of code 113, prolog size 11, PerfScore 1750.00, instruction count 23, allocated bytes for code 113 (MethodHash=267434f0) for method System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
+; Total bytes of code 109, prolog size 11, PerfScore 2000.00, instruction count 24, allocated bytes for code 109 (MethodHash=267434f0) for method System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
; ============================================================ Unwind Info:

+45 (+67.16%) : 101080.dasm - System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)

@@ -9,11 +9,11 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V00 this [V00,T01] ( 6, 5.00) ref -> rbx this class-hnd single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 5, 2.00) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> -; V04 tmp2 [V04,T00] ( 4, 6.00) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V03 tmp1 [V03,T02] ( 8, 5.00) ref -> rdx class-hnd "Inline return value spill temp" <System.Object> +; V04 tmp2 [V04,T00] ( 8, 12.00) ref -> rcx class-hnd exact "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
; ; Lcl frame size = 32 @@ -26,32 +26,25 @@ G_M18211_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M18211_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx]
- mov eax, dword ptr [rcx+0x14] - cmp eax, dword ptr [rcx+0x18] - jl SHORT G_M18211_IG04
+ mov edx, dword ptr [rcx+0x14] + cmp edx, dword ptr [rcx+0x18] + jl SHORT G_M18211_IG09
xor rdx, rdx ; gcrRegs +[rdx]
+ ;; size=14 bbWeight=1.00 PerfScore 8.25 +G_M18211_IG03: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx]
test rdx, rdx jne SHORT G_M18211_IG05
- ;; size=19 bbWeight=1.00 PerfScore 9.50 -G_M18211_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rcx rdx rbx]
+ ;; size=5 bbWeight=1 PerfScore 1.25 +G_M18211_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rdx rbx]
add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-G_M18211_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rcx rbx] - call [<unknown method>] - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - test rdx, rdx - je SHORT G_M18211_IG03 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M18211_IG05: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
+G_M18211_IG05: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdx rbx]
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] mov r8d, 1 @@ -59,10 +52,51 @@ G_M18211_IG05: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp SHORT G_M18211_IG02
+ ;; size=18 bbWeight=1.00 PerfScore 8.25 +G_M18211_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x18] + ; gcrRegs +[rcx] + mov eax, dword ptr [rcx+0x14] + cmp eax, dword ptr [rcx+0x18] + jl SHORT G_M18211_IG10 + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=14 bbWeight=1.00 PerfScore 8.25 +G_M18211_IG07: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + test rdx, rdx + je SHORT G_M18211_IG04 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M18211_IG08: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x10] + ; gcrRegs +[rcx] + mov r8d, 1 + cmp dword ptr [rcx], ecx + call [System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + jmp SHORT G_M18211_IG06
;; size=20 bbWeight=0 PerfScore 0.00
+G_M18211_IG09: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + jmp SHORT G_M18211_IG03 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M18211_IG10: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rdx] +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + jmp SHORT G_M18211_IG07 + ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 67, prolog size 5, PerfScore 12.75, instruction count 22, allocated bytes for code 67 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
+; Total bytes of code 112, prolog size 5, PerfScore 30.50, instruction count 35, allocated bytes for code 112 (MethodHash=29cdb8dc) for method System.Threading.ThreadPoolWorkQueueThreadLocals:TransferLocalWork():this (Tier1)
; ============================================================ Unwind Info:

+40 (+68.97%) : 69418.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:DropUnreachableBlocks():ubyte:this (Tier1)

@@ -9,48 +9,65 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> rax -; V02 loc1 [V02,T01] ( 6, 3.50) ref -> rbx class-hnd <<unknown class>>
+; V01 loc0 [V01,T03] ( 4, 2 ) ubyte -> rax +; V02 loc1 [V02,T01] ( 9, 4.17) ref -> rbx class-hnd <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T03] ( 4, 1.50) ref -> rcx "CSE - moderate"
+; V04 cse0 [V04,T02] ( 5, 2.67) ref -> rcx "CSE - aggressive" +; V05 cse1 [V05,T04] ( 4, 1.50) ref -> rsi "CSE - moderate"
; ; Lcl frame size = 0 G_M34343_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rsi
push rbx
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M34343_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx] xor eax, eax mov rbx, gword ptr [rcx+0x20] ; gcrRegs +[rbx]
- cmp gword ptr [rbx+0x18], 0 - jne SHORT G_M34343_IG04 - ;; size=13 bbWeight=1 PerfScore 6.25
+ mov rcx, gword ptr [rbx+0x18] + test rcx, rcx + jne SHORT G_M34343_IG09 + ;; size=15 bbWeight=1 PerfScore 5.50
G_M34343_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rbx] pop rbx
+ pop rsi
ret
- ;; size=2 bbWeight=1 PerfScore 1.50 -G_M34343_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx] - mov rcx, gword ptr [rbx+0x18]
+ ;; size=3 bbWeight=1 PerfScore 2.00 +G_M34343_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
- cmp byte ptr [rcx+0x37], 0 - je SHORT G_M34343_IG07
mov rbx, rcx
- ;; size=13 bbWeight=0.50 PerfScore 3.12 -G_M34343_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx] + ;; size=3 bbWeight=0.33 PerfScore 0.08 +G_M34343_IG05: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] cmp gword ptr [rbx+0x18], 0
- jne SHORT G_M34343_IG04
+ je SHORT G_M34343_IG03 + ;; size=7 bbWeight=0.33 PerfScore 1.33 +G_M34343_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [rbx+0x18] + ; gcrRegs +[rsi] + cmp byte ptr [rsi+0x37], 0 + je SHORT G_M34343_IG11 + mov rbx, rsi + ;; size=13 bbWeight=0.50 PerfScore 3.12 +G_M34343_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + cmp gword ptr [rbx+0x18], 0 + jne SHORT G_M34343_IG06
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M34343_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34343_IG08: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] jmp SHORT G_M34343_IG03 ;; size=2 bbWeight=0.33 PerfScore 0.67
-G_M34343_IG07: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M34343_IG09: ; bbWeight=0.33, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rbx]
+ cmp byte ptr [rcx+0x37], 0 + jne SHORT G_M34343_IG04 + ;; size=6 bbWeight=0.33 PerfScore 1.33 +G_M34343_IG10: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rcx+0x18] ; gcrRegs +[rdx] lea rcx, bword ptr [rbx+0x18] @@ -62,8 +79,20 @@ G_M34343_IG07: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, mov eax, 1 jmp SHORT G_M34343_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
+G_M34343_IG11: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rsi] + mov rdx, gword ptr [rsi+0x18] + ; gcrRegs +[rdx] + lea rcx, bword ptr [rbx+0x18] + ; byrRegs +[rcx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx rsi] + ; byrRegs -[rcx] + mov eax, 1 + jmp SHORT G_M34343_IG07 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 1, PerfScore 14.54, instruction count 19, allocated bytes for code 58 (MethodHash=398e79d8) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:DropUnreachableBlocks():ubyte:this (Tier1)
+; Total bytes of code 98, prolog size 2, PerfScore 18.04, instruction count 32, allocated bytes for code 98 (MethodHash=398e79d8) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:DropUnreachableBlocks():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -71,9 +100,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x02 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+48 (+78.69%) : 73840.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)

@@ -10,10 +10,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 3, 3 ) ref -> rcx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V01 loc0 [V01,T00] ( 6, 22.02) ref -> rcx class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 loc0 [V01,T00] ( 10, 25.35) ref -> rcx class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 4, 15.01) ushort -> rdx "Inline return value spill temp" -; V04 tmp2 [V04,T02] ( 3, 15.01) int -> rdx "Inline stloc first use temp"
+; V03 tmp1 [V03,T01] ( 7, 17.51) ushort -> rdx "Inline return value spill temp" +; V04 tmp2 [V04,T02] ( 6, 17.51) int -> rdx "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; @@ -24,46 +24,63 @@ G_M65070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M65070_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M65070_IG05
+ je SHORT G_M65070_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M65070_IG03: ; bbWeight=5.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M65070_IG03: ; bbWeight=0.83, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x18] ; gcrRegs +[rax] movzx rdx, word ptr [rax+0x0C] lea eax, [rdx-0x02] ; gcrRegs -[rax]
+ xor r8d, r8d
cmp eax, 0x1FFE
- jbe SHORT G_M65070_IG09 - ;; size=18 bbWeight=5.00 PerfScore 28.77 -G_M65070_IG04: ; bbWeight=5.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmovbe edx, r8d
cmp edx, 0x2160
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG08
cmp edx, 0x2161
- je SHORT G_M65070_IG07
+ je SHORT G_M65070_IG08
mov rcx, gword ptr [rcx+0x08] test rcx, rcx
- jne SHORT G_M65070_IG03
+ je SHORT G_M65070_IG06 + ;; size=48 bbWeight=0.83 PerfScore 9.17 +G_M65070_IG04: ; bbWeight=5.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rdx, gword ptr [rcx+0x18] + ; gcrRegs +[rdx] + movzx rdx, word ptr [rdx+0x0C] + ; gcrRegs -[rdx] + lea eax, [rdx-0x02] + cmp eax, 0x1FFE + jbe SHORT G_M65070_IG10 + ;; size=18 bbWeight=5.00 PerfScore 28.77 +G_M65070_IG05: ; bbWeight=5.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp edx, 0x2160 + je SHORT G_M65070_IG08 + cmp edx, 0x2161 + je SHORT G_M65070_IG08 + mov rcx, gword ptr [rcx+0x08] + test rcx, rcx + jne SHORT G_M65070_IG04
;; size=25 bbWeight=5.00 PerfScore 28.77
-G_M65070_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M65070_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25
-G_M65070_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M65070_IG07: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M65070_IG07: ; bbWeight=2.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M65070_IG08: ; bbWeight=4.80, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
- ;; size=5 bbWeight=2.50 PerfScore 0.63 -G_M65070_IG08: ; bbWeight=2.50, epilog, nogc, extend
+ ;; size=5 bbWeight=4.80 PerfScore 1.20 +G_M65070_IG09: ; bbWeight=4.80, epilog, nogc, extend
ret
- ;; size=1 bbWeight=2.50 PerfScore 2.50 -G_M65070_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=4.80 PerfScore 4.80 +G_M65070_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] xor edx, edx
- jmp SHORT G_M65070_IG04
+ jmp SHORT G_M65070_IG05
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 0, PerfScore 63.18, instruction count 20, allocated bytes for code 61 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 109, prolog size 0, PerfScore 75.21, instruction count 33, allocated bytes for code 109 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-15 (-7.61%) : 46373.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -8,32 +8,36 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 13, 12 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> -; V01 loc0 [V01,T09] ( 3, 2.50) int -> rcx -; V02 loc1 [V02,T06] ( 3, 4.50) ref -> rbp class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <System.Linq.Enumerable+WhereListIterator`1[System.__Canon]> +; V01 loc0 [V01,T13] ( 3, 2.50) int -> rcx +; V02 loc1 [V02,T08] ( 3, 1.50) ref -> rdi class-hnd <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 16 ) long -> rdx "spilling helperCall"
+; V04 tmp1 [V04,T02] ( 2, 4 ) long -> rdx "spilling helperCall"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T05] ( 2, 5 ) long -> rsi hoist "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 6 ) byref -> registers hoist multi-def "CSE - aggressive" -; V09 rat0 [V09,T07] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" -; V10 rat1 [V10,T08] ( 3, 4 ) long -> rsi "runtime lookup" -; V11 rat2 [V11,T04] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" -; V12 rat3 [V12,T02] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V07 cse0 [V07,T14] ( 2, 2 ) long -> rsi hoist "CSE - aggressive" +; V08 rat0 [V08,T09] ( 3, 4.40) long -> rcx "Spilling to split statement for tree" +; V09 rat1 [V09,T10] ( 3, 4 ) long -> rsi "runtime lookup" +; V10 rat2 [V10,T07] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" +;* V11 rat3 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat4 [V12,T11] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat5 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V14 rat6 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V15 rat7 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V16 rat8 [V16,T12] ( 3, 3 ) ref -> rax "delegate invoke call" +;* V17 rat9 [V17,T04] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M34024_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rdi push rsi
- push rbp
push rbx
- sub rsp, 40 - mov qword ptr [rsp+0x20], rcx
+ sub rsp, 48 + mov qword ptr [rsp+0x28], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x14] cmp ecx, 1 @@ -42,22 +46,20 @@ G_M34024_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M34024_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp ecx, 2 je SHORT G_M34024_IG05
- jmp G_M34024_IG12 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ jmp SHORT G_M34024_IG12 + ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M34024_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx]
- lea rsi, bword ptr [rbx+0x28] - ; byrRegs +[rsi] - mov rdx, rsi
+ lea rdx, bword ptr [rbx+0x28]
; byrRegs +[rdx] cmp dword ptr [rcx], ecx call [System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this] ; gcrRegs -[rcx]
- ; byrRegs -[rdx rsi]
+ ; byrRegs -[rdx]
; gcr arg pop 0 mov dword ptr [rbx+0x14], 2
- ;; size=26 bbWeight=0.50 PerfScore 4.88
+ ;; size=23 bbWeight=0.50 PerfScore 4.75
G_M34024_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, qword ptr [rbx] mov rdx, qword ptr [rcx+0x38] @@ -76,19 +78,14 @@ G_M34024_IG07: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rsi, rax ;; size=18 bbWeight=0.20 PerfScore 0.30 G_M34024_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [rbx+0x28] - ; byrRegs +[rcx] - mov rdi, rcx - ; byrRegs +[rdi]
jmp SHORT G_M34024_IG10
- ;; size=9 bbWeight=1 PerfScore 2.75 -G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; byrRegs -[rcx] - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp]
+ ;; size=2 bbWeight=1 PerfScore 2.00 +G_M34024_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x30] + ; gcrRegs +[rdi]
mov rax, gword ptr [rbx+0x20] ; gcrRegs +[rax]
- mov rdx, rbp
+ mov rdx, rdi
; gcrRegs +[rdx] mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] @@ -97,58 +94,55 @@ G_M34024_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, ; gcr arg pop 0 test eax, eax jne SHORT G_M34024_IG14
- ;; size=22 bbWeight=2 PerfScore 21.00 -G_M34024_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rbp]
+ ;; size=22 bbWeight=0.50 PerfScore 5.25 +G_M34024_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi]
mov rdx, rsi
- mov rcx, rdi
+ lea rcx, bword ptr [rbx+0x28]
; byrRegs +[rcx] call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this] ; byrRegs -[rcx] ; gcr arg pop 0 test eax, eax jne SHORT G_M34024_IG09
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M34024_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi]
+ ;; size=17 bbWeight=1 PerfScore 5.00 +G_M34024_IG11: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x08], rcx mov dword ptr [rbx+0x14], -1
- ;; size=13 bbWeight=0.50 PerfScore 1.12
+ ;; size=13 bbWeight=0.12 PerfScore 0.28
G_M34024_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M34024_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbp]
+ ;; size=8 bbWeight=0.50 PerfScore 1.38 +G_M34024_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdi]
lea rcx, bword ptr [rbx+0x08] ; byrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, rdi
; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbp]
+ ; gcrRegs -[rdx rdi]
; byrRegs -[rcx] mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 1.00 G_M34024_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 197, prolog size 13, PerfScore 74.65, instruction count 64, allocated bytes for code 197 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 182, prolog size 12, PerfScore 41.68, instruction count 58, allocated bytes for code 182 (MethodHash=a9f27b17) for method System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -156,13 +150,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)

-4 (-3.54%) : 25768.dasm - System.SpanHelpers:Fillushort (Tier1-OSR)

@@ -14,11 +14,11 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ushort -> zero-ref single-def ;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 loc1 [V04,T04] ( 1, 1 ) ushort -> [rsp+0xC4] ld-addr-op tier0-frame
-; V05 loc2 [V05,T05] ( 5, 18.50) simd32 -> [rsp+0x98] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> -; V06 loc3 [V06,T01] ( 4, 17.50) byref -> rax
+; V05 loc2 [V05,T05] ( 7, 20.50) simd32 -> [rsp+0x98] ld-addr-op tier0-frame <System.Numerics.Vector`1[ubyte]> +; V06 loc3 [V06,T01] ( 6, 19.50) byref -> rax
; V07 loc4 [V07,T03] ( 2, 2 ) long -> [rsp+0x88] tier0-frame
-; V08 loc5 [V08,T02] ( 1, 8 ) long -> [rsp+0x80] tier0-frame -; V09 loc6 [V09,T00] ( 6, 40.50) long -> [rsp+0x78] tier0-frame
+; V08 loc5 [V08,T02] ( 2, 9 ) long -> [rsp+0x80] tier0-frame +; V09 loc6 [V09,T00] ( 11, 45.50) long -> [rsp+0x78] tier0-frame
;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V11 loc8 [V11 ] ( 0, 0 ) long -> zero-ref ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -28,12 +28,12 @@ ; ; Lcl frame size = 0
-G_M51983_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51983_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
vzeroupper mov rax, bword ptr [rsp+0x90] ; byrRegs +[rax]
- ;; size=11 bbWeight=8 PerfScore 24.00 -G_M51983_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.00 +G_M51983_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
mov rcx, qword ptr [rsp+0x78] vmovups ymm0, ymmword ptr [rsp+0x98] vmovups ymmword ptr [rax+rcx], ymm0 @@ -41,33 +41,34 @@ G_M51983_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byr add rcx, 64 mov rdx, qword ptr [rsp+0x80] cmp rcx, rdx
- mov qword ptr [rsp+0x80], rdx - jb SHORT G_M51983_IG07 - ;; size=50 bbWeight=8 PerfScore 100.00 -G_M51983_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ jae SHORT G_M51983_IG04 + ;; size=42 bbWeight=1 PerfScore 11.50 +G_M51983_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + vmovups ymmword ptr [rax+rcx], ymm0 + vmovups ymmword ptr [rax+rcx+0x20], ymm0 + add rcx, 64 + cmp rcx, rdx + jb SHORT G_M51983_IG03 + ;; size=20 bbWeight=8 PerfScore 44.00 +G_M51983_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
mov rdx, qword ptr [rsp+0x88] test dl, 32
- je SHORT G_M51983_IG05
+ je SHORT G_M51983_IG06
;; size=13 bbWeight=1 PerfScore 2.25
-G_M51983_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M51983_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
vmovups ymmword ptr [rax+rcx], ymm0 ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M51983_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
+G_M51983_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
vmovups ymmword ptr [rax+rdx-0x20], ymm0 ;; size=6 bbWeight=1 PerfScore 2.00
-G_M51983_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M51983_IG07: ; bbWeight=1, epilog, nogc, extend
vzeroupper add rsp, 264 pop rbp ret ;; size=12 bbWeight=1 PerfScore 2.75
-G_M51983_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - mov qword ptr [rsp+0x78], rcx - vmovups ymmword ptr [rsp+0x98], ymm0 - jmp SHORT G_M51983_IG02 - ;; size=16 bbWeight=4 PerfScore 16.00
-; Total bytes of code 113, prolog size 11, PerfScore 148.00, instruction count 23, allocated bytes for code 113 (MethodHash=267434f0) for method System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
+; Total bytes of code 109, prolog size 11, PerfScore 66.50, instruction count 24, allocated bytes for code 109 (MethodHash=267434f0) for method System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
; ============================================================ Unwind Info:

-2 (-1.67%) : 2729.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)

@@ -7,12 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 28 ) byref -> rcx this single-def
+; V00 this [V00,T00] ( 12, 8.25) byref -> rcx this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T03] ( 3, 4.50) byref -> rdx -; V03 loc1 [V03,T02] ( 4, 8 ) int -> rdx
+; V02 loc0 [V02,T03] ( 3, 1 ) byref -> rdx +; V03 loc1 [V03,T02] ( 4, 1 ) int -> rdx
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 12 ) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 3, 1.50) ref -> rax class-hnd exact "impAppendStmt" <<unknown class>> +; V06 cse0 [V06,T04] ( 3, 2.50) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -27,38 +28,37 @@ G_M25445_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr cmp eax, dword ptr [rdx+0x44] jne SHORT G_M25445_IG10 ;; size=11 bbWeight=1 PerfScore 8.00
-G_M25445_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+G_M25445_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[rdx] mov eax, dword ptr [rcx+0x10] mov rdx, gword ptr [rcx] ; gcrRegs +[rdx]
- cmp eax, dword ptr [rdx+0x38] - jb SHORT G_M25445_IG06 - ;; size=11 bbWeight=8 PerfScore 64.00 -G_M25445_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
+ mov edx, dword ptr [rdx+0x38]
; gcrRegs -[rdx]
- mov rax, gword ptr [rcx] - ; gcrRegs +[rax] - mov eax, dword ptr [rax+0x38] - ; gcrRegs -[rax] - inc eax - mov dword ptr [rcx+0x10], eax
+ cmp eax, edx + jb SHORT G_M25445_IG06 + ;; size=13 bbWeight=1 PerfScore 7.25 +G_M25445_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref + inc edx + mov dword ptr [rcx+0x10], edx
xor rax, rax ; gcrRegs +[rax] mov gword ptr [rcx+0x08], rax
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.25
G_M25445_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax] ; byrRegs -[rcx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M25445_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
+G_M25445_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
; byrRegs +[rcx]
- mov rax, gword ptr [rcx]
+ mov rdx, gword ptr [rcx] + ; gcrRegs +[rdx] + mov rax, gword ptr [rdx+0x10]
; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x10]
mov edx, dword ptr [rcx+0x10]
+ ; gcrRegs -[rdx]
lea r8d, [rdx+0x01] mov dword ptr [rcx+0x10], r8d cmp edx, dword ptr [rax+0x08] @@ -67,8 +67,9 @@ G_M25445_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 { lea rdx, bword ptr [rax+8*rdx+0x10] ; byrRegs +[rdx] cmp dword ptr [rdx+0x0C], -1
- jl SHORT G_M25445_IG03 - ;; size=38 bbWeight=2 PerfScore 34.00
+ jge SHORT G_M25445_IG07 + jmp SHORT G_M25445_IG03 + ;; size=40 bbWeight=0.25 PerfScore 4.75
G_M25445_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref ; gcrRegs -[rax] mov rdx, gword ptr [rdx] @@ -94,7 +95,7 @@ G_M25445_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 4, PerfScore 112.62, instruction count 37, allocated bytes for code 120 (MethodHash=60f49c9a) for method System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 118, prolog size 4, PerfScore 24.62, instruction count 37, allocated bytes for code 118 (MethodHash=60f49c9a) for method System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+42 (+75.00%) : 45416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rcx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V01 loc0 [V01,T00] ( 6, 18 ) ref -> rcx class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 loc0 [V01,T00] ( 10, 22 ) ref -> rcx class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ushort -> rax "Inline return value spill temp" -; V04 tmp2 [V04,T01] ( 3, 10 ) int -> rax "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 6, 7.50) ushort -> rax "Inline return value spill temp" +; V04 tmp2 [V04,T01] ( 6, 12.50) int -> rax "Inline stloc first use temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; @@ -23,43 +23,61 @@ G_M65070_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { G_M65070_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M65070_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M65070_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M65070_IG08
mov rax, gword ptr [rcx+0x18] ; gcrRegs +[rax] movzx rax, word ptr [rax+0x0C] ; gcrRegs -[rax] lea edx, [rax-0x02] cmp edx, 0x1FFE
- jbe SHORT G_M65070_IG05 - ;; size=19 bbWeight=4 PerfScore 23.00 -G_M65070_IG04: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M65070_IG04 + ;; size=24 bbWeight=1 PerfScore 7.00 +G_M65070_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 0x2160
- je SHORT G_M65070_IG08
+ je SHORT G_M65070_IG10
cmp eax, 0x2161
- je SHORT G_M65070_IG08 - ;; size=14 bbWeight=2 PerfScore 5.00 -G_M65070_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M65070_IG10 + ;; size=14 bbWeight=0.50 PerfScore 1.25 +G_M65070_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rcx+0x08] test rcx, rcx
- jne SHORT G_M65070_IG03
+ je SHORT G_M65070_IG08 + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M65070_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+0x18] + ; gcrRegs +[rax] + movzx rax, word ptr [rax+0x0C] + ; gcrRegs -[rax] + lea edx, [rax-0x02] + cmp edx, 0x1FFE + jbe SHORT G_M65070_IG07 + ;; size=19 bbWeight=4 PerfScore 23.00 +G_M65070_IG06: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp eax, 0x2160 + je SHORT G_M65070_IG10 + cmp eax, 0x2161 + je SHORT G_M65070_IG10 + ;; size=14 bbWeight=2 PerfScore 5.00 +G_M65070_IG07: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rcx+0x08] + test rcx, rcx + jne SHORT G_M65070_IG05
;; size=9 bbWeight=4 PerfScore 13.00
-G_M65070_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M65070_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M65070_IG07: ; bbWeight=0.50, epilog, nogc, extend - ret - ;; size=1 bbWeight=0.50 PerfScore 0.50 -G_M65070_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M65070_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=1 bbWeight=0.50 PerfScore 0.50
+G_M65070_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M65070_IG11: ; bbWeight=0.50, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 0, PerfScore 43.50, instruction count 18, allocated bytes for code 56 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
+; Total bytes of code 98, prolog size 0, PerfScore 53.75, instruction count 30, allocated bytes for code 98 (MethodHash=f34b01d1) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
; ============================================================ Unwind Info:

+28 (+77.78%) : 42737.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)

@@ -8,43 +8,55 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> rcx this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> rcx this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> [rsp+0x04] spill-single-def "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> rdx "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> [rsp+0x04] "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> rdx "Inline stloc first use temp"
; ; Lcl frame size = 8 G_M48426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
+G_M48426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx] cmp byte ptr [rcx], cl
- ;; size=2 bbWeight=1 PerfScore 3.00 -G_M48426_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
mov eax, dword ptr [rcx]
- mov dword ptr [rsp+0x04], eax
mov edx, eax or edx, 0xD1FFAB1E cmp edx, eax
- je SHORT G_M48426_IG05 - ;; size=18 bbWeight=8 PerfScore 38.00 -G_M48426_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ je SHORT G_M48426_IG06 + ;; size=16 bbWeight=1 PerfScore 6.75 +G_M48426_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov dword ptr [rsp+0x04], eax
lock cmpxchg dword ptr [rcx], edx cmp eax, dword ptr [rsp+0x04]
- jne SHORT G_M48426_IG03 - ;; size=10 bbWeight=4 PerfScore 84.00 -G_M48426_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M48426_IG06 + ;; size=14 bbWeight=0.50 PerfScore 11.00 +G_M48426_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov eax, dword ptr [rcx] + mov edx, eax + or edx, 0xD1FFAB1E + cmp edx, eax + je SHORT G_M48426_IG06 + ;; size=14 bbWeight=8 PerfScore 30.00 +G_M48426_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov dword ptr [rsp+0x04], eax + lock + cmpxchg dword ptr [rcx], edx + cmp eax, dword ptr [rsp+0x04] + jne SHORT G_M48426_IG04 + ;; size=14 bbWeight=4 PerfScore 88.00 +G_M48426_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx] add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 36, prolog size 1, PerfScore 127.25, instruction count 14, allocated bytes for code 36 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
+; Total bytes of code 64, prolog size 1, PerfScore 138.00, instruction count 24, allocated bytes for code 64 (MethodHash=9c5542d5) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
; ============================================================ Unwind Info:

+28 (+77.78%) : 42900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)

@@ -8,43 +8,55 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 5, 15 ) byref -> rcx this single-def
+; V00 this [V00,T02] ( 7, 16.50) byref -> rcx this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V03 tmp2 [V03,T03] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V04 tmp3 [V04,T00] ( 5, 32 ) int -> [rsp+0x04] spill-single-def "Inline stloc first use temp" -; V05 tmp4 [V05,T01] ( 3, 20 ) int -> rdx "Inline stloc first use temp"
+; V04 tmp3 [V04,T00] ( 10, 36 ) int -> [rsp+0x04] "Inline stloc first use temp" +; V05 tmp4 [V05,T01] ( 6, 22.50) int -> rdx "Inline stloc first use temp"
; ; Lcl frame size = 8 G_M11989_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rax ;; size=1 bbWeight=1 PerfScore 1.00
-G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
+G_M11989_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx] cmp byte ptr [rcx], cl
- ;; size=2 bbWeight=1 PerfScore 3.00 -G_M11989_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
mov eax, dword ptr [rcx]
- mov dword ptr [rsp+0x04], eax
mov edx, eax or edx, 0x2000 cmp edx, eax
- je SHORT G_M11989_IG05 - ;; size=18 bbWeight=8 PerfScore 38.00 -G_M11989_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ je SHORT G_M11989_IG06 + ;; size=16 bbWeight=1 PerfScore 6.75 +G_M11989_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov dword ptr [rsp+0x04], eax
lock cmpxchg dword ptr [rcx], edx cmp eax, dword ptr [rsp+0x04]
- jne SHORT G_M11989_IG03 - ;; size=10 bbWeight=4 PerfScore 84.00 -G_M11989_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M11989_IG06 + ;; size=14 bbWeight=0.50 PerfScore 11.00 +G_M11989_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov eax, dword ptr [rcx] + mov edx, eax + or edx, 0x2000 + cmp edx, eax + je SHORT G_M11989_IG06 + ;; size=14 bbWeight=8 PerfScore 30.00 +G_M11989_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov dword ptr [rsp+0x04], eax + lock + cmpxchg dword ptr [rcx], edx + cmp eax, dword ptr [rsp+0x04] + jne SHORT G_M11989_IG04 + ;; size=14 bbWeight=4 PerfScore 88.00 +G_M11989_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx] add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 36, prolog size 1, PerfScore 127.25, instruction count 14, allocated bytes for code 36 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
+; Total bytes of code 64, prolog size 1, PerfScore 138.00, instruction count 24, allocated bytes for code 64 (MethodHash=acc9d12a) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-43 (-58.90%) : 242762.dasm - foo:Main():int (FullOpts)

@@ -7,52 +7,28 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 5, 14 ) int -> rcx
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 40
-G_M24869_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M24869_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M24869_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, 1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M24869_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - inc ecx - cmp ecx, 2 - jl SHORT G_M24869_IG03 - ;; size=7 bbWeight=4 PerfScore 6.00 -G_M24869_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp ecx, 2 - je SHORT G_M24869_IG07 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M24869_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov eax, 101 - ;; size=21 bbWeight=0.50 PerfScore 1.75 -G_M24869_IG06: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - ret - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M24869_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0 mov eax, 100
- ;; size=21 bbWeight=0.50 PerfScore 1.75 -G_M24869_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=21 bbWeight=1 PerfScore 3.50 +G_M24869_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret
- ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 73, prolog size 4, PerfScore 12.50, instruction count 17, allocated bytes for code 73 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
+; Total bytes of code 30, prolog size 4, PerfScore 5.00, instruction count 6, allocated bytes for code 30 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
; ============================================================ Unwind Info:

-48 (-28.24%) : 190128.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)

@@ -7,14 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 9, 35.92) ref -> rbx class-hnd exact single-def <int[]> -; V01 loc1 [V01,T00] ( 12, 65.84) int -> rax -; V02 loc2 [V02,T01] ( 8, 43 ) int -> rcx -;* V03 loc3 [V03,T06] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T01] ( 10, 15.92) ref -> rbx class-hnd exact single-def <int[]> +; V01 loc1 [V01,T00] ( 5, 16.84) int -> rax +; V02 loc2 [V02,T03] ( 3, 3 ) int -> rcx +;* V03 loc3 [V03,T04] ( 0, 0 ) int -> zero-ref single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 2, 16 ) int -> rdx "CSE - aggressive" -; V06 cse1 [V06,T04] ( 2, 16 ) int -> rdx "CSE - aggressive" -; V07 cse2 [V07,T05] ( 3, 11.88) int -> rax "CSE - aggressive"
+; V05 cse0 [V05,T02] ( 3, 11.88) int -> rax "CSE - aggressive"
; ; Lcl frame size = 32 @@ -22,7 +20,7 @@ G_M42106_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { push rbx sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; int[] mov edx, 6 call CORINFO_HELP_NEWARR_1_VC @@ -30,67 +28,51 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- mov ecx, 0x1869F - mov eax, 1 - ; gcrRegs -[rax] - ;; size=33 bbWeight=1 PerfScore 2.25 -G_M42106_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edx, eax - mov r8d, ecx - and r8d, 0x7FFF - mov dword ptr [rbx+4*rdx+0x10], r8d - lea edx, [rax+0x01] - lea r8d, [rcx+0x2B67] - and r8d, 0x7FFF - mov dword ptr [rbx+4*rdx+0x10], r8d - lea edx, [rax+0x02] - lea r8d, [rcx+0x56CE] - and r8d, 0x7FFF - mov dword ptr [rbx+4*rdx+0x10], r8d - add ecx, 0x8235 - add eax, 3 - cmp eax, 3 - jle SHORT G_M42106_IG03 - ;; size=75 bbWeight=8 PerfScore 64.00 -G_M42106_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbx+0x14], 0x69F + mov rcx, 0xD1FFAB1E + mov qword ptr [rbx+0x18], rcx + mov ecx, 0x208D4
mov dword ptr [rbx+0x20], ecx mov dword ptr [rbx+0x24], ecx mov rcx, rbx ; gcrRegs +[rcx] call [Benchstone.BenchI.BubbleSort2:Inner(int[])]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
- xor eax, eax - ;; size=17 bbWeight=1 PerfScore 5.50 -G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rbx+0x10] + cmp eax, dword ptr [rbx+0x14] + jg SHORT G_M42106_IG06 + mov eax, 1 + ;; size=77 bbWeight=1 PerfScore 15.75 +G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov ecx, eax mov ecx, dword ptr [rbx+4*rcx+0x10] inc eax mov edx, eax cmp ecx, dword ptr [rbx+4*rdx+0x10]
- jg SHORT G_M42106_IG08
+ jg SHORT G_M42106_IG06
cmp eax, 4
- jl SHORT G_M42106_IG05
+ jl SHORT G_M42106_IG03
;; size=21 bbWeight=3.96 PerfScore 31.68
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 32 + pop rbx + ret + ;; size=6 bbWeight=0.50 PerfScore 0.88 +G_M42106_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M42106_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 170, prolog size 5, PerfScore 106.80, instruction count 45, allocated bytes for code 170 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 122, prolog size 5, PerfScore 50.80, instruction count 34, allocated bytes for code 122 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================ Unwind Info:

-31 (-15.50%) : 19593.dasm - Mutual_recursion:seventhMethodFirstCallee@247(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)

@@ -7,143 +7,123 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 18.50) int -> rcx -; V01 arg1 [V01,T01] ( 3, 10 ) int -> rdx single-def -; V02 arg2 [V02,T03] ( 3, 6 ) int -> r8 single-def -; V03 arg3 [V03,T04] ( 3, 6 ) int -> r9 single-def -; V04 arg4 [V04,T05] ( 1, 4 ) int -> rax single-def -; V05 arg5 [V05,T06] ( 1, 4 ) int -> r10 single-def -; V06 arg6 [V06,T07] ( 1, 4 ) int -> r11 single-def -; V07 arg7 [V07,T08] ( 1, 4 ) int -> rbx single-def -; V08 arg8 [V08,T09] ( 1, 4 ) int -> rsi single-def -; V09 arg9 [V09,T10] ( 1, 4 ) int -> rdi single-def -; V10 arg10 [V10,T11] ( 1, 4 ) int -> rbp single-def
+; V00 arg0 [V00,T00] ( 11, 25.50) int -> rcx +; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx single-def +; V02 arg2 [V02,T03] ( 3, 2.50) int -> r8 single-def +; V03 arg3 [V03,T04] ( 3, 2.50) int -> r9 single-def +; V04 arg4 [V04,T05] ( 1, 0.50) int -> [rsp+0x28] single-def +; V05 arg5 [V05,T06] ( 1, 0.50) int -> [rsp+0x30] single-def +; V06 arg6 [V06,T07] ( 1, 0.50) int -> [rsp+0x38] single-def +; V07 arg7 [V07,T08] ( 1, 0.50) int -> [rsp+0x40] single-def +; V08 arg8 [V08,T09] ( 1, 0.50) int -> [rsp+0x48] single-def +; V09 arg9 [V09,T10] ( 1, 0.50) int -> [rsp+0x50] single-def +; V10 arg10 [V10,T11] ( 1, 0.50) int -> [rsp+0x58] single-def
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T02] ( 9, 9 ) int -> rax "Single return block return value"
+; V12 tmp1 [V12,T01] ( 9, 9 ) int -> rax "Single return block return value"
; ; Lcl frame size = 0
-G_M19097_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push rdi - push rsi - push rbp - push rbx - mov eax, dword ptr [rsp+0x48] - mov r10d, dword ptr [rsp+0x50] - mov r11d, dword ptr [rsp+0x58] - mov ebx, dword ptr [rsp+0x60] - mov esi, dword ptr [rsp+0x68] - mov edi, dword ptr [rsp+0x70] - mov ebp, dword ptr [rsp+0x78] - ;; size=34 bbWeight=8 PerfScore 88.00 -G_M19097_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M19097_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; size=0 bbWeight=1 PerfScore 0.00 +G_M19097_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edx, 1
- jne SHORT G_M19097_IG04 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M19097_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M19097_IG07 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M19097_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r8d, 2
- jne SHORT G_M19097_IG06
+ jne SHORT G_M19097_IG09
cmp r9d, 3
- jne SHORT G_M19097_IG08 - cmp eax, 4 - jne SHORT G_M19097_IG10 - cmp r10d, 5
jne SHORT G_M19097_IG11
- cmp r11d, 6 - jne SHORT G_M19097_IG12 - cmp ebx, 7
+ cmp dword ptr [rsp+0x28], 4
jne SHORT G_M19097_IG13
- cmp esi, 8
+ cmp dword ptr [rsp+0x30], 5
jne SHORT G_M19097_IG14
- cmp edi, 9
+ cmp dword ptr [rsp+0x38], 6
jne SHORT G_M19097_IG15
- cmp ebp, 10
+ cmp dword ptr [rsp+0x40], 7
jne SHORT G_M19097_IG16
+ cmp dword ptr [rsp+0x48], 8 + jne SHORT G_M19097_IG17 + cmp dword ptr [rsp+0x50], 9 + jne SHORT G_M19097_IG18 + cmp dword ptr [rsp+0x58], 10 + jne SHORT G_M19097_IG19
test ecx, ecx
- je SHORT G_M19097_IG17
+ je SHORT G_M19097_IG20
test cl, 1
- je SHORT G_M19097_IG19
+ je SHORT G_M19097_IG22 + ;; size=70 bbWeight=0.50 PerfScore 13.00 +G_M19097_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
dec ecx
- jmp SHORT G_M19097_IG02 - ;; size=62 bbWeight=4 PerfScore 64.00 -G_M19097_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M19097_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test ecx, ecx + je SHORT G_M19097_IG20 + ;; size=4 bbWeight=8 PerfScore 10.00 +G_M19097_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test cl, 1 + je SHORT G_M19097_IG22 + dec ecx + jmp SHORT G_M19097_IG05 + ;; size=9 bbWeight=4 PerfScore 14.00 +G_M19097_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19097_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop rbp - pop rsi - pop rdi
+G_M19097_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M19097_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M19097_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -101 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19097_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop rbp - pop rsi - pop rdi
+G_M19097_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M19097_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M19097_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, -102 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19097_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop rbp - pop rsi - pop rdi
+G_M19097_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M19097_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M19097_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, -103
- jmp SHORT G_M19097_IG18 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19097_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov eax, -104 - jmp SHORT G_M19097_IG18 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19097_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov eax, -105 - jmp SHORT G_M19097_IG18 - ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19097_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov eax, -106 - jmp SHORT G_M19097_IG18
+ jmp SHORT G_M19097_IG21
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M19097_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, -107 - jmp SHORT G_M19097_IG18
+ mov eax, -104 + jmp SHORT G_M19097_IG21
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M19097_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, -108 - jmp SHORT G_M19097_IG18
+ mov eax, -105 + jmp SHORT G_M19097_IG21
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M19097_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, -109 - jmp SHORT G_M19097_IG18
+ mov eax, -106 + jmp SHORT G_M19097_IG21
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M19097_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19097_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov eax, -107 + jmp SHORT G_M19097_IG21 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M19097_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov eax, -108 + jmp SHORT G_M19097_IG21 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M19097_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov eax, -109 + jmp SHORT G_M19097_IG21 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M19097_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19097_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbx - pop rbp - pop rsi - pop rdi
+G_M19097_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M19097_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbx - pop rbp - pop rsi - pop rdi
+ ;; size=1 bbWeight=0.50 PerfScore 0.50 +G_M19097_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 200, prolog size 34, PerfScore 178.38, instruction count 80, allocated bytes for code 200 (MethodHash=fd0fb566) for method Mutual_recursion:seventhMethodFirstCallee@247(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
+; Total bytes of code 169, prolog size 0, PerfScore 49.88, instruction count 54, allocated bytes for code 169 (MethodHash=fd0fb566) for method Mutual_recursion:seventhMethodFirstCallee@247(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -151,12 +131,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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)

+23 (+79.31%) : 565057.dasm - Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 79440 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4.00) byref -> rcx this single-def -; V01 arg1 [V01,T01] ( 3, 3.00) int -> rdx single-def -; V02 loc0 [V02,T02] ( 4, 4.00) int -> [rsp+0x04] spill-single-def
+; V00 this [V00,T01] ( 6, 6.00) byref -> rcx this single-def +; V01 arg1 [V01,T02] ( 4, 4.00) int -> rdx single-def +; V02 loc0 [V02,T00] ( 8, 8.00) int -> [rsp+0x04]
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -21,21 +21,31 @@ G_M63594_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63594_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx] mov eax, dword ptr [rcx]
- mov dword ptr [rsp+0x04], eax
mov r8d, eax or r8d, edx
+ mov dword ptr [rsp+0x04], eax
lock cmpxchg dword ptr [rcx], r8d cmp eax, dword ptr [rsp+0x04]
- jne SHORT G_M63594_IG02
+ je SHORT G_M63594_IG04
;; size=23 bbWeight=1.00 PerfScore 24.51
-G_M63594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63594_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov eax, dword ptr [rcx] + mov r8d, eax + or r8d, edx + mov dword ptr [rsp+0x04], eax + lock + cmpxchg dword ptr [rcx], r8d + cmp eax, dword ptr [rsp+0x04] + jne SHORT G_M63594_IG03 + ;; size=23 bbWeight=1.00 PerfScore 24.51 +G_M63594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx] add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 29, prolog size 1, PerfScore 26.76, instruction count 11, allocated bytes for code 29 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
+; Total bytes of code 52, prolog size 1, PerfScore 51.26, instruction count 19, allocated bytes for code 52 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
; ============================================================ Unwind Info:

+23 (+79.31%) : 569477.dasm - Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 77152 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4.00) byref -> rcx this single-def -; V01 arg1 [V01,T01] ( 3, 3.00) int -> rdx single-def -; V02 loc0 [V02,T02] ( 4, 4.00) int -> [rsp+0x04] spill-single-def
+; V00 this [V00,T01] ( 6, 6.00) byref -> rcx this single-def +; V01 arg1 [V01,T02] ( 4, 4.00) int -> rdx single-def +; V02 loc0 [V02,T00] ( 8, 8.00) int -> [rsp+0x04]
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -21,21 +21,31 @@ G_M63594_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M63594_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx] mov eax, dword ptr [rcx]
- mov dword ptr [rsp+0x04], eax
mov r8d, eax or r8d, edx
+ mov dword ptr [rsp+0x04], eax
lock cmpxchg dword ptr [rcx], r8d cmp eax, dword ptr [rsp+0x04]
- jne SHORT G_M63594_IG02
+ je SHORT G_M63594_IG04
;; size=23 bbWeight=1.00 PerfScore 24.50
-G_M63594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63594_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov eax, dword ptr [rcx] + mov r8d, eax + or r8d, edx + mov dword ptr [rsp+0x04], eax + lock + cmpxchg dword ptr [rcx], r8d + cmp eax, dword ptr [rsp+0x04] + jne SHORT G_M63594_IG03 + ;; size=23 bbWeight=1.00 PerfScore 24.50 +G_M63594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx] add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 29, prolog size 1, PerfScore 26.75, instruction count 11, allocated bytes for code 29 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
+; Total bytes of code 52, prolog size 1, PerfScore 51.25, instruction count 19, allocated bytes for code 52 (MethodHash=749f0795) for method Internal.TypeSystem.ThreadSafeFlags:AddFlags(int):this (Tier1)
; ============================================================ Unwind Info:

+46 (+85.19%) : 241317.dasm - N.C:Process(N.C+Node,int,int):int (FullOpts)

@@ -8,13 +8,15 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 3, 3 ) ref -> rcx class-hnd single-def <N.C+Node>
-; V01 arg1 [V01,T04] ( 3, 6 ) int -> rdx single-def -; V02 arg2 [V02,T05] ( 3, 6 ) int -> r8 single-def -; V03 loc0 [V03,T01] ( 7, 22 ) int -> rax -; V04 loc1 [V04,T00] ( 10, 27 ) ref -> rcx class-hnd <N.C+Node> -; V05 loc2 [V05,T02] ( 3, 12 ) int -> r10
+; V01 arg1 [V01,T04] ( 4, 7 ) int -> rdx single-def +; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def +; V03 loc0 [V03,T01] ( 11, 24.50) int -> rax +; V04 loc1 [V04,T00] ( 15, 31.50) ref -> rcx class-hnd <N.C+Node> +; V05 loc2 [V05,T02] ( 5, 14 ) int -> r9
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T03] ( 3, 12 ) int -> rdx "CSE - aggressive"
+; V07 cse0 [V07,T08] ( 4, 2 ) int -> rdx "CSE - aggressive" +; V08 cse1 [V08,T03] ( 3, 12 ) int -> rdx "CSE - aggressive" +; V09 cse2 [V09,T07] ( 3, 3 ) int -> r10 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,12 +27,20 @@ G_M46984_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr xor eax, eax test rcx, rcx je SHORT G_M46984_IG07
- ;; size=7 bbWeight=1 PerfScore 1.50 -G_M46984_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r10d, dword ptr [rcx+0x10]
- cmp r10d, edx
+ mov r9d, r10d + cmp r9d, edx
je SHORT G_M46984_IG05
- add eax, r10d
+ mov eax, r10d + mov rcx, gword ptr [rcx+0x08] + test rcx, rcx + je SHORT G_M46984_IG07 + ;; size=31 bbWeight=1 PerfScore 8.50 +G_M46984_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r9d, dword ptr [rcx+0x10] + cmp r9d, edx + je SHORT G_M46984_IG05 + add eax, r9d
mov rcx, gword ptr [rcx+0x08] test rcx, rcx jne SHORT G_M46984_IG03 @@ -39,10 +49,18 @@ G_M46984_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] jmp SHORT G_M46984_IG07 ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M46984_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M46984_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- shl dword ptr [rcx+0x10], 1 - ;; size=3 bbWeight=0.50 PerfScore 2.00
+ mov edx, dword ptr [rcx+0x10] + add edx, edx + mov dword ptr [rcx+0x10], edx + lea r10d, [rdx+4*rdx] + add eax, r10d + inc edx + mov dword ptr [rcx+0x10], edx + cmp eax, r8d + jge SHORT G_M46984_IG07 + ;; size=25 bbWeight=0.50 PerfScore 3.25
G_M46984_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz mov edx, dword ptr [rcx+0x10] lea r10d, [rdx+4*rdx] @@ -57,7 +75,7 @@ G_M46984_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 0, PerfScore 53.50, instruction count 20, allocated bytes for code 54 (MethodHash=87fd4877) for method N.C:Process(N.C+Node,int,int):int (FullOpts)
+; Total bytes of code 100, prolog size 0, PerfScore 61.75, instruction count 36, allocated bytes for code 100 (MethodHash=87fd4877) for method N.C:Process(N.C+Node,int,int):int (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-6 (-5.41%) : 171990.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 9 ) ref -> rbx class-hnd <System.String> -; V01 loc0 [V01,T02] ( 7, 11.50) int -> rdi
+; V00 arg0 [V00,T03] ( 7, 5.50) ref -> rbx class-hnd <System.String> +; V01 loc0 [V01,T02] ( 9, 5.25) int -> rdi
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp2 [V04,T00] ( 3, 24 ) ushort -> r14 "Inlining Arg" -; V05 cse0 [V05,T01] ( 4, 14 ) int -> rbp "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> rsi "CSE - aggressive"
+;* V03 tmp1 [V03,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 3, 3 ) ushort -> rbp "Inlining Arg" +; V05 cse0 [V05,T04] ( 4, 3.50) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [rbx+0x08] mov edi, esi @@ -38,26 +36,26 @@ G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M51277_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M51277_IG05 ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51277_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, ebp
+G_M51277_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + dec edi
test edi, edi jle SHORT G_M51277_IG06
- ;; size=6 bbWeight=2 PerfScore 3.00 -G_M51277_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - lea ebp, [rdi-0x01] - cmp ebp, esi
+ ;; size=6 bbWeight=0.25 PerfScore 0.38 +G_M51277_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + lea eax, [rdi-0x01] + cmp eax, esi
jae SHORT G_M51277_IG10
- mov eax, ebp - movzx r14, word ptr [rbx+2*rax+0x0C]
+ lea eax, [rdi-0x01] + movzx rbp, word ptr [rbx+2*rax+0x0C]
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0 movzx rcx, word ptr [rax]
- cmp ecx, r14d
+ cmp ecx, ebp
je SHORT G_M51277_IG04
- cmp r14d, 47
+ cmp ebp, 47
je SHORT G_M51277_IG04
- ;; size=35 bbWeight=4 PerfScore 46.00
+ ;; size=33 bbWeight=0.50 PerfScore 5.88
G_M51277_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rax] cmp esi, edi @@ -81,14 +79,13 @@ G_M51277_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M51277_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M51277_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx] call [CORINFO_HELP_RNGCHKFAIL] @@ -96,7 +93,7 @@ G_M51277_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 13, PerfScore 66.50, instruction count 44, allocated bytes for code 111 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
+; Total bytes of code 105, prolog size 11, PerfScore 22.25, instruction count 42, allocated bytes for code 105 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -104,14 +101,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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)

-6 (-5.41%) : 198378.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 9 ) ref -> rbx class-hnd <System.String> -; V01 loc0 [V01,T02] ( 7, 11.50) int -> rdi
+; V00 arg0 [V00,T03] ( 7, 5.50) ref -> rbx class-hnd <System.String> +; V01 loc0 [V01,T02] ( 9, 5.25) int -> rdi
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp2 [V04,T00] ( 3, 24 ) ushort -> r14 "Inlining Arg" -; V05 cse0 [V05,T01] ( 4, 14 ) int -> rbp "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> rsi "CSE - aggressive"
+;* V03 tmp1 [V03,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 3, 3 ) ushort -> rbp "Inlining Arg" +; V05 cse0 [V05,T04] ( 4, 3.50) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [rbx+0x08] mov edi, esi @@ -38,26 +36,26 @@ G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M51277_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M51277_IG05 ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51277_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, ebp
+G_M51277_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + dec edi
test edi, edi jle SHORT G_M51277_IG06
- ;; size=6 bbWeight=2 PerfScore 3.00 -G_M51277_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - lea ebp, [rdi-0x01] - cmp ebp, esi
+ ;; size=6 bbWeight=0.25 PerfScore 0.38 +G_M51277_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + lea eax, [rdi-0x01] + cmp eax, esi
jae SHORT G_M51277_IG10
- mov eax, ebp - movzx r14, word ptr [rbx+2*rax+0x0C]
+ lea eax, [rdi-0x01] + movzx rbp, word ptr [rbx+2*rax+0x0C]
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0 movzx rcx, word ptr [rax]
- cmp ecx, r14d
+ cmp ecx, ebp
je SHORT G_M51277_IG04
- cmp r14d, 47
+ cmp ebp, 47
je SHORT G_M51277_IG04
- ;; size=35 bbWeight=4 PerfScore 46.00
+ ;; size=33 bbWeight=0.50 PerfScore 5.88
G_M51277_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rax] cmp esi, edi @@ -81,14 +79,13 @@ G_M51277_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M51277_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M51277_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx] call [CORINFO_HELP_RNGCHKFAIL] @@ -96,7 +93,7 @@ G_M51277_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 13, PerfScore 66.50, instruction count 44, allocated bytes for code 111 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
+; Total bytes of code 105, prolog size 11, PerfScore 22.25, instruction count 42, allocated bytes for code 105 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -104,14 +101,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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)

-14 (-4.96%) : 183788.dasm - Roslyn.Utilities.OneOrMany1+<<OfType>g__iterateElements|18_0>d1[System.Canon,System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,42 +8,40 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 12, 8.50) ref -> rbx this class-hnd single-def <Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]> -; V01 loc0 [V01,T12] ( 3, 2.50) int -> rax single-def -; V02 loc1 [V02,T10] ( 3, 4.50) ref -> r14 class-hnd <System.__Canon>
+; V00 this [V00,T00] ( 13, 9 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]> +; V01 loc0 [V01,T09] ( 3, 2.50) int -> rax single-def +; V02 loc1 [V02,T06] ( 3, 1.50) ref -> rbp class-hnd <System.__Canon>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T13] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1" -; V06 tmp2 [V06,T14] ( 3, 2.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T11] ( 4, 3.25) ref -> rdx class-hnd "spilling QMark2" <System.__Canon> -; V08 tmp4 [V08,T17] ( 2, 2 ) long -> r8 "argument with side effect" -; V09 tmp5 [V09,T15] ( 2, 2 ) byref -> rdi single-def "argument with side effect" -; V10 tmp6 [V10,T16] ( 2, 2 ) byref -> rsi single-def "argument with side effect" -; V11 tmp7 [V11,T01] ( 2, 16 ) long -> rdx "argument with side effect" -; V12 tmp8 [V12,T00] ( 2, 16 ) byref -> rcx "argument with side effect" -; V13 tmp9 [V13,T05] ( 2, 8 ) long -> rdx "argument with side effect" -; V14 tmp10 [V14,T04] ( 2, 8 ) byref -> rcx "argument with side effect" -; V15 tmp11 [V15,T06] ( 2, 8 ) long -> rcx "argument with side effect" -; V16 tmp12 [V16,T18] ( 2, 2 ) long -> rcx "argument with side effect" -; V17 cse0 [V17,T07] ( 3, 7 ) long -> rsi hoist "CSE - aggressive" -; V18 cse1 [V18,T09] ( 4, 5 ) long -> r15 "CSE - aggressive" -; V19 cse2 [V19,T08] ( 5, 5 ) long -> rbp multi-def "CSE - aggressive" -; V20 cse3 [V20,T03] ( 6, 8.50) byref -> rdi hoist multi-def "CSE - aggressive"
+; V05 tmp1 [V05,T11] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1" +; V06 tmp2 [V06,T12] ( 3, 2.25) long -> rcx "fgMakeTemp is creating a new local variable" +; V07 tmp3 [V07,T08] ( 4, 3.25) ref -> rdx class-hnd "spilling QMark2" <System.__Canon> +; V08 tmp4 [V08,T16] ( 2, 2 ) long -> r8 "argument with side effect" +; V09 tmp5 [V09,T14] ( 2, 2 ) byref -> rdi single-def "argument with side effect" +; V10 tmp6 [V10,T15] ( 2, 2 ) byref -> rsi single-def "argument with side effect" +; V11 tmp7 [V11,T02] ( 2, 4 ) long -> rdx "argument with side effect" +; V12 tmp8 [V12,T01] ( 2, 4 ) byref -> rcx "argument with side effect" +; V13 tmp9 [V13,T04] ( 2, 2 ) long -> rdx "argument with side effect" +; V14 tmp10 [V14,T03] ( 2, 2 ) byref -> rcx "argument with side effect" +; V15 tmp11 [V15,T05] ( 2, 2 ) long -> rcx "argument with side effect" +; V16 tmp12 [V16,T17] ( 2, 2 ) long -> rcx "argument with side effect" +; V17 cse0 [V17,T10] ( 3, 2.50) long -> rsi hoist "CSE - aggressive" +; V18 cse1 [V18,T13] ( 4, 2 ) long -> r14 "CSE - moderate" +; V19 cse2 [V19,T07] ( 6, 4 ) byref -> rdi hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M46849_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 40 - mov qword ptr [rsp+0x20], rcx
+ sub rsp, 48 + mov qword ptr [rsp+0x28], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 7.50
+ ;; size=18 bbWeight=1 PerfScore 6.50
G_M46849_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov eax, dword ptr [rbx+0x10] test eax, eax @@ -55,23 +53,21 @@ G_M46849_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, xor eax, eax ;; size=11 bbWeight=0.50 PerfScore 0.75 G_M46849_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
G_M46849_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref mov dword ptr [rbx+0x10], -1 lea rsi, bword ptr [rbx+0x18] ; byrRegs +[rsi] lea rdi, bword ptr [rbx+0x38] ; byrRegs +[rdi]
- mov rbp, qword ptr [rbx] - mov rcx, rbp
+ mov rcx, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0 mov r8, rax @@ -82,18 +78,17 @@ G_M46849_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [Roslyn.Utilities.OneOrMany`1[System.__Canon]:GetEnumerator():Roslyn.Utilities.OneOrMany`1+Enumerator[System.__Canon]:this] ; byrRegs -[rcx rdx rsi rdi] ; gcr arg pop 0
- ;; size=42 bbWeight=0.50 PerfScore 5.50
+ ;; size=39 bbWeight=0.50 PerfScore 5.38
G_M46849_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdi, bword ptr [rbx+0x38] ; byrRegs +[rdi]
- mov rbp, qword ptr [rbx] - mov rcx, rbp
+ mov rcx, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0 mov rsi, rax jmp SHORT G_M46849_IG08
- ;; size=21 bbWeight=1 PerfScore 8.00 -G_M46849_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ ;; size=18 bbWeight=1 PerfScore 7.75 +G_M46849_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, rdi ; byrRegs +[rcx] mov rdx, rsi @@ -101,24 +96,24 @@ G_M46849_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, ; gcrRegs +[rax] ; byrRegs -[rcx] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - mov rcx, rbp
+ mov rbp, rax + ; gcrRegs +[rbp] + mov rcx, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] ; gcr arg pop 0
- mov r15, rax - mov rcx, r15 - mov rdx, r14
+ mov r14, rax + mov rcx, r14 + mov rdx, rbp
; gcrRegs +[rdx] call [CORINFO_HELP_ISINSTANCEOFANY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax jne SHORT G_M46849_IG11
- ;; size=44 bbWeight=2 PerfScore 24.00 -G_M46849_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax r14]
+ ;; size=44 bbWeight=0.50 PerfScore 6.88 +G_M46849_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs -[rax rbp]
mov rcx, rdi ; byrRegs +[rcx] mov rdx, rsi @@ -127,35 +122,34 @@ G_M46849_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, ; gcr arg pop 0 test eax, eax jne SHORT G_M46849_IG07
- ;; size=16 bbWeight=4 PerfScore 19.00 -G_M46849_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
+ ;; size=16 bbWeight=1 PerfScore 4.75 +G_M46849_IG09: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
xor eax, eax mov qword ptr [rdi], rax mov qword ptr [rdi+0x08], rax mov qword ptr [rdi+0x10], rax
- ;; size=13 bbWeight=0.50 PerfScore 1.62
+ ;; size=13 bbWeight=0.12 PerfScore 0.41
G_M46849_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi]
- add rsp, 40
+ add rsp, 48
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12 -G_M46849_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r14] - mov rcx, r15 - mov rdx, r14
+ ;; size=11 bbWeight=0.50 PerfScore 1.88 +G_M46849_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbp] + mov rcx, r14 + mov rdx, rbp
; gcrRegs +[rdx] call [CORINFO_HELP_ISINSTANCEOFANY]
- ; gcrRegs -[rdx r14] +[rax]
+ ; gcrRegs -[rdx rbp] +[rax]
; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, r14
cmp qword ptr [rdx], rcx je SHORT G_M46849_IG13 ;; size=23 bbWeight=0.50 PerfScore 4.00 @@ -180,21 +174,20 @@ G_M46849_IG13: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 mov eax, 1 ;; size=22 bbWeight=0.50 PerfScore 2.38 G_M46849_IG14: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
G_M46849_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref mov dword ptr [rbx+0x10], -1 jmp G_M46849_IG06 ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 282, prolog size 17, PerfScore 84.31, instruction count 92, allocated bytes for code 282 (MethodHash=b45148fe) for method Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 268, prolog size 15, PerfScore 49.59, instruction count 86, allocated bytes for code 268 (MethodHash=b45148fe) for method Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -202,15 +195,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

+27 (+90.00%) : 207627.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -23,25 +23,42 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] jmp SHORT G_M12955_IG04 ;; size=6 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rax, gword ptr [rax+0x18]
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M12955_IG08 + ;; size=6 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M12955_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M12955_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
cmp word ptr [rax+0x34], 0
- jne SHORT G_M12955_IG06
+ jne SHORT G_M12955_IG10
cmp gword ptr [rax+0x10], 0 je SHORT G_M12955_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M12955_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.25 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rax, gword ptr [rax+0x18] + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + test rax, rax + je SHORT G_M12955_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + cmp word ptr [rax+0x34], 0 + jne SHORT G_M12955_IG10 + cmp gword ptr [rax+0x10], 0 + je SHORT G_M12955_IG07
;; size=14 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 30, prolog size 0, PerfScore 51.00, instruction count 10, allocated bytes for code 30 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 57, prolog size 0, PerfScore 57.50, instruction count 19, allocated bytes for code 57 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info:

+27 (+90.00%) : 181488.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
-; V01 loc0 [V01,T00] ( 7, 22 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V01 loc0 [V01,T00] ( 12, 24.50) ref -> rax class-hnd <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -23,25 +23,42 @@ G_M12955_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] jmp SHORT G_M12955_IG04 ;; size=6 bbWeight=1 PerfScore 4.00
-G_M12955_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M12955_IG03: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rax, gword ptr [rax+0x18]
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M12955_IG04: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M12955_IG08 + ;; size=6 bbWeight=0.25 PerfScore 1.00 +G_M12955_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M12955_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M12955_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M12955_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M12955_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
cmp word ptr [rax+0x34], 0
- jne SHORT G_M12955_IG06
+ jne SHORT G_M12955_IG10
cmp gword ptr [rax+0x10], 0 je SHORT G_M12955_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 4.00 +G_M12955_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M12955_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.25 +G_M12955_IG07: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rax, gword ptr [rax+0x18] + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M12955_IG08: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + test rax, rax + je SHORT G_M12955_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M12955_IG09: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + cmp word ptr [rax+0x34], 0 + jne SHORT G_M12955_IG10 + cmp gword ptr [rax+0x10], 0 + je SHORT G_M12955_IG07
;; size=14 bbWeight=4 PerfScore 32.00
-G_M12955_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12955_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 30, prolog size 0, PerfScore 51.00, instruction count 10, allocated bytes for code 30 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
+; Total bytes of code 57, prolog size 0, PerfScore 57.50, instruction count 19, allocated bytes for code 57 (MethodHash=1deacd64) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:get_NextNontrivial():Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:this (FullOpts)
; ============================================================ Unwind Info:

+34 (+125.93%) : 235343.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> r8 -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,21 +21,43 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=5 bbWeight=1 PerfScore 0.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test r8d, r8d
- je SHORT G_M22426_IG04 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, r8d mov eax, r8d mov r8d, edx test r8d, r8d
- jne SHORT G_M22426_IG03 - ;; size=16 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=21 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, r8d + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=11 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, r8d + mov r8d, ecx + jmp SHORT G_M22426_IG03 + ;; size=10 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 27, prolog size 5, PerfScore 110.75, instruction count 11, allocated bytes for code 27 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 61, prolog size 5, PerfScore 144.75, instruction count 25, allocated bytes for code 61 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.windows.x64.checked.mch

-15 (-10.07%) : 149144.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)

@@ -8,20 +8,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 9 ) ref -> rbx class-hnd <System.String> -; V01 loc0 [V01,T02] ( 7, 11.50) int -> rdi
+; V00 arg0 [V00,T03] ( 7, 5.50) ref -> rbx class-hnd <System.String> +; V01 loc0 [V01,T02] ( 9, 5.25) int -> rdi
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp2 [V04,T00] ( 3, 24 ) ushort -> r15 "Inlining Arg" -; V05 cse0 [V05,T01] ( 4, 14 ) int -> r14 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> rsi "CSE - aggressive" -; V07 cse2 [V07,T05] ( 2, 4.50) long -> rbp hoist "CSE - aggressive"
+;* V03 tmp1 [V03,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 3, 3 ) ushort -> rbp "Inlining Arg" +; V05 cse0 [V05,T04] ( 4, 3.50) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15 - push r14
push rdi push rsi push rbp @@ -29,7 +25,7 @@ G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [rbx+0x08] mov edi, esi @@ -37,30 +33,30 @@ G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr jle SHORT G_M51277_IG07 ;; size=9 bbWeight=1 PerfScore 3.50 G_M51277_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rbp, 0xD1FFAB1E ; static handle
jmp SHORT G_M51277_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.12 -G_M51277_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, r14d
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M51277_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + dec edi
test edi, edi jle SHORT G_M51277_IG07
- ;; size=7 bbWeight=2 PerfScore 3.00 -G_M51277_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - lea r14d, [rdi-0x01] - cmp r14d, esi
+ ;; size=6 bbWeight=0.25 PerfScore 0.38 +G_M51277_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + lea ecx, [rdi-0x01] + cmp ecx, esi
jae SHORT G_M51277_IG11
- mov ecx, r14d - movzx r15, word ptr [rbx+2*rcx+0x0C]
+ lea ecx, [rdi-0x01] + movzx rbp, word ptr [rbx+2*rcx+0x0C]
test byte ptr [(reloc)], 1 ; global ptr je SHORT G_M51277_IG12
- ;; size=27 bbWeight=4 PerfScore 32.00 -G_M51277_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - movzx rcx, word ptr [rbp] - cmp r15d, ecx
+ ;; size=24 bbWeight=0.50 PerfScore 4.12 +G_M51277_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; static handle + movzx rcx, word ptr [rcx] + cmp ebp, ecx
je SHORT G_M51277_IG04
- cmp r15d, 47
+ cmp ebp, 47
je SHORT G_M51277_IG04
- ;; size=15 bbWeight=4 PerfScore 18.00
+ ;; size=22 bbWeight=0.50 PerfScore 2.38
G_M51277_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp esi, edi je SHORT G_M51277_IG09 @@ -87,10 +83,8 @@ G_M51277_IG10: ; bbWeight=1, epilog, nogc, extend pop rbp pop rsi pop rdi
- pop r14 - pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M51277_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx] call CORINFO_HELP_RNGCHKFAIL @@ -105,7 +99,7 @@ G_M51277_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr jmp SHORT G_M51277_IG06 ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 149, prolog size 15, PerfScore 71.88, instruction count 50, allocated bytes for code 149 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
+; Total bytes of code 134, prolog size 11, PerfScore 22.62, instruction count 46, allocated bytes for code 134 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -113,15 +107,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ 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)

-15 (-10.07%) : 189084.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)

@@ -8,20 +8,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 7, 9 ) ref -> rbx class-hnd <System.String> -; V01 loc0 [V01,T02] ( 7, 11.50) int -> rdi
+; V00 arg0 [V00,T03] ( 7, 5.50) ref -> rbx class-hnd <System.String> +; V01 loc0 [V01,T02] ( 9, 5.25) int -> rdi
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp2 [V04,T00] ( 3, 24 ) ushort -> r15 "Inlining Arg" -; V05 cse0 [V05,T01] ( 4, 14 ) int -> r14 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> rsi "CSE - aggressive" -; V07 cse2 [V07,T05] ( 2, 4.50) long -> rbp hoist "CSE - aggressive"
+;* V03 tmp1 [V03,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp2 [V04,T00] ( 3, 3 ) ushort -> rbp "Inlining Arg" +; V05 cse0 [V05,T04] ( 4, 3.50) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15 - push r14
push rdi push rsi push rbp @@ -29,7 +25,7 @@ G_M51277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [rbx+0x08] mov edi, esi @@ -37,30 +33,30 @@ G_M51277_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr jle SHORT G_M51277_IG07 ;; size=9 bbWeight=1 PerfScore 3.50 G_M51277_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rbp, 0xD1FFAB1E ; static handle
jmp SHORT G_M51277_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.12 -G_M51277_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, r14d
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M51277_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + dec edi
test edi, edi jle SHORT G_M51277_IG07
- ;; size=7 bbWeight=2 PerfScore 3.00 -G_M51277_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - lea r14d, [rdi-0x01] - cmp r14d, esi
+ ;; size=6 bbWeight=0.25 PerfScore 0.38 +G_M51277_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + lea ecx, [rdi-0x01] + cmp ecx, esi
jae SHORT G_M51277_IG11
- mov ecx, r14d - movzx r15, word ptr [rbx+2*rcx+0x0C]
+ lea ecx, [rdi-0x01] + movzx rbp, word ptr [rbx+2*rcx+0x0C]
test byte ptr [(reloc)], 1 ; global ptr je SHORT G_M51277_IG12
- ;; size=27 bbWeight=4 PerfScore 32.00 -G_M51277_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - movzx rcx, word ptr [rbp] - cmp r15d, ecx
+ ;; size=24 bbWeight=0.50 PerfScore 4.12 +G_M51277_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; static handle + movzx rcx, word ptr [rcx] + cmp ebp, ecx
je SHORT G_M51277_IG04
- cmp r15d, 47
+ cmp ebp, 47
je SHORT G_M51277_IG04
- ;; size=15 bbWeight=4 PerfScore 18.00
+ ;; size=22 bbWeight=0.50 PerfScore 2.38
G_M51277_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp esi, edi je SHORT G_M51277_IG09 @@ -87,10 +83,8 @@ G_M51277_IG10: ; bbWeight=1, epilog, nogc, extend pop rbp pop rsi pop rdi
- pop r14 - pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M51277_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx] call CORINFO_HELP_RNGCHKFAIL @@ -105,7 +99,7 @@ G_M51277_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr jmp SHORT G_M51277_IG06 ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 149, prolog size 15, PerfScore 71.88, instruction count 50, allocated bytes for code 149 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
+; Total bytes of code 134, prolog size 11, PerfScore 22.62, instruction count 46, allocated bytes for code 134 (MethodHash=ae9237b2) for method Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -113,15 +107,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ 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)

-40 (-8.06%) : 205015.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+KeyCollection[System.__Canon,System.Nullable1[int]]:Alldouble:ubyte:this (FullOpts)

@@ -8,65 +8,70 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 4 ) byref -> rsi this single-def -; V01 TypeCtx [V01,T05] ( 11, 8.44) long -> [rbp+0x18] EH-live single-def -; V02 arg1 [V02,T04] ( 4, 10 ) ref -> rbx class-hnd single-def <System.Func`3[System.__Canon,double,ubyte]> -; V03 arg2 [V03,T21] ( 3, 6 ) double -> mm6 single-def -; V04 loc0 [V04 ] ( 5, 15 ) struct (56) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection+Enumerator[System.__Canon,System.Nullable`1[int]]>
+; V00 this [V00,T12] ( 4, 4 ) byref -> rsi this single-def +; V01 TypeCtx [V01,T04] ( 11, 8.44) long -> [rbp+0x18] EH-live single-def +; V02 arg1 [V02,T10] ( 4, 3 ) ref -> rbx class-hnd single-def <System.Func`3[System.__Canon,double,ubyte]> +; V03 arg2 [V03,T27] ( 3, 2.50) double -> [rbp+0x28] single-def +; V04 loc0 [V04 ] ( 5, 4.50) struct (56) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection+Enumerator[System.__Canon,System.Nullable`1[int]]>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
-;* V06 loc2 [V06,T19] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
+;* V06 loc2 [V06,T25] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp5 [V12,T06] ( 6, 8 ) long -> r8 "Indirect call through function pointer" -; V13 tmp6 [V13,T16] ( 3, 4 ) long -> r8 "spilling helperCall"
+; V12 tmp5 [V12,T11] ( 6, 8 ) long -> r8 "Indirect call through function pointer" +; V13 tmp6 [V13,T21] ( 3, 4 ) long -> r8 "spilling helperCall"
;* V14 tmp7 [V14 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection+Enumerator[System.__Canon,System.Nullable`1[int]]> ;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp9 [V16,T18] ( 2, 4 ) struct (56) [rbp-0x98] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]> -; V17 tmp10 [V17,T00] ( 2, 32 ) long -> rdx "argument with side effect" -; V18 tmp11 [V18,T02] ( 2, 16 ) long -> rdx "argument with side effect" -; V19 tmp12 [V19,T01] ( 2, 16 ) ref -> rdx "argument with side effect" -; V20 PSPSym [V20,T20] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" -; V21 cse0 [V21,T03] ( 3, 13 ) long -> rsi hoist "CSE - aggressive" -; V22 rat0 [V22,T08] ( 3, 5.60) long -> rcx "spilling expr" -; V23 rat1 [V23,T12] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T17] ( 3, 4 ) long -> rsi "runtime lookup" -; V25 rat3 [V25,T09] ( 3, 5.60) long -> rcx "spilling expr" -; V26 rat4 [V26,T13] ( 3, 4.48) long -> rsi "fgMakeTemp is creating a new local variable" -; V27 rat5 [V27,T10] ( 3, 5.60) long -> rcx "spilling expr" -; V28 rat6 [V28,T14] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable" -; V29 rat7 [V29,T11] ( 3, 5.60) long -> rcx "spilling expr" -; V30 rat8 [V30,T15] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable"
+; V16 tmp9 [V16,T23] ( 2, 4 ) struct (56) [rbp-0x88] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]> +; V17 tmp10 [V17,T01] ( 2, 4 ) long -> rdx "argument with side effect" +; V18 tmp11 [V18,T07] ( 2, 2 ) long -> rdx "argument with side effect" +; V19 tmp12 [V19,T06] ( 2, 2 ) ref -> rdx "argument with side effect" +; V20 PSPSym [V20,T26] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" +; V21 cse0 [V21,T24] ( 3, 2.50) long -> rsi hoist "CSE - aggressive" +; V22 rat0 [V22,T13] ( 3, 5.60) long -> rcx "spilling expr" +; V23 rat1 [V23,T17] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable" +; V24 rat2 [V24,T22] ( 3, 4 ) long -> rsi "runtime lookup" +; V25 rat3 [V25,T14] ( 3, 5.60) long -> rcx "spilling expr" +; V26 rat4 [V26,T18] ( 3, 4.48) long -> rsi "fgMakeTemp is creating a new local variable" +;* V27 rat5 [V27,T09] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V28 rat6 [V28,T05] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V29 rat7 [V29,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +;* V30 rat8 [V30,T03] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V31 rat9 [V31,T00] ( 0, 0 ) long -> zero-ref "spilling expr" +;* V32 rat10 [V32,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V33 rat11 [V33,T15] ( 3, 5.60) long -> rcx "spilling expr" +; V34 rat12 [V34,T19] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable" +; V35 rat13 [V35,T16] ( 3, 5.60) long -> rcx "spilling expr" +; V36 rat14 [V36,T20] ( 3, 4.48) long -> r8 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 176
+; Lcl frame size = 160
G_M7021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push rsi push rbx
- sub rsp, 176
+ sub rsp, 160
vzeroupper
- vmovaps xmmword ptr [rsp+0xA0], xmm6 - lea rbp, [rsp+0xC0]
+ lea rbp, [rsp+0xB0]
xor eax, eax
- mov qword ptr [rbp-0x98], rax
+ mov qword ptr [rbp-0x88], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x90], ymm4 - vmovdqu ymmword ptr [rbp-0x70], ymm4 - vmovdqu ymmword ptr [rbp-0x50], ymm4 - mov qword ptr [rbp-0x30], rax - mov qword ptr [rbp-0xA0], rsp - mov qword ptr [rbp-0x28], rdx - vmovaps xmm6, xmm3
+ vmovdqu ymmword ptr [rbp-0x80], ymm4 + vmovdqu ymmword ptr [rbp-0x60], ymm4 + vmovdqu ymmword ptr [rbp-0x40], ymm4 + mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x90], rsp + mov qword ptr [rbp-0x18], rdx + vmovsd qword ptr [rbp+0x28], xmm3
mov qword ptr [rbp+0x18], rdx mov rsi, rcx ; byrRegs +[rsi] mov rax, rdx mov rbx, r8 ; gcrRegs +[rbx]
- ;; size=93 bbWeight=1 PerfScore 19.33
+ ;; size=82 bbWeight=1 PerfScore 18.08
G_M7021_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz mov rcx, qword ptr [rax+0x38] cmp qword ptr [rcx+0x08], 40 @@ -91,16 +96,16 @@ G_M7021_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, b cmp byte ptr [rsi], sil mov rcx, rsi ; byrRegs +[rcx]
- lea rdx, [rbp-0x98]
+ lea rdx, [rbp-0x88]
call [Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]:GetEnumerator():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]:this] ; byrRegs -[rcx rsi] ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 6.75 G_M7021_IG07: ; bbWeight=1, nogc, extend
- vmovdqu ymm0, ymmword ptr [rbp-0x98] - vmovdqu ymmword ptr [rbp-0x60], ymm0 - vmovdqu ymm0, ymmword ptr [rbp-0x80] - vmovdqu ymmword ptr [rbp-0x48], ymm0
+ vmovdqu ymm0, ymmword ptr [rbp-0x88] + vmovdqu ymmword ptr [rbp-0x50], ymm0 + vmovdqu ymm0, ymmword ptr [rbp-0x70] + vmovdqu ymmword ptr [rbp-0x38], ymm0
;; size=23 bbWeight=1 PerfScore 10.00 G_M7021_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rax, qword ptr [rbp+0x18] @@ -127,15 +132,15 @@ G_M7021_IG11: ; bbWeight=0.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b G_M7021_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M7021_IG14 ;; size=2 bbWeight=1 PerfScore 2.00
-G_M7021_IG13: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M7021_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
- lea rcx, [rbp-0x60]
+ lea rcx, [rbp-0x50]
call [Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection+Enumerator[System.__Canon,System.Nullable`1[int]]:get_Current():System.__Canon:this] ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- vmovaps xmm2, xmm6
+ vmovsd xmm2, qword ptr [rbp+0x28]
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] call [rbx+0x18]<unknown method> @@ -143,15 +148,15 @@ G_M7021_IG13: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ; gcr arg pop 0 test eax, eax je SHORT G_M7021_IG20
- ;; size=31 bbWeight=4 PerfScore 42.00 -G_M7021_IG14: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.62 +G_M7021_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
- lea rcx, [rbp-0x60]
+ lea rcx, [rbp-0x50]
call [Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection+Enumerator[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this] ; gcr arg pop 0 test eax, eax jne SHORT G_M7021_IG13
- ;; size=17 bbWeight=8 PerfScore 40.00
+ ;; size=17 bbWeight=1 PerfScore 5.00
G_M7021_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx] mov rax, qword ptr [rbp+0x18] @@ -175,7 +180,7 @@ G_M7021_IG18: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre mov r8, rax ;; size=21 bbWeight=0.36 PerfScore 0.63 G_M7021_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rbp-0x60]
+ lea rcx, [rbp-0x50]
call r8 ; gcr arg pop 0 jmp SHORT G_M7021_IG24 @@ -192,35 +197,32 @@ G_M7021_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25 G_M7021_IG23: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0xA0] - add rsp, 176
+ add rsp, 160
pop rbx pop rsi pop rbp ret
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=11 bbWeight=1 PerfScore 2.75
G_M7021_IG24: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov eax, 1 ;; size=5 bbWeight=1 PerfScore 0.25 G_M7021_IG25: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0xA0] - add rsp, 176
+ add rsp, 160
pop rbx pop rsi pop rbp ret
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=11 bbWeight=1 PerfScore 2.75
G_M7021_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push rbp push rsi push rbx
- sub rsp, 64
+ sub rsp, 48
vzeroupper
- vmovaps xmmword ptr [rsp+0x30], xmm6
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0xC0] - ;; size=32 bbWeight=1 PerfScore 9.75
+ lea rbp, [rbp+0xB0] + ;; size=26 bbWeight=1 PerfScore 7.75
G_M7021_IG27: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz mov rax, qword ptr [rbp+0x18] mov rcx, qword ptr [rax+0x38] @@ -243,21 +245,20 @@ G_M7021_IG30: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre mov r8, rax ;; size=21 bbWeight=0.36 PerfScore 0.63 G_M7021_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rbp-0x60]
+ lea rcx, [rbp-0x50]
call r8 ; gcr arg pop 0 nop ;; size=8 bbWeight=1 PerfScore 3.75 G_M7021_IG32: ; bbWeight=1, funclet epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x30] - add rsp, 64
+ add rsp, 48
pop rbx pop rsi pop rbp ret
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 496, prolog size 93, PerfScore 207.73, instruction count 131, allocated bytes for code 496 (MethodHash=865de492) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
+; Total bytes of code 456, prolog size 82, PerfScore 122.11, instruction count 126, allocated bytes for code 456 (MethodHash=865de492) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -265,15 +266,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00 ...

+33 (+94.29%) : 33297.dasm - System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)

@@ -8,15 +8,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> -; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rdx single-def -; V02 loc0 [V02,T00] ( 6, 18 ) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsSink>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> +; V01 arg1 [V01,T02] ( 3, 2.50) byref -> rdx single-def +; V02 loc0 [V02,T00] ( 10, 20 ) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsSink>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) simd16 -> zero-ref "V04.[000..016)" ;* V08 tmp5 [V08 ] ( 0, 0 ) simd16 -> zero-ref "V05.[000..016)"
+; V09 cse0 [V09,T03] ( 3, 5 ) simd16 -> mm1 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,29 +29,48 @@ G_M31099_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, ; byrRegs +[rdx] jmp SHORT G_M31099_IG04 ;; size=2 bbWeight=1 PerfScore 2.00
-G_M31099_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
+G_M31099_IG03: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdx]
mov rcx, gword ptr [rcx+0x18]
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M31099_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
+ jmp SHORT G_M31099_IG08 + ;; size=6 bbWeight=0.25 PerfScore 1.00 +G_M31099_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz + ; byrRegs +[rdx]
test rcx, rcx
- je SHORT G_M31099_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M31099_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
+ je SHORT G_M31099_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M31099_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
vmovups xmm0, xmmword ptr [rcx+0x24]
- vpcmpeqb k1, xmm0, xmmword ptr [rdx]
+ vmovups xmm1, xmmword ptr [rdx] + vpcmpeqb k1, xmm0, xmm1
kortestw k1, k1 jae SHORT G_M31099_IG03
- ;; size=17 bbWeight=4 PerfScore 36.00 -G_M31099_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 5.25 +G_M31099_IG06: ; bbWeight=0.12, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx]
+ jmp SHORT G_M31099_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.25 +G_M31099_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rcx+0x18] + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M31099_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + test rcx, rcx + je SHORT G_M31099_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M31099_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + vpcmpeqb k1, xmm1, xmmword ptr [rcx+0x24] + kortestw k1, k1 + jae SHORT G_M31099_IG07 + ;; size=16 bbWeight=4 PerfScore 20.00 +G_M31099_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov rax, rcx ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M31099_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M31099_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 35, prolog size 3, PerfScore 54.25, instruction count 11, allocated bytes for code 37 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
+; Total bytes of code 68, prolog size 3, PerfScore 46.00, instruction count 20, allocated bytes for code 72 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
; ============================================================ Unwind Info:

+33 (+94.29%) : 147047.dasm - System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)

@@ -8,15 +8,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> -; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rdx single-def -; V02 loc0 [V02,T00] ( 6, 18 ) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsSink>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Runtime.InteropServices.ComEventsSink> +; V01 arg1 [V01,T02] ( 3, 2.50) byref -> rdx single-def +; V02 loc0 [V02,T00] ( 10, 20 ) ref -> rcx class-hnd <System.Runtime.InteropServices.ComEventsSink>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) simd16 -> zero-ref "V04.[000..016)" ;* V08 tmp5 [V08 ] ( 0, 0 ) simd16 -> zero-ref "V05.[000..016)"
+; V09 cse0 [V09,T03] ( 3, 5 ) simd16 -> mm1 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,29 +29,48 @@ G_M31099_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, ; byrRegs +[rdx] jmp SHORT G_M31099_IG04 ;; size=2 bbWeight=1 PerfScore 2.00
-G_M31099_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
+G_M31099_IG03: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdx]
mov rcx, gword ptr [rcx+0x18]
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M31099_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
+ jmp SHORT G_M31099_IG08 + ;; size=6 bbWeight=0.25 PerfScore 1.00 +G_M31099_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz + ; byrRegs +[rdx]
test rcx, rcx
- je SHORT G_M31099_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M31099_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
+ je SHORT G_M31099_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M31099_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref, isz
vmovups xmm0, xmmword ptr [rcx+0x24]
- vpcmpeqb k1, xmm0, xmmword ptr [rdx]
+ vmovups xmm1, xmmword ptr [rdx] + vpcmpeqb k1, xmm0, xmm1
kortestw k1, k1 jae SHORT G_M31099_IG03
- ;; size=17 bbWeight=4 PerfScore 36.00 -G_M31099_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 5.25 +G_M31099_IG06: ; bbWeight=0.12, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdx]
+ jmp SHORT G_M31099_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.25 +G_M31099_IG07: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rcx+0x18] + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M31099_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + test rcx, rcx + je SHORT G_M31099_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M31099_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + vpcmpeqb k1, xmm1, xmmword ptr [rcx+0x24] + kortestw k1, k1 + jae SHORT G_M31099_IG07 + ;; size=16 bbWeight=4 PerfScore 20.00 +G_M31099_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov rax, rcx ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M31099_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M31099_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 35, prolog size 3, PerfScore 54.25, instruction count 11, allocated bytes for code 37 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
+; Total bytes of code 68, prolog size 3, PerfScore 46.00, instruction count 20, allocated bytes for code 72 (MethodHash=eaf58684) for method System.Runtime.InteropServices.ComEventsSink:Find(System.Runtime.InteropServices.ComEventsSink,byref):System.Runtime.InteropServices.ComEventsSink (FullOpts)
; ============================================================ Unwind Info:

+34 (+125.93%) : 297669.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> r8 -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -20,21 +20,43 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=5 bbWeight=1 PerfScore 0.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test r8d, r8d
- je SHORT G_M22426_IG04 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, r8d mov eax, r8d mov r8d, edx test r8d, r8d
- jne SHORT G_M22426_IG03 - ;; size=16 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=21 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, r8d + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=11 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, r8d + mov r8d, ecx + jmp SHORT G_M22426_IG03 + ;; size=10 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 27, prolog size 5, PerfScore 110.75, instruction count 11, allocated bytes for code 27 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 61, prolog size 5, PerfScore 144.75, instruction count 25, allocated bytes for code 61 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-47 (-10.73%) : 158068.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)

@@ -9,34 +9,38 @@ ; 5 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 12, 4.15) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> -; V01 arg1 [V01,T02] ( 5, 3.54) byref -> rsi single-def -; V02 loc0 [V02,T03] ( 4, 3.27) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode> -; V03 loc1 [V03,T08] ( 5, 1.24) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
+; V00 this [V00,T00] ( 11, 3.83) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> +; V01 arg1 [V01,T01] ( 5, 3.54) byref -> rsi single-def +; V02 loc0 [V02,T02] ( 4, 3.27) ref -> rdi class-hnd <Microsoft.CodeAnalysis.SyntaxNode> +; V03 loc1 [V03,T09] ( 5, 1.24) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T06] ( 3, 1.38) ref -> r15 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" ; V07 tmp3 [V07,T15] ( 2, 0.55) int -> rax "guarded devirt return temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AccessorDeclarationSyntax>
-; V09 tmp5 [V09,T13] ( 6, 0.81) int -> rdi "guarded devirt return temp" -; V10 tmp6 [V10,T18] ( 2, 0.48) ref -> rcx class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren> -; V11 tmp7 [V11,T14] ( 3, 0.69) ref -> rax "guarded devirt return temp"
+; V09 tmp5 [V09,T13] ( 6, 0.81) int -> r12 "guarded devirt return temp" +; V10 tmp6 [V10,T20] ( 2, 0.48) ref -> rcx class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren> +; V11 tmp7 [V11,T14] ( 3, 0.69) ref -> r13 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AccessorDeclarationSyntax> ; V13 tmp9 [V13,T04] ( 5, 1.84) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V14 tmp10 [V14,T16] ( 3, 0.55) ref -> rbp "guarded devirt return temp"
+; V14 tmp10 [V14,T17] ( 3, 0.55) ref -> rbp "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithTwoChildren>
-; V16 tmp12 [V16,T00] ( 8, 6.45) int -> rdi "Inlining Arg"
+;* V16 tmp12 [V16,T03] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V18 tmp14 [V18,T12] ( 5, 1.00) int -> r12 "Inline stloc first use temp" -; V19 tmp15 [V19,T10] ( 5, 1.24) ref -> r13 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V18 tmp14 [V18,T16] ( 4, 0.66) int -> r12 "Inline stloc first use temp" +; V19 tmp15 [V19,T08] ( 4, 0.51) ref -> rcx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V22 tmp18 [V22,T11] ( 4, 1.08) ref -> rax "guarded devirt return temp"
+; V22 tmp18 [V22,T11] ( 4, 0.32) ref -> rax "guarded devirt return temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V24 tmp20 [V24,T17] ( 3, 0.48) ref -> r13 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V25 tmp21 [V25,T09] ( 5, 1.24) ref -> rcx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V26 tmp22 [V26,T05] ( 5, 1.56) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax> -; V27 cse0 [V27,T07] ( 5, 1.35) long -> r14 "CSE - moderate"
+; V24 tmp20 [V24,T19] ( 3, 0.48) ref -> r13 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V25 tmp21 [V25,T10] ( 3, 0.60) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V26 tmp22 [V26,T05] ( 5, 1.56) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax> +; V27 cse0 [V27,T18] ( 2, 0.07) long -> rax "CSE - conservative" +; V28 cse1 [V28,T07] ( 5, 1.35) long -> r14 "CSE - moderate" +; V29 cse2 [V29,T21] ( 3, 0.30) long -> rdi "CSE - conservative" +; V30 cse3 [V30,T22] ( 2, 0.12) int -> r12 "CSE - conservative" +; V31 cse4 [V31,T12] ( 2, 0.26) long -> rdx "CSE - conservative"
; ; Lcl frame size = 40 @@ -59,7 +63,7 @@ G_M43159_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, mov rdi, gword ptr [rsi] ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M43159_IG10
+ je SHORT G_M43159_IG05
;; size=8 bbWeight=1 PerfScore 3.25 G_M43159_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -79,50 +83,21 @@ G_M43159_IG04: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M43159_IG05: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, gcvars, byref - ; gcrRegs -[rax rdi] +[rbx rbp r13 r15]
+G_M43159_IG05: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz + ; gcrRegs -[rax] +[rbx]
; byrRegs +[rsi]
- mov rcx, r13 - ; gcrRegs +[rcx] - mov edx, edi - mov rax, qword ptr [r13] - mov rax, qword ptr [rax+0x50] - call [rax+0x20]<unknown method> - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - ;; size=16 bbWeight=0.12 PerfScore 0.89 -G_M43159_IG06: ; bbWeight=0.44, gcrefRegs=A029 {rax rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz - test rax, rax - je SHORT G_M43159_IG08 - ;; size=5 bbWeight=0.44 PerfScore 0.55 -G_M43159_IG07: ; bbWeight=0.20, gcrefRegs=A029 {rax rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - add r12d, dword ptr [rax+0x08] - ;; size=4 bbWeight=0.20 PerfScore 0.60 -G_M43159_IG08: ; bbWeight=0.68, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - ; gcrRegs -[rax] - test edi, edi - jg G_M43159_IG16 - ;; size=8 bbWeight=0.68 PerfScore 0.85 -G_M43159_IG09: ; bbWeight=0.24, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref - ; gcrRegs -[r13] - mov edi, r12d - add edi, dword ptr [rbx+0x20] - jmp G_M43159_IG22 - ;; size=11 bbWeight=0.24 PerfScore 1.27 -G_M43159_IG10: ; bbWeight=0.27, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rbp r15] +[rdi]
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithTwoChildren cmp qword ptr [rcx], rdx
- jne SHORT G_M43159_IG12
+ jne SHORT G_M43159_IG07
;; size=19 bbWeight=0.27 PerfScore 1.70
-G_M43159_IG11: ; bbWeight=0.17, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M43159_IG06: ; bbWeight=0.17, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rbp, gword ptr [rcx+0x18] ; gcrRegs +[rbp]
- jmp SHORT G_M43159_IG13
+ jmp SHORT G_M43159_IG08
;; size=6 bbWeight=0.17 PerfScore 0.69
-G_M43159_IG12: ; bbWeight=0.10, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0040 {rsi}, byref
+G_M43159_IG07: ; bbWeight=0.10, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbp] mov edx, 1 mov rax, qword ptr [rcx] @@ -133,12 +108,12 @@ G_M43159_IG12: ; bbWeight=0.10, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0 mov rbp, rax ; gcrRegs +[rbp] ;; size=18 bbWeight=0.10 PerfScore 0.76
-G_M43159_IG13: ; bbWeight=0.27, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M43159_IG08: ; bbWeight=0.27, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rax] mov r14, qword ptr [rbp] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AccessorDeclarationSyntax cmp r14, rcx
- je SHORT G_M43159_IG14
+ je SHORT G_M43159_IG09
mov rcx, rbp ; gcrRegs +[rcx] mov rax, qword ptr [r14+0x50] @@ -146,57 +121,136 @@ G_M43159_IG13: ; bbWeight=0.27, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0 ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne G_M43159_IG03 - ;; size=36 bbWeight=0.27 PerfScore 2.73 -G_M43159_IG14: ; bbWeight=0.27, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
+ jne SHORT G_M43159_IG03 + ;; size=32 bbWeight=0.27 PerfScore 2.73 +G_M43159_IG09: ; bbWeight=0.27, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdi] mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren cmp qword ptr [rbx], rcx
- jne SHORT G_M43159_IG21 - ;; size=19 bbWeight=0.27 PerfScore 1.68 -G_M43159_IG15: ; bbWeight=0.24, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref
+ jne G_M43159_IG22 + ;; size=23 bbWeight=0.27 PerfScore 1.68 +G_M43159_IG10: ; bbWeight=0.24, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref
mov rcx, rbx ; gcrRegs +[rcx]
- mov edi, 1
mov r13, gword ptr [rcx+0x30] ; gcrRegs +[r13] test r13, r13
- jne G_M43159_IG30
+ jne G_M43159_IG23
xor r12d, r12d
- mov r13, gword ptr [rbx+0x18] - ;; size=28 bbWeight=0.24 PerfScore 1.45 -G_M43159_IG16: ; bbWeight=0.56, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - ; gcrRegs -[rcx] - dec edi - jne G_M43159_IG27 - ;; size=8 bbWeight=0.56 PerfScore 0.70 -G_M43159_IG17: ; bbWeight=0.37, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - mov rcx, gword ptr [rbx+0x28] - ; gcrRegs +[rcx] - ;; size=4 bbWeight=0.37 PerfScore 0.75 -G_M43159_IG18: ; bbWeight=0.56, gcrefRegs=A02A {rcx rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz - test rcx, rcx - jne SHORT G_M43159_IG28 - ;; size=5 bbWeight=0.56 PerfScore 0.70 -G_M43159_IG19: ; bbWeight=0.44, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax - cmp qword ptr [r13], rcx - jne G_M43159_IG05 - ;; size=20 bbWeight=0.44 PerfScore 1.86 -G_M43159_IG20: ; bbWeight=0.32, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref - mov rcx, r13 - ; gcrRegs +[rcx] - mov edx, edi
+ mov rcx, gword ptr [rbx+0x18] + mov rax, gword ptr [rbx+0x28] + ; gcrRegs +[rax] + test rax, rax + jne G_M43159_IG21 + ;; size=36 bbWeight=0.24 PerfScore 2.17 +G_M43159_IG11: ; bbWeight=0.13, gcrefRegs=802A {rcx rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz + ; gcrRegs -[rax r13] + mov rdi, qword ptr [rcx] + mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax + cmp rdi, rdx + jne SHORT G_M43159_IG18 + ;; size=18 bbWeight=0.13 PerfScore 0.46 +G_M43159_IG12: ; bbWeight=0.10, gcrefRegs=802A {rcx rbx rbp r15}, byrefRegs=0040 {rsi}, byref + xor edx, edx
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax:GetSlot(int):Microsoft.CodeAnalysis.GreenNode:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- jmp G_M43159_IG06 - ;; size=16 bbWeight=0.32 PerfScore 1.76 -G_M43159_IG21: ; bbWeight=0.03, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref - ; gcrRegs -[rax r13]
+ ;; size=8 bbWeight=0.10 PerfScore 0.31 +G_M43159_IG13: ; bbWeight=0.13, gcrefRegs=8029 {rax rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz + test rax, rax + je SHORT G_M43159_IG15 + ;; size=5 bbWeight=0.13 PerfScore 0.17 +G_M43159_IG14: ; bbWeight=0.06, gcrefRegs=8029 {rax rbx rbp r15}, byrefRegs=0040 {rsi}, byref + mov r12d, dword ptr [rax+0x08] + ;; size=4 bbWeight=0.06 PerfScore 0.12 +G_M43159_IG15: ; bbWeight=0.24, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref + ; gcrRegs -[rax] + add r12d, dword ptr [rbx+0x20] + ;; size=4 bbWeight=0.24 PerfScore 0.72 +G_M43159_IG16: ; bbWeight=0.27, gcrefRegs=8020 {rbp r15}, byrefRegs=0040 {rsi}, byref, isz + ; gcrRegs -[rbx] + mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AccessorDeclarationSyntax + cmp r14, rcx + jne SHORT G_M43159_IG19 + ;; size=15 bbWeight=0.27 PerfScore 0.40 +G_M43159_IG17: ; bbWeight=0.16, gcrefRegs=8020 {rbp r15}, byrefRegs=0040 {rsi}, byref, isz + mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov r13, rax + ; gcrRegs +[r13] + mov dword ptr [r13+0x20], r12d + lea rcx, bword ptr [r13+0x18] + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rbp] + ; byrRegs -[rcx] + lea rcx, bword ptr [r13+0x08] + ; byrRegs +[rcx] + mov rdx, r15 + ; gcrRegs +[rdx]
...

-23 (-8.39%) : 504869.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (Tier1)

@@ -13,63 +13,48 @@ ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V04 tmp2 [V04,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V05 tmp3 [V05,T02] ( 2, 10.31) int -> rdi "Inlining Arg" -; V06 tmp4 [V06,T01] ( 2, 10.31) ref -> rbp class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> -; V07 tmp5 [V07 ] ( 2, 4.66) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V05 tmp3 [V05,T02] ( 2, 4 ) int -> rcx "Inlining Arg" +; V06 tmp4 [V06,T01] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.KeySizes[]> +; V07 tmp5 [V07 ] ( 2, 1.50) ubyte -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V08 tmp6 [V08,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp7 [V09,T00] ( 5, 17.64) int -> r14 "Inline stloc first use temp"
+;* V09 tmp7 [V09,T00] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V11 tmp9 [V11,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V12 tmp10 [V12,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V13 tmp11 [V13,T11] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M39649_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14 - push rdi
push rsi
- push rbp
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M39649_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rbx, rbx
- je SHORT G_M39649_IG08 - mov edi, dword ptr [rbx+0x08] - shl edi, 3
+ je SHORT G_M39649_IG07 + mov ecx, dword ptr [rbx+0x08] + shl ecx, 3
mov rdx, 0xD1FFAB1E ; const ptr
- mov rbp, gword ptr [rdx] - ; gcrRegs +[rbp] - xor r14d, r14d - ;; size=27 bbWeight=1 PerfScore 6.25 -G_M39649_IG03: ; bbWeight=4.16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz - mov edx, r14d - mov rdx, gword ptr [rbp+8*rdx+0x10]
+ mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
- lea r8, [rsp+0x28] - mov ecx, edi
+ mov rdx, gword ptr [rdx+0x10] + lea r8, [rsp+0x20]
call [System.Security.Cryptography.KeySizeHelpers:IsLegalSize(int,System.Security.Cryptography.KeySizes,byref):ubyte] ; gcrRegs -[rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M39649_IG06 - ;; size=25 bbWeight=4.16 PerfScore 30.13 -G_M39649_IG04: ; bbWeight=4.16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz - inc r14d - test r14d, r14d - jle SHORT G_M39649_IG03 - ;; size=8 bbWeight=4.16 PerfScore 6.24 -G_M39649_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx rbp rsi] - mov byte ptr [rsp+0x28], 0 - jmp SHORT G_M39649_IG09 - ;; size=7 bbWeight=0.50 PerfScore 1.50 -G_M39649_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M39649_IG04 + ;; size=43 bbWeight=1 PerfScore 12.75 +G_M39649_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rsi] + jmp SHORT G_M39649_IG06 + ;; size=2 bbWeight=1.00 PerfScore 2.00 +G_M39649_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi] mov rcx, rbx ; gcrRegs +[rcx] @@ -77,7 +62,7 @@ G_M39649_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M39649_IG10
+ jne SHORT G_M39649_IG09
mov rcx, rsi ; gcrRegs +[rcx] mov rdx, rbx @@ -87,16 +72,17 @@ G_M39649_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 nop ;; size=26 bbWeight=1 PerfScore 8.25
-G_M39649_IG07: ; bbWeight=1, epilog, nogc, extend - add rsp, 48
+G_M39649_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 40
pop rbx
- pop rbp
pop rsi
- pop rdi - pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75 -G_M39649_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M39649_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov byte ptr [rsp+0x20], 0 + jmp SHORT G_M39649_IG08 + ;; size=7 bbWeight=0.50 PerfScore 1.50 +G_M39649_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x4471 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -109,7 +95,7 @@ G_M39649_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 int3 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M39649_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -131,7 +117,7 @@ G_M39649_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M39649_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39649_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -168,7 +154,7 @@ G_M39649_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 274, prolog size 10, PerfScore 61.87, instruction count 74, allocated bytes for code 274 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (Tier1)
+; Total bytes of code 251, prolog size 6, PerfScore 29.50, instruction count 63, allocated bytes for code 251 (MethodHash=dd70651e) for method System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (Tier1)
; ============================================================ Unwind Info: @@ -176,14 +162,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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)

-38 (-8.28%) : 632985.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28201_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,95 +8,90 @@ ; 5 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 28,129.00) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T26] ( 3, 6 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 28, 22.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T02] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T02] ( 9, 58 ) int -> rsi single-def -; V04 loc2 [V04,T30] ( 2, 2 ) int -> rsi single-def
+; V03 loc1 [V03,T01] ( 9, 9 ) int -> rsi single-def +; V04 loc2 [V04,T23] ( 2, 2 ) int -> rsi single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 26,201 ) int -> rdi
+;* V06 loc4 [V06,T03] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref
-;* V09 loc7 [V09,T17] ( 0, 0 ) int -> zero-ref -; V10 loc8 [V10,T08] ( 4, 32 ) int -> rbp -;* V11 loc9 [V11,T27] ( 0, 0 ) int -> zero-ref -; V12 loc10 [V12,T21] ( 2, 16.00) int -> r14
+;* V09 loc7 [V09,T24] ( 0, 0 ) int -> zero-ref +;* V10 loc8 [V10,T25] ( 0, 0 ) int -> zero-ref +;* V11 loc9 [V11,T31] ( 0, 0 ) int -> zero-ref +; V12 loc10 [V12,T26] ( 2, 2.00) int -> rdi
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc12 [V14 ] ( 0, 0 ) int -> zero-ref ; V15 OutArgs [V15 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T03] ( 3, 48 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> -; V17 tmp2 [V17,T14] ( 2, 32 ) int -> r8 "Strict ordering of exceptions for Array store"
+; V16 tmp1 [V16,T04] ( 3, 6 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> +; V17 tmp2 [V17,T16] ( 2, 4 ) int -> r8 "Strict ordering of exceptions for Array store"
;* V18 tmp3 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V20 tmp5 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V21 tmp6 [V21,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V22 tmp7 [V22,T23] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V21 tmp6 [V21,T27] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V22 tmp7 [V22,T28] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp9 [V24,T09] ( 4, 32.00) int -> rcx "Inline stloc first use temp" -; V25 tmp10 [V25,T04] ( 3, 48.00) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> -;* V26 tmp11 [V26,T24] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V27 tmp12 [V27,T20] ( 2, 18 ) int -> rbp "Inlining Arg"
+; V24 tmp9 [V24,T10] ( 4, 4.00) int -> rcx "Inline stloc first use temp" +; V25 tmp10 [V25,T05] ( 3, 6.00) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> +;* V26 tmp11 [V26,T29] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V27 tmp12 [V27,T17] ( 2, 4.00) int -> rsi "Inlining Arg"
;* V28 tmp13 [V28 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V29 tmp14 [V29,T29] ( 4, 4.00) int -> rcx single-def "Inline stloc first use temp" -; V30 tmp15 [V30,T28] ( 3, 6.00) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V29 tmp14 [V29,T11] ( 4, 4.00) int -> rcx single-def "Inline stloc first use temp" +; V30 tmp15 [V30,T06] ( 3, 6.00) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V31 tmp16 [V31 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V32 tmp17 [V32 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V33 tmp18 [V33 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-; V34 tmp19 [V34,T25] ( 3, 10 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V34 tmp19 [V34,T20] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V35 tmp20 [V35 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp21 [V36 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V37 tmp22 [V37 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP ;* V39 tmp24 [V39 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp25 [V40,T11] ( 2, 32 ) ref -> rcx "arr expr" -; V41 tmp26 [V41,T12] ( 2, 32 ) ref -> rcx "arr expr" -; V42 tmp27 [V42,T05] ( 3, 48.00) ref -> rax "arr expr" -; V43 tmp28 [V43,T13] ( 2, 32.00) ref -> rcx "arr expr" -; V44 tmp29 [V44,T06] ( 3, 48 ) ref -> rcx "arr expr" -; V45 cse0 [V45,T07] ( 6, 42 ) ref -> rdx "CSE - aggressive" -; V46 cse1 [V46,T15] ( 3, 24.00) ref -> rcx "CSE - moderate" -; V47 cse2 [V47,T16] ( 3, 24 ) ref -> rax "CSE - moderate" -; V48 cse3 [V48,T18] ( 3, 24 ) int -> r10 "CSE - moderate" -; V49 cse4 [V49,T10] ( 4, 32 ) int -> r9 "CSE - moderate" -; V50 cse5 [V50,T19] ( 3, 24.00) int -> rdx "CSE - moderate"
+; V40 tmp25 [V40,T13] ( 2, 4 ) ref -> rcx "arr expr" +; V41 tmp26 [V41,T14] ( 2, 4 ) ref -> rcx "arr expr" +; V42 tmp27 [V42,T07] ( 3, 6.00) ref -> rax "arr expr" +; V43 tmp28 [V43,T15] ( 2, 4.00) ref -> rcx "arr expr" +; V44 tmp29 [V44,T08] ( 3, 6.00) ref -> rcx "arr expr" +; V45 cse0 [V45,T09] ( 6, 5.25) ref -> rdx "CSE - moderate" +; V46 cse1 [V46,T18] ( 3, 3.00) ref -> rcx "CSE - moderate" +; V47 cse2 [V47,T19] ( 3, 3 ) ref -> rax "CSE - moderate" +; V48 cse3 [V48,T21] ( 3, 3 ) int -> r10 "CSE - moderate" +; V49 cse4 [V49,T30] ( 6, 1.50) byref -> rcx multi-def "CSE - moderate" +; V50 cse5 [V50,T12] ( 4, 4 ) int -> r9 "CSE - moderate" +; V51 cse6 [V51,T22] ( 3, 3.00) int -> rdx "CSE - moderate"
; ; Lcl frame size = 32 G_M50926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi
- push rbp
push rbx sub rsp, 32 mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50 -G_M50926_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ ;; size=10 bbWeight=1 PerfScore 3.50 +G_M50926_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx] mov ecx, dword ptr [rdx+0x08] mov esi, dword ptr [rbx+0x4C]
- xor edi, edi
cmp esi, ecx
- ja G_M50926_IG16 - ;; size=16 bbWeight=1 PerfScore 5.50 -G_M50926_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdx]
+ ja G_M50926_IG15
sub ecx, esi not ecx shr ecx, 31 call [<unknown method>]
+ ; byrRegs -[rdx]
; gcr arg pop 0
- xor ebp, ebp
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx] add edx, -2
- cmp edx, edi - jg SHORT G_M50926_IG05 - ;; size=29 bbWeight=8 PerfScore 78.00 -G_M50926_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test edx, edx + jg SHORT G_M50926_IG04 + ;; size=41 bbWeight=1 PerfScore 14.75 +G_M50926_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] @@ -107,8 +102,8 @@ G_M50926_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Array:Resize[int](byref,int)] ; byrRegs -[rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M50926_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M50926_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov rcx, rdx @@ -119,33 +114,27 @@ G_M50926_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r10d, dword ptr [rbx+0x58] sub r8d, r10d mov r9d, dword ptr [rcx+0x08]
- cmp edi, r9d - jae G_M50926_IG15 - mov r11d, edi - mov dword ptr [rcx+4*r11+0x10], r8d - inc edi
+ test r9d, r9d + je G_M50926_IG14 + mov dword ptr [rcx+0x10], r8d
mov rcx, rdx
- cmp edi, r9d - jae G_M50926_IG15 - mov r8d, edi - mov dword ptr [rcx+4*r8+0x10], ebp - inc edi
+ cmp r9d, 1 + jbe G_M50926_IG14 + xor r8d, r8d + mov dword ptr [rcx+0x14], r8d
mov rcx, rdx
- cmp edi, r9d - jae G_M50926_IG15 - mov r8d, edi - mov dword ptr [rcx+4*r8+0x10], esi - inc edi - mov ebp, esi - mov r14d, dword ptr [rax+0x08] - sub r14d, r10d
+ cmp r9d, 2 + jbe G_M50926_IG14 + mov dword ptr [rcx+0x18], esi + mov edi, dword ptr [rax+0x08] + sub edi, r10d
mov ecx, dword ptr [rdx+0x08] ; gcrRegs -[rcx] dec ecx
- cmp ecx, edi - jg SHORT G_M50926_IG07 - ;; size=107 bbWeight=8 PerfScore 202.00 -G_M50926_IG06: ; bbWeight=2, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ cmp ecx, 3 + jg SHORT G_M50926_IG06 + ;; size=91 bbWeight=1 PerfScore 23.75 +G_M50926_IG05: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx] @@ -155,36 +144,31 @@ G_M50926_IG06: ; bbWeight=2, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, call [System.Array:Resize[int](byref,int)] ; byrRegs -[rcx] ; gcr arg pop 0
- ;; size=15 bbWeight=2 PerfScore 11.50 -G_M50926_IG07: ; bbWeight=8.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.25 PerfScore 1.44 +G_M50926_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rax, rcx ; gcrRegs +[rax] mov edx, dword ptr [rax+0x08]
- cmp edi, edx - jae G_M50926_IG15 - mov r8d, edi - mov dword ptr [rax+4*r8+0x10], esi - inc edi - cmp edi, edx - jae G_M50926_IG15 - mov eax, edi - ; gcrRegs -[rax] - mov dword ptr [rcx+4*rax+0x10], r14d - inc edi
+ cmp edx, 3 + jbe G_M50926_IG14 + mov dword ptr [rax+0x1C], esi + cmp edx, 4 + jbe G_M50926_IG14 + mov dword ptr [rcx+0x20], edi
cmp dword ptr [rbx+0x58], 0 je G_M50926_IG13
- ;; size=55 bbWeight=8.00 PerfScore 110.00 -G_M50926_IG08: ; bbWeight=8.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx]
+ ;; size=44 bbWeight=1.00 PerfScore 12.75 +G_M50926_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rcx]
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae G_M50926_IG15
+ jae G_M50926_IG14
mov dword ptr [r9+4*rcx+0x10], 1 xor r9d, r9d ; gcrRegs -[r9] @@ -198,10 +182,10 @@ G_M50926_IG08: ; bbWeight=8.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] ...

+32 (+82.05%) : 85164.dasm - System.Collections.Immutable.ImmutableList1+Node[System.ValueTuple3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)

@@ -8,32 +8,34 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3996 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 6.09) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]> -; V01 arg1 [V01,T01] ( 6, 5.38) int -> rdx
+; V00 this [V00,T00] ( 11, 7.65) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]> +; V01 arg1 [V01,T01] ( 10, 7.08) int -> rdx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 0.53) int -> rdx "arg temp" -; V04 tmp2 [V04,T05] ( 2, 0.53) ref -> rcx single-def "arg temp" -; V05 tmp3 [V05,T04] ( 2, 3.38) ref -> rcx single-def "arg temp"
+; V03 tmp1 [V03,T08] ( 4, 0.80) int -> rdx "arg temp" +; V04 tmp2 [V04,T07] ( 4, 0.80) ref -> rcx "arg temp" +; V05 tmp3 [V05,T03] ( 4, 5.09) ref -> rcx "arg temp"
; V06 cse0 [V06,T02] ( 4, 5.22) int -> r8 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 4.80) ref -> rax "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 4, 2.64) int -> r8 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 3, 4.80) ref -> rax "CSE - aggressive" +; V09 cse3 [V09,T06] ( 3, 2.43) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 G_M47709_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M47709_IG02: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M47709_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x08] ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x18] cmp edx, r8d
- jl SHORT G_M47709_IG06 - ;; size=13 bbWeight=1.98 PerfScore 10.38 -G_M47709_IG03: ; bbWeight=1.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M47709_IG11 + ;; size=13 bbWeight=1 PerfScore 5.25 +G_M47709_IG03: ; bbWeight=0.57, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edx, r8d
- jg SHORT G_M47709_IG07 - ;; size=5 bbWeight=1.13 PerfScore 1.42
+ jg SHORT G_M47709_IG06 + ;; size=5 bbWeight=0.57 PerfScore 0.72
G_M47709_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref lea rax, bword ptr [rcx+0x20] ; byrRegs +[rax] @@ -41,22 +43,44 @@ G_M47709_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr G_M47709_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M47709_IG06: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rcx] +[rax]
+G_M47709_IG06: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rax]
- mov rcx, rax - ; gcrRegs +[rcx] - jmp SHORT G_M47709_IG02 - ;; size=5 bbWeight=0.84 PerfScore 1.90 -G_M47709_IG07: ; bbWeight=0.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
sub edx, r8d dec edx mov rcx, gword ptr [rcx+0x10]
- jmp SHORT G_M47709_IG02
+ ;; size=9 bbWeight=0.07 PerfScore 0.17 +G_M47709_IG07: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+0x08] + ; gcrRegs +[rax] + mov r8d, dword ptr [rax+0x18] + cmp edx, r8d + jl SHORT G_M47709_IG10 + ;; size=13 bbWeight=1.98 PerfScore 10.38 +G_M47709_IG08: ; bbWeight=1.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp edx, r8d + jle SHORT G_M47709_IG04 + ;; size=5 bbWeight=1.13 PerfScore 1.42 +G_M47709_IG09: ; bbWeight=0.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + sub edx, r8d + dec edx + mov rcx, gword ptr [rcx+0x10] + jmp SHORT G_M47709_IG07
;; size=11 bbWeight=0.13 PerfScore 0.60
+G_M47709_IG10: ; bbWeight=0.84, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] +[rax] + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M47709_IG07 + ;; size=5 bbWeight=0.84 PerfScore 1.90 +G_M47709_IG11: ; bbWeight=0.43, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M47709_IG07 + ;; size=5 bbWeight=0.43 PerfScore 0.96
-; Total bytes of code 39, prolog size 0, PerfScore 15.79, instruction count 14, allocated bytes for code 39 (MethodHash=92a645a2) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)
+; Total bytes of code 71, prolog size 0, PerfScore 22.89, instruction count 25, allocated bytes for code 71 (MethodHash=92a645a2) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)
; ============================================================ Unwind Info:

+37 (+92.50%) : 50239.dasm - System.Collections.Immutable.ImmutableList1+Node[System.ValueTuple3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)

@@ -8,49 +8,75 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 603 ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 4.90) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]> -; V01 arg1 [V01,T01] ( 6, 4.30) int -> rdx
+; V00 this [V00,T00] ( 13, 6.36) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]> +; V01 arg1 [V01,T01] ( 10, 6.07) int -> rdx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 0 ) int -> rdx "arg temp" -; V04 tmp2 [V04,T04] ( 2, 0 ) ref -> rcx single-def "arg temp" -; V05 tmp3 [V05,T03] ( 2, 1.19) ref -> rcx single-def "arg temp" -; V06 cse0 [V06,T02] ( 4, 3.60) int -> r8 "CSE - aggressive"
+; V03 tmp1 [V03,T06] ( 4, 0 ) int -> rdx "arg temp" +; V04 tmp2 [V04,T05] ( 4, 0 ) ref -> rcx "arg temp" +; V05 tmp3 [V05,T04] ( 4, 2.11) ref -> rcx "arg temp" +; V06 cse0 [V06,T02] ( 4, 3.60) int -> r10 "CSE - aggressive" +; V07 cse1 [V07,T03] ( 4, 2.77) int -> r8 "CSE - aggressive"
; ; Lcl frame size = 0 G_M47709_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M47709_IG02: ; bbWeight=1.30, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M47709_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x08] ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x18] cmp edx, r8d
- jl SHORT G_M47709_IG05 - ;; size=13 bbWeight=1.30 PerfScore 6.82 -G_M47709_IG03: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M47709_IG09 + ;; size=13 bbWeight=1 PerfScore 5.25 +G_M47709_IG03: ; bbWeight=0.77, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edx, r8d
- jg SHORT G_M47709_IG06
+ jg SHORT G_M47709_IG10 + ;; size=5 bbWeight=0.77 PerfScore 0.96 +G_M47709_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rcx+0x20] ; byrRegs +[rax]
- ;; size=9 bbWeight=1 PerfScore 1.75 -G_M47709_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M47709_IG05: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M47709_IG05: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M47709_IG06: ; bbWeight=1.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
+ mov rax, gword ptr [rcx+0x08] + ; gcrRegs +[rax] + mov r10d, dword ptr [rax+0x18] + cmp edx, r10d + jl SHORT G_M47709_IG08 + ;; size=13 bbWeight=1.30 PerfScore 6.82 +G_M47709_IG07: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp edx, r10d + jg SHORT G_M47709_IG11 + jmp SHORT G_M47709_IG04 + ;; size=7 bbWeight=1 PerfScore 3.25 +G_M47709_IG08: ; bbWeight=0.30, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rcx+0x08]
- jmp SHORT G_M47709_IG02
+ jmp SHORT G_M47709_IG06
;; size=6 bbWeight=0.30 PerfScore 1.19
-G_M47709_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M47709_IG09: ; bbWeight=0.23, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rcx+0x08] + jmp SHORT G_M47709_IG06 + ;; size=6 bbWeight=0.23 PerfScore 0.92 +G_M47709_IG10: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
sub edx, r8d dec edx mov rcx, gword ptr [rcx+0x10]
- jmp SHORT G_M47709_IG02
+ jmp SHORT G_M47709_IG06 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M47709_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + sub edx, r10d + dec edx + mov rcx, gword ptr [rcx+0x10] + jmp SHORT G_M47709_IG06
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 0, PerfScore 10.76, instruction count 14, allocated bytes for code 40 (MethodHash=92a645a2) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)
+; Total bytes of code 77, prolog size 0, PerfScore 19.89, instruction count 27, allocated bytes for code 77 (MethodHash=92a645a2) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this (Tier1)
; ============================================================ Unwind Info:

+34 (+125.93%) : 520403.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (Tier1)

@@ -8,9 +8,9 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 36 ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 25.89) int -> rax -; V01 arg1 [V01,T00] ( 7, 48.78) int -> r8 -; V02 loc0 [V02,T02] ( 2, 22.89) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 27.73) int -> registers +; V01 arg1 [V01,T00] ( 11, 52.46) int -> registers +; V02 loc0 [V02,T02] ( 4, 24.73) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -21,21 +21,45 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=5 bbWeight=1 PerfScore 0.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test r8d, r8d
- je SHORT G_M22426_IG04
+ je SHORT G_M22426_IG09
;; size=5 bbWeight=1 PerfScore 1.25
-G_M22426_IG03: ; bbWeight=11.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M22426_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor edx, edx div edx:eax, r8d mov eax, r8d mov r8d, edx test r8d, r8d
- jne SHORT G_M22426_IG03 - ;; size=16 bbWeight=11.44 PerfScore 309.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG08 + ;; size=16 bbWeight=0.92 PerfScore 24.83 +G_M22426_IG04: ; bbWeight=11.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, r8d + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG07 + ;; size=11 bbWeight=11.44 PerfScore 306.14 +G_M22426_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M22426_IG06: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
+G_M22426_IG07: ; bbWeight=5.72, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, r8d + mov r8d, ecx + jmp SHORT G_M22426_IG04 + ;; size=10 bbWeight=5.72 PerfScore 15.74 +G_M22426_IG08: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG05 + ;; size=5 bbWeight=0.46 PerfScore 1.03 +G_M22426_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG05 + ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 27, prolog size 5, PerfScore 311.75, instruction count 11, allocated bytes for code 27 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (Tier1)
+; Total bytes of code 61, prolog size 5, PerfScore 351.86, instruction count 25, allocated bytes for code 61 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-42 (-12.32%) : 283494.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,74 +8,71 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 21, 79.50) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T16] ( 3, 6 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 21, 18.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T13] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T04] ( 7, 28 ) int -> rsi single-def -; V04 loc2 [V04,T21] ( 2, 2 ) int -> rsi single-def
+; V03 loc1 [V03,T02] ( 7, 7 ) int -> rsi single-def +; V04 loc2 [V04,T22] ( 2, 2 ) int -> rsi single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 14,105 ) int -> rdi
+;* V06 loc4 [V06,T01] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc6 [V08,T11] ( 4, 25 ) int -> rbp -; V09 loc7 [V09,T13] ( 4, 18 ) int -> r14
+;* V08 loc6 [V08,T09] ( 0, 0 ) int -> zero-ref +;* V09 loc7 [V09,T10] ( 0, 0 ) int -> zero-ref
;* V10 loc8 [V10 ] ( 0, 0 ) int -> zero-ref ;* V11 loc9 [V11 ] ( 0, 0 ) int -> zero-ref ; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T02] ( 3, 48 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> -; V14 tmp2 [V14,T10] ( 2, 32 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V13 tmp1 [V13,T03] ( 3, 6 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> +; V14 tmp2 [V14,T07] ( 2, 4 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V16 tmp4 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V17 tmp5 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V20 tmp8 [V20,T14] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V21 tmp9 [V21,T15] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V20 tmp8 [V20,T11] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V21 tmp9 [V21,T12] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp11 [V23,T06] ( 4, 32 ) int -> rcx "Inline stloc first use temp" -; V24 tmp12 [V24,T03] ( 3, 48 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> -;* V25 tmp13 [V25,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V26 tmp14 [V26,T18] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V23 tmp11 [V23,T08] ( 4, 4 ) int -> rcx "Inline stloc first use temp" +; V24 tmp12 [V24,T04] ( 3, 6 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> +;* V25 tmp13 [V25,T23] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V26 tmp14 [V26,T15] ( 2, 4 ) int -> rsi "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V28 tmp16 [V28,T19] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" -; V29 tmp17 [V29,T17] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V28 tmp16 [V28,T17] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" +; V29 tmp17 [V29,T14] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V30 tmp18 [V30 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V31 tmp19 [V31 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp21 [V33,T20] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V33 tmp21 [V33,T19] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V34 tmp22 [V34 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V36 tmp24 [V36 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp25 [V37 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ;* V38 tmp26 [V38 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V39 tmp27 [V39,T08] ( 2, 32 ) ref -> rax "arr expr" -; V40 tmp28 [V40,T09] ( 2, 32 ) ref -> rcx "arr expr" -; V41 cse0 [V41,T05] ( 4, 32 ) ref -> rcx "CSE - aggressive" -; V42 cse1 [V42,T12] ( 3, 24 ) int -> r8 "CSE - moderate" -; V43 cse2 [V43,T07] ( 4, 32 ) int -> r10 "CSE - aggressive" -; V44 cse3 [V44,T23] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V39 tmp27 [V39,T05] ( 2, 4 ) ref -> rax "arr expr" +; V40 tmp28 [V40,T06] ( 2, 4 ) ref -> rcx "arr expr" +; V41 cse0 [V41,T16] ( 4, 4 ) ref -> rcx "CSE - moderate" +; V42 cse1 [V42,T20] ( 3, 3 ) int -> r8 "CSE - moderate" +; V43 cse2 [V43,T21] ( 2, 0.50) byref -> rcx "CSE - moderate" +; V44 cse3 [V44,T18] ( 4, 4 ) int -> r10 "CSE - moderate" +; V45 cse4 [V45,T24] ( 3, 1.50) ref -> rdx "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M26775_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14 - push rdi
push rsi
- push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M26775_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz ; byrRegs +[rdx] mov ecx, dword ptr [rdx+0x08] mov esi, dword ptr [rbx+0x4C]
- xor edi, edi
cmp esi, ecx
- ja G_M26775_IG15
+ ja G_M26775_IG13
sub ecx, esi jns SHORT G_M26775_IG04
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=18 bbWeight=1 PerfScore 6.50
G_M26775_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; byrRegs -[rdx] mov rdx, 0xD1FFAB1E @@ -86,20 +83,16 @@ G_M26775_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M26775_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor ebp, ebp - xor r14d, r14d - ;; size=5 bbWeight=1 PerfScore 0.50 -G_M26775_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26775_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx] add edx, -2
- cmp edx, edi - jg SHORT G_M26775_IG07 - ;; size=14 bbWeight=8 PerfScore 44.00 -G_M26775_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test edx, edx + jg SHORT G_M26775_IG06 + ;; size=14 bbWeight=1 PerfScore 5.50 +G_M26775_IG05: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] @@ -110,8 +103,8 @@ G_M26775_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Array:Resize[int](byref,int)] ; byrRegs -[rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M26775_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M26775_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rax, rcx @@ -123,44 +116,36 @@ G_M26775_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8d, dword ptr [rbx+0x58] sub edx, r8d mov r10d, dword ptr [rax+0x08]
- cmp edi, r10d - jae G_M26775_IG14 - mov r9d, edi - mov dword ptr [rax+4*r9+0x10], edx - inc edi
+ test r10d, r10d + je G_M26775_IG12 + mov dword ptr [rax+0x10], edx
mov rax, rcx
- cmp edi, r10d - jae G_M26775_IG14 - mov edx, edi - mov dword ptr [rax+4*rdx+0x10], r14d - inc edi - cmp edi, r10d - jae G_M26775_IG14 - mov eax, edi - ; gcrRegs -[rax] - mov dword ptr [rcx+4*rax+0x10], esi - inc edi - mov r14d, esi - inc ebp
+ cmp r10d, 1 + jbe G_M26775_IG12 + xor edx, edx + mov dword ptr [rax+0x14], edx + cmp r10d, 2 + jbe G_M26775_IG12 + mov dword ptr [rcx+0x18], esi
test r8d, r8d
- jne SHORT G_M26775_IG09 - ;; size=92 bbWeight=8 PerfScore 166.00 -G_M26775_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ jne SHORT G_M26775_IG08 + ;; size=73 bbWeight=1 PerfScore 19.00 +G_M26775_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx]
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M26775_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M26775_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M26775_IG14
+ jae SHORT G_M26775_IG12
mov dword ptr [r9+4*rcx+0x10], 1 xor r9d, r9d ; gcrRegs -[r9] @@ -172,36 +157,32 @@ G_M26775_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- test ebp, ebp - jle G_M26775_IG05 - ;; size=58 bbWeight=8 PerfScore 162.00 -G_M26775_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbx+0x4C], esi cmp dword ptr [rbx+0x58], 0
- jne SHORT G_M26775_IG12 - ;; size=9 bbWeight=1 PerfScore 5.00 -G_M26775_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M26775_IG10 + ;; size=59 bbWeight=1 PerfScore 24.00 +G_M26775_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M26775_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26775_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M26775_IG14
+ jae SHORT G_M26775_IG12
xor r8d, r8d mov dword ptr [r9+4*rcx+0x10], r8d xor r9d, r9d ; gcrRegs -[r9] mov rcx, gword ptr [rbx+0x28] ; gcrRegs +[rcx]
- mov r8d, r14d
+ mov r8d, esi
xor edx, edx cmp dword ptr [rcx], ecx call [<unknown method>] @@ -209,26 +190,23 @@ G_M26775_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov eax, 1 ...

-42 (-12.07%) : 283497.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex14_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,76 +8,73 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 22, 80.50) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T16] ( 3, 6 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 22, 19.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T13] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T04] ( 7, 28 ) int -> rsi single-def -; V04 loc2 [V04,T21] ( 2, 2 ) int -> rsi single-def
+; V03 loc1 [V03,T02] ( 7, 7 ) int -> rsi single-def +; V04 loc2 [V04,T22] ( 2, 2 ) int -> rsi single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 14,105 ) int -> rdi
+;* V06 loc4 [V06,T01] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 loc7 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 loc8 [V10,T12] ( 4, 25 ) int -> rbp -; V11 loc9 [V11,T14] ( 4, 18 ) int -> r14
+;* V10 loc8 [V10,T10] ( 0, 0 ) int -> zero-ref +;* V11 loc9 [V11,T11] ( 0, 0 ) int -> zero-ref
;* V12 loc10 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ; V14 OutArgs [V14 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T02] ( 3, 48 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> -; V16 tmp2 [V16,T10] ( 2, 32 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V15 tmp1 [V15,T03] ( 3, 6 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> +; V16 tmp2 [V16,T07] ( 2, 4 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp6 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V22 tmp8 [V22,T15] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V23 tmp9 [V23,T11] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V22 tmp8 [V22,T12] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V23 tmp9 [V23,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp10 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V25 tmp11 [V25,T06] ( 4, 32 ) int -> rcx "Inline stloc first use temp" -; V26 tmp12 [V26,T03] ( 3, 48 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> -;* V27 tmp13 [V27,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V28 tmp14 [V28,T19] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V25 tmp11 [V25,T09] ( 4, 4 ) int -> rcx "Inline stloc first use temp" +; V26 tmp12 [V26,T04] ( 3, 6 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> +;* V27 tmp13 [V27,T23] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V28 tmp14 [V28,T18] ( 2, 4 ) int -> rsi "Inlining Arg"
;* V29 tmp15 [V29 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V30 tmp16 [V30,T18] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" -; V31 tmp17 [V31,T17] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp16 [V30,T16] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" +; V31 tmp17 [V31,T14] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V32 tmp18 [V32 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp19 [V33 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V34 tmp20 [V34 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp21 [V35,T20] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 tmp21 [V35,T19] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V36 tmp22 [V36 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp23 [V37 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V38 tmp24 [V38 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp25 [V39 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V41 tmp27 [V41,T08] ( 2, 32 ) ref -> rax "arr expr" -; V42 tmp28 [V42,T09] ( 2, 32 ) ref -> rcx "arr expr" -; V43 cse0 [V43,T05] ( 4, 32 ) ref -> rcx "CSE - aggressive" -; V44 cse1 [V44,T13] ( 3, 24 ) int -> r8 "CSE - moderate" -; V45 cse2 [V45,T07] ( 4, 32 ) int -> r10 "CSE - aggressive" -; V46 cse3 [V46,T23] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V41 tmp27 [V41,T05] ( 2, 4 ) ref -> rax "arr expr" +; V42 tmp28 [V42,T06] ( 2, 4 ) ref -> rcx "arr expr" +; V43 cse0 [V43,T15] ( 4, 4 ) ref -> rcx "CSE - moderate" +; V44 cse1 [V44,T20] ( 3, 3 ) int -> r8 "CSE - moderate" +; V45 cse2 [V45,T21] ( 2, 0.50) byref -> rcx "CSE - moderate" +; V46 cse3 [V46,T17] ( 4, 4 ) int -> r10 "CSE - moderate" +; V47 cse4 [V47,T24] ( 3, 1.50) ref -> rdx "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M27986_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14 - push rdi
push rsi
- push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M27986_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz ; byrRegs +[rdx] mov ecx, dword ptr [rdx+0x08] mov esi, dword ptr [rbx+0x4C]
- xor edi, edi
cmp esi, ecx
- ja G_M27986_IG15
+ ja G_M27986_IG13
sub ecx, esi jns SHORT G_M27986_IG04
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=18 bbWeight=1 PerfScore 6.50
G_M27986_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; byrRegs -[rdx] mov rdx, 0xD1FFAB1E @@ -88,24 +85,20 @@ G_M27986_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M27986_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27986_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x20] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx]
- xor ebp, ebp - xor r14d, r14d - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M27986_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx] add edx, -2
- cmp edx, edi - jg SHORT G_M27986_IG07 - ;; size=14 bbWeight=8 PerfScore 44.00 -G_M27986_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test edx, edx + jg SHORT G_M27986_IG06 + ;; size=21 bbWeight=1 PerfScore 9.50 +G_M27986_IG05: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] @@ -116,8 +109,8 @@ G_M27986_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Array:Resize[int](byref,int)] ; byrRegs -[rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M27986_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M27986_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rax, rcx @@ -129,44 +122,36 @@ G_M27986_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8d, dword ptr [rbx+0x58] sub edx, r8d mov r10d, dword ptr [rax+0x08]
- cmp edi, r10d - jae G_M27986_IG14 - mov r9d, edi - mov dword ptr [rax+4*r9+0x10], edx - inc edi
+ test r10d, r10d + je G_M27986_IG12 + mov dword ptr [rax+0x10], edx
mov rax, rcx
- cmp edi, r10d - jae G_M27986_IG14 - mov edx, edi - mov dword ptr [rax+4*rdx+0x10], r14d - inc edi - cmp edi, r10d - jae G_M27986_IG14 - mov eax, edi - ; gcrRegs -[rax] - mov dword ptr [rcx+4*rax+0x10], esi - inc edi - mov r14d, esi - inc ebp
+ cmp r10d, 1 + jbe G_M27986_IG12 + xor edx, edx + mov dword ptr [rax+0x14], edx + cmp r10d, 2 + jbe G_M27986_IG12 + mov dword ptr [rcx+0x18], esi
test r8d, r8d
- jne SHORT G_M27986_IG09 - ;; size=92 bbWeight=8 PerfScore 166.00 -G_M27986_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ jne SHORT G_M27986_IG08 + ;; size=73 bbWeight=1 PerfScore 19.00 +G_M27986_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx]
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M27986_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M27986_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M27986_IG14
+ jae SHORT G_M27986_IG12
mov dword ptr [r9+4*rcx+0x10], 1 xor r9d, r9d ; gcrRegs -[r9] @@ -178,36 +163,32 @@ G_M27986_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- test ebp, ebp - jle G_M27986_IG05 - ;; size=58 bbWeight=8 PerfScore 162.00 -G_M27986_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbx+0x4C], esi cmp dword ptr [rbx+0x58], 0
- jne SHORT G_M27986_IG12 - ;; size=9 bbWeight=1 PerfScore 5.00 -G_M27986_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M27986_IG10 + ;; size=59 bbWeight=1 PerfScore 24.00 +G_M27986_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M27986_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27986_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M27986_IG14
+ jae SHORT G_M27986_IG12
xor r8d, r8d mov dword ptr [r9+4*rcx+0x10], r8d xor r9d, r9d ; gcrRegs -[r9] mov rcx, gword ptr [rbx+0x28] ; gcrRegs +[rcx]
- mov r8d, r14d
+ mov r8d, esi
...

-42 (-12.07%) : 283499.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex16_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,76 +8,73 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 22, 80.50) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T16] ( 3, 6 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 22, 19.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T13] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T04] ( 7, 28 ) int -> rsi single-def -; V04 loc2 [V04,T21] ( 2, 2 ) int -> rsi single-def
+; V03 loc1 [V03,T02] ( 7, 7 ) int -> rsi single-def +; V04 loc2 [V04,T22] ( 2, 2 ) int -> rsi single-def
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 14,105 ) int -> rdi
+;* V06 loc4 [V06,T01] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 loc7 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 loc8 [V10,T12] ( 4, 25 ) int -> rbp -; V11 loc9 [V11,T14] ( 4, 18 ) int -> r14
+;* V10 loc8 [V10,T10] ( 0, 0 ) int -> zero-ref +;* V11 loc9 [V11,T11] ( 0, 0 ) int -> zero-ref
;* V12 loc10 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref ; V14 OutArgs [V14 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T02] ( 3, 48 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> -; V16 tmp2 [V16,T10] ( 2, 32 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V15 tmp1 [V15,T03] ( 3, 6 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>> +; V16 tmp2 [V16,T07] ( 2, 4 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp4 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V20 tmp6 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V22 tmp8 [V22,T15] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V23 tmp9 [V23,T11] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V22 tmp8 [V22,T12] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V23 tmp9 [V23,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V24 tmp10 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V25 tmp11 [V25,T06] ( 4, 32 ) int -> rcx "Inline stloc first use temp" -; V26 tmp12 [V26,T03] ( 3, 48 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> -;* V27 tmp13 [V27,T22] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V28 tmp14 [V28,T19] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V25 tmp11 [V25,T09] ( 4, 4 ) int -> rcx "Inline stloc first use temp" +; V26 tmp12 [V26,T04] ( 3, 6 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>> +;* V27 tmp13 [V27,T23] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V28 tmp14 [V28,T18] ( 2, 4 ) int -> rsi "Inlining Arg"
;* V29 tmp15 [V29 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V30 tmp16 [V30,T18] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" -; V31 tmp17 [V31,T17] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp16 [V30,T16] ( 4, 4 ) int -> rcx single-def "Inline stloc first use temp" +; V31 tmp17 [V31,T14] ( 3, 6 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V32 tmp18 [V32 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp19 [V33 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP ;* V34 tmp20 [V34 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp21 [V35,T20] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 tmp21 [V35,T19] ( 3, 3 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V36 tmp22 [V36 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp23 [V37 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V38 tmp24 [V38 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp25 [V39 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V41 tmp27 [V41,T08] ( 2, 32 ) ref -> rax "arr expr" -; V42 tmp28 [V42,T09] ( 2, 32 ) ref -> rcx "arr expr" -; V43 cse0 [V43,T05] ( 4, 32 ) ref -> rcx "CSE - aggressive" -; V44 cse1 [V44,T13] ( 3, 24 ) int -> r8 "CSE - moderate" -; V45 cse2 [V45,T07] ( 4, 32 ) int -> r10 "CSE - aggressive" -; V46 cse3 [V46,T23] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V41 tmp27 [V41,T05] ( 2, 4 ) ref -> rax "arr expr" +; V42 tmp28 [V42,T06] ( 2, 4 ) ref -> rcx "arr expr" +; V43 cse0 [V43,T15] ( 4, 4 ) ref -> rcx "CSE - moderate" +; V44 cse1 [V44,T20] ( 3, 3 ) int -> r8 "CSE - moderate" +; V45 cse2 [V45,T21] ( 2, 0.50) byref -> rcx "CSE - moderate" +; V46 cse3 [V46,T17] ( 4, 4 ) int -> r10 "CSE - moderate" +; V47 cse4 [V47,T24] ( 3, 1.50) ref -> rdx "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M41168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14 - push rdi
push rsi
- push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M41168_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz ; byrRegs +[rdx] mov ecx, dword ptr [rdx+0x08] mov esi, dword ptr [rbx+0x4C]
- xor edi, edi
cmp esi, ecx
- ja G_M41168_IG15
+ ja G_M41168_IG13
sub ecx, esi jns SHORT G_M41168_IG04
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=18 bbWeight=1 PerfScore 6.50
G_M41168_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; byrRegs -[rdx] mov rdx, 0xD1FFAB1E @@ -88,24 +85,20 @@ G_M41168_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M41168_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M41168_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x20] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx]
- xor ebp, ebp - xor r14d, r14d - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M41168_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] ; gcrRegs -[rdx] add edx, -2
- cmp edx, edi - jg SHORT G_M41168_IG07 - ;; size=14 bbWeight=8 PerfScore 44.00 -G_M41168_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ test edx, edx + jg SHORT G_M41168_IG06 + ;; size=21 bbWeight=1 PerfScore 9.50 +G_M41168_IG05: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov edx, dword ptr [rdx+0x08] @@ -116,8 +109,8 @@ G_M41168_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [System.Array:Resize[int](byref,int)] ; byrRegs -[rcx] ; gcr arg pop 0
- ;; size=19 bbWeight=2 PerfScore 15.50 -G_M41168_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.25 PerfScore 1.94 +G_M41168_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rax, rcx @@ -129,44 +122,36 @@ G_M41168_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r8d, dword ptr [rbx+0x58] sub edx, r8d mov r10d, dword ptr [rax+0x08]
- cmp edi, r10d - jae G_M41168_IG14 - mov r9d, edi - mov dword ptr [rax+4*r9+0x10], edx - inc edi
+ test r10d, r10d + je G_M41168_IG12 + mov dword ptr [rax+0x10], edx
mov rax, rcx
- cmp edi, r10d - jae G_M41168_IG14 - mov edx, edi - mov dword ptr [rax+4*rdx+0x10], r14d - inc edi - cmp edi, r10d - jae G_M41168_IG14 - mov eax, edi - ; gcrRegs -[rax] - mov dword ptr [rcx+4*rax+0x10], esi - inc edi - mov r14d, esi - inc ebp
+ cmp r10d, 1 + jbe G_M41168_IG12 + xor edx, edx + mov dword ptr [rax+0x14], edx + cmp r10d, 2 + jbe G_M41168_IG12 + mov dword ptr [rcx+0x18], esi
test r8d, r8d
- jne SHORT G_M41168_IG09 - ;; size=92 bbWeight=8 PerfScore 166.00 -G_M41168_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ jne SHORT G_M41168_IG08 + ;; size=73 bbWeight=1 PerfScore 19.00 +G_M41168_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx]
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=9 bbWeight=2 PerfScore 6.50 -G_M41168_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.25 PerfScore 0.81 +G_M41168_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M41168_IG14
+ jae SHORT G_M41168_IG12
mov dword ptr [r9+4*rcx+0x10], 1 xor r9d, r9d ; gcrRegs -[r9] @@ -178,36 +163,32 @@ G_M41168_IG09: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- test ebp, ebp - jle G_M41168_IG05 - ;; size=58 bbWeight=8 PerfScore 162.00 -G_M41168_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbx+0x4C], esi cmp dword ptr [rbx+0x58], 0
- jne SHORT G_M41168_IG12 - ;; size=9 bbWeight=1 PerfScore 5.00 -G_M41168_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M41168_IG10 + ;; size=59 bbWeight=1 PerfScore 24.00 +G_M41168_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexRunner:DoubleCrawl():this] ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M41168_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41168_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r9, gword ptr [rbx+0x20] ; gcrRegs +[r9] mov ecx, dword ptr [rbx+0x58] dec ecx mov dword ptr [rbx+0x58], ecx cmp ecx, dword ptr [r9+0x08]
- jae SHORT G_M41168_IG14
+ jae SHORT G_M41168_IG12
xor r8d, r8d mov dword ptr [r9+4*rcx+0x10], r8d xor r9d, r9d ; gcrRegs -[r9] mov rcx, gword ptr [rbx+0x28] ; gcrRegs +[rcx]
- mov r8d, r14d
+ mov r8d, esi
...

+39 (+82.98%) : 150502.dasm - System.SpanHelpers:LastIndexOfAnyInRangeSystem.TimeSpan:int (FullOpts)

@@ -8,12 +8,12 @@ ; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 6 ) byref -> rcx single-def
+; V00 arg0 [V00,T04] ( 4, 7 ) byref -> rcx single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V03 arg3 [V03,T07] ( 3, 3 ) int -> r9 single-def -; V04 loc0 [V04,T00] ( 7, 18.50) int -> rax -; V05 loc1 [V05,T04] ( 2, 8 ) byref -> r10
+; V03 arg3 [V03,T08] ( 3, 3 ) int -> r9 single-def +; V04 loc0 [V04,T00] ( 11, 22.50) int -> rax +; V05 loc1 [V05,T02] ( 5, 10.50) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan> @@ -23,13 +23,13 @@ ;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan> ;* V13 tmp7 [V13,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp9 [V15,T05] ( 3, 5.78) long -> rdx single-def "field V01._ticks (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T06] ( 2, 3 ) long -> r8 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP -; V17 tmp11 [V17,T02] ( 3, 8.78) long -> r9 "field V07._ticks (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T05] ( 5, 6.98) long -> rdx single-def "field V01._ticks (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T06] ( 4, 4.28) long -> r8 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP +; V17 tmp11 [V17,T01] ( 6, 10.98) long -> r9 "field V07._ticks (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "field V08._ticks (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T08] ( 2, 4 ) long -> r10 "field V11._ticks (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T07] ( 5, 5.78) long -> r11 "field V11._ticks (fldOffset=0x0)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T01] ( 3, 10 ) long -> r10 "CSE - aggressive"
+; V21 cse0 [V21,T03] ( 3, 10 ) long -> r11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,42 +39,71 @@ G_M42504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rcx] lea eax, [r9-0x01] test eax, eax
- jl SHORT G_M42504_IG07 - ;; size=8 bbWeight=1 PerfScore 1.75 -G_M42504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ jl SHORT G_M42504_IG12
movsxd r10, eax lea r10, bword ptr [rcx+8*r10] ; byrRegs +[r10]
- mov r10, qword ptr [r10]
+ mov r9, qword ptr [r10] + cmp rdx, r9 + jl SHORT G_M42504_IG04 + ;; size=23 bbWeight=1 PerfScore 5.75 +G_M42504_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0402 {rcx r10}, byref, isz + cmp rdx, r9 + jg SHORT G_M42504_IG05 + ;; size=5 bbWeight=0.20 PerfScore 0.25 +G_M42504_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0402 {rcx r10}, byref, isz + mov r11, qword ptr [r10] + cmp r8, r11 + jge SHORT G_M42504_IG14 + ;; size=8 bbWeight=0.50 PerfScore 1.62 +G_M42504_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs -[r10]
- mov r9, r10 - cmp rdx, r9 - jl SHORT G_M42504_IG05 - ;; size=18 bbWeight=4 PerfScore 17.00 -G_M42504_IG04: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz - cmp rdx, r9 - jg SHORT G_M42504_IG06 - ;; size=5 bbWeight=0.78 PerfScore 0.98 -G_M42504_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz - cmp r8, r10 - jge SHORT G_M42504_IG09 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M42504_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
dec eax
- jns SHORT G_M42504_IG03
+ js SHORT G_M42504_IG12 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M42504_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + movsxd r10, eax + lea r10, bword ptr [rcx+8*r10] + ; byrRegs +[r10] + mov r11, qword ptr [r10] + mov r9, r11 + cmp rdx, r9 + jl SHORT G_M42504_IG08 + ;; size=18 bbWeight=4 PerfScore 17.00 +G_M42504_IG07: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + ; byrRegs -[r10] + cmp rdx, r9 + jg SHORT G_M42504_IG11 + ;; size=5 bbWeight=0.78 PerfScore 0.98 +G_M42504_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + cmp r8, r11 + jl SHORT G_M42504_IG11 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M42504_IG09: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rcx] + cmp r8, r11 + jle SHORT G_M42504_IG14 + ;; size=5 bbWeight=0.78 PerfScore 0.98 +G_M42504_IG10: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M42504_IG14 + ;; size=2 bbWeight=0.70 PerfScore 1.39 +G_M42504_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + ; byrRegs +[rcx] + dec eax + jns SHORT G_M42504_IG06
;; size=4 bbWeight=4 PerfScore 5.00
-G_M42504_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42504_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M42504_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M42504_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M42504_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M42504_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 47, prolog size 0, PerfScore 28.36, instruction count 18, allocated bytes for code 47 (MethodHash=ee8759f7) for method System.SpanHelpers:LastIndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
+; Total bytes of code 86, prolog size 0, PerfScore 37.85, instruction count 33, allocated bytes for code 86 (MethodHash=ee8759f7) for method System.SpanHelpers:LastIndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
; ============================================================ Unwind Info:

+45 (+91.84%) : 150499.dasm - System.SpanHelpers:IndexOfAnyInRangeSystem.TimeSpan:int (FullOpts)

@@ -8,12 +8,12 @@ ; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 6 ) byref -> rcx single-def
+; V00 arg0 [V00,T05] ( 4, 7 ) byref -> rcx single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V03 arg3 [V03,T02] ( 4, 7 ) int -> r9 single-def -; V04 loc0 [V04,T00] ( 6, 17.50) int -> rax -; V05 loc1 [V05,T05] ( 2, 8 ) byref -> r10
+; V03 arg3 [V03,T03] ( 5, 8 ) int -> r9 single-def +; V04 loc0 [V04,T00] ( 7, 18.50) int -> rax +; V05 loc1 [V05,T02] ( 5, 10.50) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan> ;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan> @@ -23,59 +23,91 @@ ;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.TimeSpan> ;* V13 tmp7 [V13,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V15 tmp9 [V15,T06] ( 3, 5.78) long -> rdx single-def "field V01._ticks (fldOffset=0x0)" P-INDEP -; V16 tmp10 [V16,T07] ( 2, 3 ) long -> r8 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP -; V17 tmp11 [V17,T03] ( 3, 8.78) long -> r11 "field V07._ticks (fldOffset=0x0)" P-INDEP
+; V15 tmp9 [V15,T06] ( 5, 6.98) long -> rdx single-def "field V01._ticks (fldOffset=0x0)" P-INDEP +; V16 tmp10 [V16,T07] ( 4, 4.28) long -> r8 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP +; V17 tmp11 [V17,T01] ( 6, 10.98) long -> r11 "field V07._ticks (fldOffset=0x0)" P-INDEP
;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "field V08._ticks (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T08] ( 2, 4 ) long -> r10 "field V11._ticks (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T08] ( 5, 5.78) long -> rbx "field V11._ticks (fldOffset=0x0)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T01] ( 3, 10 ) long -> r10 "CSE - aggressive"
+; V21 cse0 [V21,T04] ( 3, 10 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 0 G_M35202_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx + ;; size=1 bbWeight=1 PerfScore 1.00
G_M35202_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs +[rcx] xor eax, eax test r9d, r9d
- jle SHORT G_M35202_IG07 - ;; size=7 bbWeight=1 PerfScore 1.50 -G_M35202_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ jle SHORT G_M35202_IG12 + mov r10, rcx + ; byrRegs +[r10] + mov r11, qword ptr [r10] + cmp rdx, r11 + jl SHORT G_M35202_IG04 + ;; size=18 bbWeight=1 PerfScore 5.00 +G_M35202_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0402 {rcx r10}, byref, isz + cmp rdx, r11 + jg SHORT G_M35202_IG05 + ;; size=5 bbWeight=0.20 PerfScore 0.25 +G_M35202_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0402 {rcx r10}, byref, isz + mov rbx, qword ptr [r10] + cmp r8, rbx + jge SHORT G_M35202_IG14 + ;; size=8 bbWeight=0.50 PerfScore 1.62 +G_M35202_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + ; byrRegs -[r10] + mov eax, 1 + cmp r9d, 1 + jle SHORT G_M35202_IG12 + ;; size=11 bbWeight=1 PerfScore 1.50 +G_M35202_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax lea r10, bword ptr [rcx+8*r10] ; byrRegs +[r10]
- mov r10, qword ptr [r10] - ; byrRegs -[r10] - mov r11, r10
+ mov rbx, qword ptr [r10] + mov r11, rbx
cmp rdx, r11
- jl SHORT G_M35202_IG05
+ jl SHORT G_M35202_IG08
;; size=18 bbWeight=4 PerfScore 17.00
-G_M35202_IG04: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+G_M35202_IG07: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + ; byrRegs -[r10]
cmp rdx, r11
- jg SHORT G_M35202_IG06
+ jg SHORT G_M35202_IG11
;; size=5 bbWeight=0.78 PerfScore 0.98
-G_M35202_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz - cmp r8, r10 - jge SHORT G_M35202_IG09
+G_M35202_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + cmp r8, rbx + jl SHORT G_M35202_IG11
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35202_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+G_M35202_IG09: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rcx] + cmp r8, rbx + jle SHORT G_M35202_IG14 + ;; size=5 bbWeight=0.78 PerfScore 0.98 +G_M35202_IG10: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35202_IG14 + ;; size=2 bbWeight=0.70 PerfScore 1.39 +G_M35202_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + ; byrRegs +[rcx]
inc eax cmp eax, r9d
- jl SHORT G_M35202_IG03
+ jl SHORT G_M35202_IG06
;; size=7 bbWeight=4 PerfScore 6.00
-G_M35202_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35202_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35202_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M35202_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop rbx
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50 -G_M35202_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M35202_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop rbx
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 49, prolog size 0, PerfScore 29.11, instruction count 19, allocated bytes for code 49 (MethodHash=d886767d) for method System.SpanHelpers:IndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
+; Total bytes of code 94, prolog size 1, PerfScore 39.85, instruction count 37, allocated bytes for code 94 (MethodHash=d886767d) for method System.SpanHelpers:IndexOfAnyInRange[System.TimeSpan](byref,System.TimeSpan,System.TimeSpan,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -83,8 +115,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x00 - CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+34 (+125.93%) : 203892.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 11 ) int -> rax -; V01 arg1 [V01,T00] ( 7, 19 ) int -> r8 -; V02 loc0 [V02,T02] ( 2, 8 ) int -> rdx
+; V00 arg0 [V00,T01] ( 7, 13 ) int -> registers +; V01 arg1 [V01,T00] ( 11, 23 ) int -> registers +; V02 loc0 [V02,T02] ( 4, 10 ) int -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -20,21 +20,43 @@ G_M22426_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=5 bbWeight=1 PerfScore 0.50 G_M22426_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test r8d, r8d
- je SHORT G_M22426_IG04 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M22426_IG08
xor edx, edx div edx:eax, r8d mov eax, r8d mov r8d, edx test r8d, r8d
- jne SHORT G_M22426_IG03 - ;; size=16 bbWeight=4 PerfScore 108.00 -G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M22426_IG07 + ;; size=21 bbWeight=1 PerfScore 28.25 +G_M22426_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor edx, edx + div edx:eax, r8d + mov eax, edx + test eax, eax + jne SHORT G_M22426_IG06 + ;; size=11 bbWeight=4 PerfScore 107.00 +G_M22426_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M22426_IG05: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
+G_M22426_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, eax + mov eax, r8d + mov r8d, ecx + jmp SHORT G_M22426_IG03 + ;; size=10 bbWeight=2 PerfScore 5.50 +G_M22426_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M22426_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8d, eax + jmp SHORT G_M22426_IG04 + ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 27, prolog size 5, PerfScore 110.75, instruction count 11, allocated bytes for code 27 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
+; Total bytes of code 61, prolog size 5, PerfScore 144.75, instruction count 25, allocated bytes for code 61 (MethodHash=f186a865) for method System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-34 (-31.78%) : 1334.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)

@@ -8,25 +8,23 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 4 ) byref -> rcx single-def -; V01 arg1 [V01,T05] ( 4, 4 ) byref -> rdx single-def -; V02 arg2 [V02,T06] ( 4, 4 ) byref -> r8 single-def -;* V03 loc0 [V03,T10] ( 0, 0 ) int -> zero-ref -; V04 loc1 [V04,T07] ( 2, 5 ) byref -> r8 single-def -; V05 loc2 [V05,T08] ( 2, 5 ) byref -> rdx single-def -; V06 loc3 [V06,T00] ( 5, 17 ) int -> rax -; V07 loc4 [V07,T01] ( 4, 16 ) byref -> r9 -; V08 loc5 [V08,T03] ( 3, 12 ) byref -> r11
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> rcx single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rdx single-def +; V02 arg2 [V02,T02] ( 4, 4 ) byref -> r8 single-def +;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref +; V04 loc1 [V04,T05] ( 2, 2 ) byref -> r8 single-def +; V05 loc2 [V05,T06] ( 2, 2 ) byref -> rdx single-def +;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref +; V07 loc4 [V07,T03] ( 4, 4 ) byref -> rcx +; V08 loc5 [V08,T04] ( 3, 3 ) byref -> r8
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T09] ( 2, 5 ) byref -> rcx hoist "CSE - aggressive" -; V11 cse1 [V11,T02] ( 4, 16 ) long -> r10 "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> rcx "CSE - aggressive"
; ; Lcl frame size = 0 G_M31235_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
vzeroupper
- ;; size=4 bbWeight=1 PerfScore 2.00
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r8}, byref ; byrRegs +[rcx rdx r8] xor eax, eax @@ -35,39 +33,22 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r vmovdqu ymmword ptr [r8], ymm0 vmovdqu ymmword ptr [r8+0x18], ymm0 add rdx, 4
- ;; size=24 bbWeight=1 PerfScore 5.83 -G_M31235_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r8}, byref
cmp byte ptr [rcx], cl add rcx, 28
- ;; size=6 bbWeight=1 PerfScore 3.25 -G_M31235_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r8}, byref, isz - movsxd r10, eax - lea r9, [r10+4*r10] - lea r9, bword ptr [rcx+4*r9] - ; byrRegs +[r9] - mov r11, r10 - shl r11, 4 - add r11, r8 - ; byrRegs +[r11] - mov ebx, dword ptr [r9+0x10] - mov dword ptr [rdx+4*r10], ebx - vmovsd xmm0, qword ptr [r9] - vinsertps xmm0, xmm0, dword ptr [r9+0x08], 40 - vmovsd qword ptr [r11], xmm0 - vextractps dword ptr [r11+0x08], xmm0, 2 - vmovss xmm0, dword ptr [r9+0x0C] - vmovss dword ptr [r11+0x0C], xmm0 - inc eax - test eax, eax - jle SHORT G_M31235_IG04 - ;; size=71 bbWeight=4 PerfScore 103.00 -G_M31235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[rcx rdx r8-r9 r11] - pop rbx
+ mov eax, dword ptr [rcx+0x10] + mov dword ptr [rdx], eax + vmovsd xmm0, qword ptr [rcx] + vinsertps xmm0, xmm0, dword ptr [rcx+0x08], 40 + vmovsd qword ptr [r8], xmm0 + vextractps dword ptr [r8+0x08], xmm0, 2 + vmovss xmm0, dword ptr [rcx+0x0C] + vmovss dword ptr [r8+0x0C], xmm0 + ;; size=69 bbWeight=1 PerfScore 31.08 +G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 107, prolog size 4, PerfScore 115.58, instruction count 29, allocated bytes for code 107 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 73, prolog size 3, PerfScore 33.08, instruction count 18, allocated bytes for code 73 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -75,9 +56,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-16 (-11.35%) : 11240.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
@@ -10,74 +10,59 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16> ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.Unit>
-; V02 arg2 [V02,T05] ( 3, 10 ) ref -> rbx class-hnd single-def <FSharp.Compiler.TypedTreePickle+WriterState>
+; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r8 class-hnd single-def <FSharp.Compiler.TypedTreePickle+WriterState>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 4, 25 ) int -> rsi "Inline stloc first use temp"
+;* V04 tmp1 [V04,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp2 [V05,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V06 tmp3 [V06,T00] ( 7,112 ) ref -> rdi class-hnd exact "Inlining Arg" <FSharp.Compiler.IO.ByteBuffer> -; V07 tmp4 [V07,T04] ( 3, 24 ) int -> rbp "Inline stloc first use temp"
+; V06 tmp3 [V06,T00] ( 7, 14 ) ref -> rbx class-hnd exact "Inlining Arg" <FSharp.Compiler.IO.ByteBuffer> +; V07 tmp4 [V07,T04] ( 3, 3 ) int -> rsi "Inline stloc first use temp"
; V08 tmp5 [V08,T07] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V09 tmp6 [V09,T01] ( 3, 48 ) ref -> rax "arr expr" -; V10 tmp7 [V10,T02] ( 3, 48 ) int -> rcx "index expr"
+; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> rax "arr expr" +; V10 tmp7 [V10,T02] ( 3, 6 ) int -> rcx "index expr"
; V11 tmp8 [V11,T08] ( 2, 0 ) ref -> rdx "argument with side effect" ; ; Lcl frame size = 40 G_M15044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
- push rbp
push rbx sub rsp, 40
- mov rbx, r8
+ ;; size=6 bbWeight=1 PerfScore 2.25 +G_M15044_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r8] + mov rbx, gword ptr [r8+0x08]
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 4.50 -G_M15044_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor esi, esi - ;; size=2 bbWeight=1 PerfScore 0.25 -G_M15044_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdi, gword ptr [rbx+0x08] - ; gcrRegs +[rdi] - cmp byte ptr [rdi+0x15], 0 - jne SHORT G_M15044_IG07 - mov ebp, dword ptr [rdi+0x10] - inc ebp - mov rcx, rdi - ; gcrRegs +[rcx] - mov edx, ebp - call [<unknown method>] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rax, gword ptr [rdi+0x08] - ; gcrRegs +[rax] - mov ecx, dword ptr [rdi+0x10] - cmp ecx, dword ptr [rax+0x08] - jae SHORT G_M15044_IG06 - mov byte ptr [rax+rcx+0x10], 0 - mov dword ptr [rdi+0x10], ebp
+ cmp byte ptr [rbx+0x15], 0 + jne SHORT G_M15044_IG05 + mov esi, dword ptr [rbx+0x10]
inc esi
- cmp esi, 1 - jne SHORT G_M15044_IG03 - ;; size=53 bbWeight=8 PerfScore 186.00 -G_M15044_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx rdi] - xor rax, rax
+ mov rcx, rbx + ; gcrRegs +[rcx] + mov edx, esi + call [<unknown method>] + ; gcrRegs -[rcx r8] + ; gcr arg pop 0 + mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M15044_IG05: ; bbWeight=1, epilog, nogc, extend
+ mov ecx, dword ptr [rbx+0x10] + cmp ecx, dword ptr [rax+0x08] + jae SHORT G_M15044_IG04 + mov byte ptr [rax+rcx+0x10], 0 + mov dword ptr [rbx+0x10], esi + xor rax, rax + ;; size=48 bbWeight=1 PerfScore 22.00 +G_M15044_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx
- pop rbp
pop rsi
- pop rdi
ret
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M15044_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax]
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M15044_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M15044_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15044_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -103,7 +88,7 @@ G_M15044_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 141, prolog size 8, PerfScore 194.25, instruction count 44, allocated bytes for code 141 (MethodHash=4234c53b) for method FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 125, prolog size 6, PerfScore 26.50, instruction count 35, allocated bytes for code 125 (MethodHash=4234c53b) for method FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================ Unwind Info: @@ -111,13 +96,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
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: 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)

-32 (-10.63%) : 17656.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)

@@ -8,32 +8,30 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 8, 13.92) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.PortableThreadPool> -; V01 loc0 [V01,T03] ( 3, 9.92) ref -> rbx class-hnd exact single-def <<unknown class>> -; V02 loc1 [V02,T01] ( 5, 32.68) int -> rsi
+; V00 this [V00,T00] ( 8, 7 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.PortableThreadPool> +; V01 loc0 [V01,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def <<unknown class>> +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T00] ( 3, 47.52) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T02] ( 3, 6 ) ref -> rsi class-hnd exact "NewObj constructor temp" <<unknown class>>
; V06 tmp2 [V06,T07] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V07 tmp3 [V07,T05] ( 4, 8 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Threading.LowLevelLock> -; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" -; V09 cse0 [V09,T04] ( 2, 8.92) long -> rdi hoist "CSE - aggressive"
+; V07 tmp3 [V07,T01] ( 4, 8 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Threading.LowLevelLock> +; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym" +; V09 cse0 [V09,T05] ( 2, 2 ) long -> rcx "CSE - aggressive"
; ; Lcl frame size = 48 G_M34740_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48
- lea rbp, [rsp+0x50] - mov qword ptr [rbp-0x30], rsp
+ lea rbp, [rsp+0x40] + mov qword ptr [rbp-0x20], rsp
mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=23 bbWeight=1 PerfScore 7.75 -G_M34740_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 5.75 +G_M34740_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] mov rbx, gword ptr [rcx+0x18] ; gcrRegs +[rbx] @@ -55,7 +53,7 @@ G_M34740_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp gword ptr [rcx+0x10], 0
- jne SHORT G_M34740_IG07
+ jne SHORT G_M34740_IG05
mov rcx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[rcx] mov edx, 1 @@ -64,37 +62,25 @@ G_M34740_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- xor esi, esi - mov rdi, 0xD1FFAB1E ; <unknown class> - ;; size=46 bbWeight=1 PerfScore 7.25 -G_M34740_IG04: ; bbWeight=7.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rcx, rdi
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov rsi, rax + ; gcrRegs +[rsi]
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, qword ptr [rcx+0x48]
- mov rcx, r14
+ mov rcx, rsi
call [<unknown method>] ; gcrRegs -[rax rcx] ; gcr arg pop 0
- mov ecx, esi - lea rcx, bword ptr [rbx+8*rcx+0x10]
+ lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
- mov rdx, r14
+ mov rdx, rsi
; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
+ ; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
- inc esi - test esi, esi - jle SHORT G_M34740_IG04 - ;; size=49 bbWeight=7.92 PerfScore 93.06 -G_M34740_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] lea rcx, bword ptr [rcx+0x10] @@ -105,12 +91,12 @@ G_M34740_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rbx] ; byrRegs -[rcx]
- jmp SHORT G_M34740_IG07 - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M34740_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M34740_IG05 + ;; size=99 bbWeight=1 PerfScore 21.00 +G_M34740_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=0 PerfScore 0.00
-G_M34740_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34740_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x18] @@ -121,78 +107,68 @@ G_M34740_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 nop ;; size=17 bbWeight=1 PerfScore 9.25
-G_M34740_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M34740_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.75 -G_M34740_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=8 bbWeight=1 PerfScore 2.75 +G_M34740_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx] push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50] - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M34740_IG10: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V00 V02}
+ lea rbp, [rbp+0x40] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34740_IG08: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V00}
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] call <unknown method> ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- lea rax, G_M34740_IG06
+ lea rax, G_M34740_IG04
;; size=22 bbWeight=0 PerfScore 0.00
-G_M34740_IG11: ; bbWeight=0, funclet epilog, nogc, extend
+G_M34740_IG09: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00 -G_M34740_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M34740_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r14 - push rdi
push rsi push rbx sub rsp, 48 mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50] - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M34740_IG13: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rbp, [rbp+0x40] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M34740_IG11: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x18] cmp dword ptr [rcx], ecx
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
call [System.Threading.LowLevelLock:Release():this] ; gcrRegs -[rcx] ; gcr arg pop 0 nop ;; size=17 bbWeight=0 PerfScore 0.00
-G_M34740_IG14: ; bbWeight=0, funclet epilog, nogc, extend
+G_M34740_IG12: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi
- pop rdi - pop r14
pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 301, prolog size 23, PerfScore 138.81, instruction count 99, allocated bytes for code 301 (MethodHash=d1ba784b) for method System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
+; Total bytes of code 269, prolog size 20, PerfScore 51.75, instruction count 81, allocated bytes for code 269 (MethodHash=d1ba784b) for method System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
; ============================================================ Unwind Info: @@ -200,51 +176,45 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ 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: rbp (5) Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
...

+33 (+78.57%) : 20108.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive

@@ -9,11 +9,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T00] ( 7, 20 ) ref -> rcx class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T00] ( 12, 22.25) ref -> rcx class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T02] ( 2, 4 ) ref -> rax "field V02._node (fldOffset=0x0)" P-INDEP
+; V05 tmp2 [V05,T03] ( 4, 4.50) ref -> rdx "field V02._node (fldOffset=0x0)" P-INDEP +; V06 cse0 [V06,T02] ( 3, 5 ) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,32 +24,58 @@ G_M49395_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr ; gcrRegs +[rcx] jmp SHORT G_M49395_IG04 ;; size=2 bbWeight=1 PerfScore 2.00
-G_M49395_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov rax, gword ptr [rcx+0x10]
+G_M49395_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rax]
- cmp word ptr [rax+0x0C], 0x2164 - je SHORT G_M49395_IG06
+ mov rdx, gword ptr [rcx+0x10] + ; gcrRegs +[rdx] + cmp word ptr [rdx+0x0C], 0x2164 + je SHORT G_M49395_IG10 + mov rcx, gword ptr [rcx+0x08] + jmp SHORT G_M49395_IG08 + ;; size=18 bbWeight=0.25 PerfScore 2.50 +G_M49395_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rdx] + test rcx, rcx + je SHORT G_M49395_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M49395_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E ; const ptr + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + cmp rcx, rax + jne SHORT G_M49395_IG03 + ;; size=18 bbWeight=0.50 PerfScore 1.75 +G_M49395_IG06: ; bbWeight=0.06, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M49395_IG10 + ;; size=2 bbWeight=0.06 PerfScore 0.12 +G_M49395_IG07: ; bbWeight=2, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax] + mov rdx, gword ptr [rcx+0x10] + ; gcrRegs +[rdx] + cmp word ptr [rdx+0x0C], 0x2164 + je SHORT G_M49395_IG10
mov rcx, gword ptr [rcx+0x08] ;; size=16 bbWeight=2 PerfScore 16.00
-G_M49395_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
+G_M49395_IG08: ; bbWeight=8, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdx]
test rcx, rcx
- je SHORT G_M49395_IG06
+ je SHORT G_M49395_IG10
;; size=5 bbWeight=8 PerfScore 10.00
-G_M49395_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov rax, 0xD1FFAB1E ; const ptr - cmp rcx, gword ptr [rax] - jne SHORT G_M49395_IG03 - ;; size=15 bbWeight=4 PerfScore 17.00 -G_M49395_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M49395_IG09: ; bbWeight=4, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz + cmp rcx, rax + jne SHORT G_M49395_IG07 + ;; size=5 bbWeight=4 PerfScore 5.00 +G_M49395_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rax, rcx ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M49395_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M49395_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 0, PerfScore 46.25, instruction count 12, allocated bytes for code 42 (MethodHash=07ef3f0c) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
+; Total bytes of code 75, prolog size 0, PerfScore 39.88, instruction count 23, allocated bytes for code 75 (MethodHash=07ef3f0c) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIf(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (FullOpts)
; ============================================================ Unwind Info:

+17 (+80.95%) : 20586.dasm - Microsoft.CodeAnalysis.RealParser:CountSignificantBits(ubyte):uint (FullOpts)

@@ -7,9 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 15 ) ubyte -> rcx -; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax
+; V00 arg0 [V00,T00] ( 8, 17 ) ubyte -> rcx +; V01 loc0 [V01,T01] ( 5, 11 ) int -> rax
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T02] ( 3, 3 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -17,9 +18,15 @@ G_M8822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=0 bbWeight=1 PerfScore 0.00 G_M8822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz xor eax, eax
+ movzx rcx, cl + test ecx, ecx + je SHORT G_M8822_IG04 + sar ecx, 1 + movzx rcx, cl + mov eax, 1
test cl, cl je SHORT G_M8822_IG04
- ;; size=6 bbWeight=1 PerfScore 1.50
+ ;; size=23 bbWeight=1 PerfScore 4.00
G_M8822_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movzx rcx, cl sar ecx, 1 @@ -32,7 +39,7 @@ G_M8822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 21, prolog size 0, PerfScore 12.50, instruction count 10, allocated bytes for code 21 (MethodHash=c66add89) for method Microsoft.CodeAnalysis.RealParser:CountSignificantBits(ubyte):uint (FullOpts)
+; Total bytes of code 38, prolog size 0, PerfScore 15.00, instruction count 16, allocated bytes for code 38 (MethodHash=c66add89) for method Microsoft.CodeAnalysis.RealParser:CountSignificantBits(ubyte):uint (FullOpts)
; ============================================================ Unwind Info:

+32 (+82.05%) : 27598.dasm - System.Collections.Immutable.ImmutableList1+Node[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)

@@ -7,53 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 23 ) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V01 arg1 [V01,T00] ( 6, 26 ) int -> rdx
+; V00 this [V00,T02] ( 11, 25.50) ref -> rcx this class-hnd <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V01 arg1 [V01,T00] ( 10, 29 ) int -> rdx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 16 ) int -> rdx "arg temp" -; V04 tmp2 [V04,T04] ( 2, 16 ) ref -> rcx single-def "arg temp" -; V05 tmp3 [V05,T05] ( 2, 16 ) ref -> rcx single-def "arg temp"
+; V03 tmp1 [V03,T06] ( 4, 18 ) int -> rdx "arg temp" +; V04 tmp2 [V04,T04] ( 4, 18 ) ref -> rcx "arg temp" +; V05 tmp3 [V05,T05] ( 4, 18 ) ref -> rcx "arg temp"
; V06 cse0 [V06,T01] ( 4, 28 ) int -> r8 "CSE - aggressive"
-; V07 cse1 [V07,T03] ( 3, 20 ) ref -> rax "CSE - aggressive"
+; V07 cse1 [V07,T07] ( 4, 3.50) int -> r8 "CSE - aggressive" +; V08 cse2 [V08,T03] ( 3, 20 ) ref -> rax "CSE - aggressive" +; V09 cse3 [V09,T08] ( 3, 2.50) ref -> rax "CSE - aggressive"
; ; Lcl frame size = 0 G_M15847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M15847_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M15847_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x08] ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x18] cmp edx, r8d jge SHORT G_M15847_IG04
- ;; size=13 bbWeight=8 PerfScore 42.00 -G_M15847_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M15847_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, rax ; gcrRegs +[rcx]
- jmp SHORT G_M15847_IG02 - ;; size=5 bbWeight=4 PerfScore 9.00 -G_M15847_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M15847_IG06 + ;; size=5 bbWeight=0.50 PerfScore 1.12 +G_M15847_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edx, r8d
- jle SHORT G_M15847_IG06 - ;; size=5 bbWeight=8 PerfScore 10.00 -G_M15847_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M15847_IG10 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M15847_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
sub edx, r8d dec edx mov rcx, gword ptr [rcx+0x10]
- jmp SHORT G_M15847_IG02
+ ;; size=9 bbWeight=0.50 PerfScore 1.25 +G_M15847_IG06: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+0x08] + ; gcrRegs +[rax] + mov r8d, dword ptr [rax+0x18] + cmp edx, r8d + jge SHORT G_M15847_IG08 + ;; size=13 bbWeight=8 PerfScore 42.00 +G_M15847_IG07: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M15847_IG06 + ;; size=5 bbWeight=4 PerfScore 9.00 +G_M15847_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp edx, r8d + jle SHORT G_M15847_IG10 + ;; size=5 bbWeight=8 PerfScore 10.00 +G_M15847_IG09: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + sub edx, r8d + dec edx + mov rcx, gword ptr [rcx+0x10] + jmp SHORT G_M15847_IG06
;; size=11 bbWeight=4 PerfScore 18.00
-G_M15847_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M15847_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea rax, bword ptr [rcx+0x20] ; byrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M15847_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M15847_IG11: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 39, prolog size 0, PerfScore 80.50, instruction count 14, allocated bytes for code 39 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
+; Total bytes of code 71, prolog size 0, PerfScore 89.38, instruction count 25, allocated bytes for code 71 (MethodHash=df1ac218) for method System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ItemRefUnchecked(int):byref:this (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.windows.x64.checked.mch

-12 (-7.41%) : 9610.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)

@@ -7,34 +7,33 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 9, 18 ) ref -> rbx this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> -; V01 arg1 [V01,T03] ( 7, 9 ) ref -> rsi class-hnd single-def <System.Linq.Expressions.InvocationExpression> -; V02 loc0 [V02,T06] ( 2, 5 ) ref -> rdi class-hnd exact single-def <System.String> -; V03 loc1 [V03,T02] ( 5, 17 ) int -> rbp -;* V04 loc2 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V00 this [V00,T00] ( 9, 9 ) ref -> rbx this class-hnd exact single-def <System.Linq.Expressions.ExpressionStringBuilder> +; V01 arg1 [V01,T01] ( 7, 6 ) ref -> rsi class-hnd single-def <System.Linq.Expressions.InvocationExpression> +; V02 loc0 [V02,T04] ( 2, 2 ) ref -> rdx class-hnd exact single-def <System.String> +;* V03 loc1 [V03,T07] ( 0, 0 ) int -> zero-ref +;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V09 tmp4 [V09,T04] ( 2, 8 ) ref -> rdx "guarded devirt return temp"
+; V09 tmp4 [V09,T05] ( 2, 2 ) ref -> rdx "guarded devirt return temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Expressions.InvocationExpression1>
-; V12 tmp7 [V12,T05] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> -; V13 tmp8 [V13,T00] ( 3, 24 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.StringBuilder>
+; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> +; V13 tmp8 [V13,T03] ( 3, 6 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Text.StringBuilder> +; V14 cse0 [V14,T06] ( 2, 2 ) byref -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 G_M18080_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
- push rbp
push rbx sub rsp, 40 mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; gcrRegs +[rsi]
- ;; size=14 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M18080_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -57,28 +56,25 @@ G_M18080_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, call [rax+0x30]<unknown method> ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- lea rdi, gword ptr [(reloc)] - ; gcrRegs +[rdi] - xor ebp, ebp
+ lea rdx, gword ptr [(reloc)] + ; gcrRegs +[rdx]
lea r8, [(reloc)] cmp qword ptr [rsi], r8
- je SHORT G_M18080_IG06 - ;; size=62 bbWeight=1 PerfScore 19.50 -G_M18080_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
+ je SHORT G_M18080_IG04
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] cmp byte ptr [rcx], cl mov r8d, 2
- lea rdx, bword ptr [rdi+0x0C]
+ add rdx, 12 + ; gcrRegs -[rdx]
; byrRegs +[rdx] call <unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; byrRegs -[rdx] ; gcr arg pop 0 mov rcx, rsi ; gcrRegs +[rcx]
- mov edx, ebp
+ xor edx, edx
call System.Linq.Expressions.InvocationExpression1:GetArgument(int):System.Linq.Expressions.Expression:this ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 @@ -91,30 +87,22 @@ G_M18080_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 call [rax+0x30]<unknown method> ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- inc ebp - test ebp, ebp - jle SHORT G_M18080_IG03 - ;; size=49 bbWeight=4 PerfScore 61.00 -G_M18080_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rdi]
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov edx, 41 cmp dword ptr [rcx], ecx call System.Text.StringBuilder:Append(ushort):System.Text.StringBuilder:this
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx rbx]
; gcr arg pop 0 mov rax, rsi
- ;; size=19 bbWeight=1 PerfScore 6.50 -G_M18080_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=122 bbWeight=1 PerfScore 39.25 +G_M18080_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx
- pop rbp
pop rsi
- pop rdi
ret
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M18080_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov rcx, rsi ; gcrRegs +[rcx] @@ -124,7 +112,7 @@ G_M18080_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 { int3 ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 162, prolog size 8, PerfScore 95.00, instruction count 51, allocated bytes for code 162 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
+; Total bytes of code 150, prolog size 6, PerfScore 44.25, instruction count 43, allocated bytes for code 150 (MethodHash=c8b5b95f) for method System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
; ============================================================ Unwind Info: @@ -132,13 +120,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
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: 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)

-2 (-2.33%) : 12638.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -8,21 +8,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rcx this class-hnd exact single-def <Internal.TypeSystem.NoMetadata.NoMetadataType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> rbx single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> rsi single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> rdi "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> rsi single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> rdi "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> rsi single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> rsi single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> rcx "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> rbp hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> rcx "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -42,10 +42,10 @@ G_M3627_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre mov ebp, dword ptr [rsi+0x08] jmp SHORT G_M3627_IG04 ;; size=14 bbWeight=1 PerfScore 6.25
-G_M3627_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M3627_IG03: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] cmp edi, ebp
- jae SHORT G_M3627_IG10
+ jae SHORT G_M3627_IG09
mov ecx, edi mov rcx, gword ptr [rsi+8*rcx+0x10] ; gcrRegs +[rcx] @@ -55,32 +55,18 @@ G_M3627_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M3627_IG06 - ;; size=23 bbWeight=2 PerfScore 20.00 -G_M3627_IG04: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3627_IG07 + ;; size=23 bbWeight=0.25 PerfScore 2.50 +G_M3627_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc edi cmp ebp, edi jg SHORT G_M3627_IG03
- ;; size=6 bbWeight=8 PerfScore 12.00 -G_M3627_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 1.50 +G_M3627_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp SHORT G_M3627_IG08 - ;; size=2 bbWeight=4 PerfScore 8.00 -G_M3627_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M3627_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M3627_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3627_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -88,13 +74,24 @@ G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M3627_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3627_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M3627_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M3627_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 86, prolog size 8, PerfScore 54.25, instruction count 39, allocated bytes for code 86 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 18.25, instruction count 38, allocated bytes for code 84 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Unwind Info:

-2 (-2.15%) : 7294.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)

@@ -9,21 +9,21 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 3, 3 ) ref -> rcx this class-hnd exact single-def <Internal.TypeSystem.NoMetadata.NoMetadataType>
-; V01 arg1 [V01,T04] ( 3, 4 ) int -> rbx single-def
+; V01 arg1 [V01,T04] ( 3, 2.25) int -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation+Enumerator> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.TypeSystem.Instantiation> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.TypeDesc> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.Instantiation+Enumerator> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc[]>
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V09 tmp4 [V09,T06] ( 3, 4 ) ref -> rsi single-def "field V02._collection (fldOffset=0x0)" P-INDEP -; V10 tmp5 [V10,T00] ( 6, 29 ) int -> rdi "field V02._currentIndex (fldOffset=0x8)" P-INDEP
+;* V08 tmp3 [V08,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V09 tmp4 [V09,T03] ( 3, 2.25) ref -> rsi single-def "field V02._collection (fldOffset=0x0)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 4.50) int -> rdi "field V02._currentIndex (fldOffset=0x8)" P-INDEP
; V11 tmp6 [V11,T07] ( 2, 2 ) ref -> rsi single-def "field V03._genericParameters (fldOffset=0x0)" P-INDEP ; V12 tmp7 [V12,T08] ( 2, 2 ) ref -> rsi single-def "field V06._collection (fldOffset=0x0)" P-INDEP ;* V13 tmp8 [V13,T09] ( 0, 0 ) int -> zero-ref single-def "field V06._currentIndex (fldOffset=0x8)" P-INDEP
-; V14 tmp9 [V14,T01] ( 3, 12 ) ref -> rcx "argument with side effect" -; V15 cse0 [V15,T02] ( 3, 11 ) int -> rbp hoist "CSE - aggressive"
+; V14 tmp9 [V14,T02] ( 3, 1.50) ref -> rcx "argument with side effect" +; V15 cse0 [V15,T06] ( 3, 2.25) int -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -43,10 +43,10 @@ G_M3627_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre mov ebp, dword ptr [rsi+0x08] jmp SHORT G_M3627_IG04 ;; size=14 bbWeight=1 PerfScore 6.25
-G_M3627_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M3627_IG03: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] cmp edi, ebp
- jae SHORT G_M3627_IG10
+ jae SHORT G_M3627_IG09
mov ecx, edi mov rcx, gword ptr [rsi+8*rcx+0x10] ; gcrRegs +[rcx] @@ -57,32 +57,18 @@ G_M3627_IG03: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M3627_IG06 - ;; size=30 bbWeight=2 PerfScore 24.00 -G_M3627_IG04: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M3627_IG07 + ;; size=30 bbWeight=0.25 PerfScore 3.00 +G_M3627_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc edi cmp ebp, edi jg SHORT G_M3627_IG03
- ;; size=6 bbWeight=8 PerfScore 12.00 -G_M3627_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 1.50 +G_M3627_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp SHORT G_M3627_IG08 - ;; size=2 bbWeight=4 PerfScore 8.00 -G_M3627_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M3627_IG07: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M3627_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M3627_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -90,13 +76,24 @@ G_M3627_IG09: ; bbWeight=0.50, epilog, nogc, extend pop rdi ret ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M3627_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3627_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M3627_IG08: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M3627_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 93, prolog size 8, PerfScore 58.25, instruction count 40, allocated bytes for code 93 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
+; Total bytes of code 91, prolog size 8, PerfScore 18.75, instruction count 39, allocated bytes for code 91 (MethodHash=ce01f1d4) for method Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
; ============================================================ Unwind Info:

+37 (+82.22%) : 28438.dasm - System.Buffers.Text.FormattingHelpers:CountDecimalTrailingZeros(uint,byref):int (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 16 ) int -> rcx
+; V00 arg0 [V00,T00] ( 10, 19 ) int -> rcx
; V01 arg1 [V01,T03] ( 3, 3 ) byref -> rdx single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> rax -; V03 loc1 [V03,T01] ( 3, 12 ) int -> r8
+; V02 loc0 [V02,T02] ( 5, 11 ) int -> rax +; V03 loc1 [V03,T01] ( 6, 15 ) int -> r8
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -22,7 +22,17 @@ G_M41044_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byr xor eax, eax test ecx, ecx je SHORT G_M41044_IG04
- ;; size=6 bbWeight=1 PerfScore 1.50
+ mov r8d, 0xD1FFAB1E + mov r10d, ecx + imul r8, r10 + shr r8, 35 + lea r10d, [r8+4*r8] + add r10d, r10d + cmp ecx, r10d + jne SHORT G_M41044_IG04 + mov ecx, r8d + mov eax, 1 + ;; size=43 bbWeight=1 PerfScore 7.00
G_M41044_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz mov r8d, 0xD1FFAB1E mov r10d, ecx @@ -43,7 +53,7 @@ G_M41044_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 45, prolog size 0, PerfScore 33.50, instruction count 16, allocated bytes for code 45 (MethodHash=2a9f5fab) for method System.Buffers.Text.FormattingHelpers:CountDecimalTrailingZeros(uint,byref):int (FullOpts)
+; Total bytes of code 82, prolog size 0, PerfScore 39.00, instruction count 26, allocated bytes for code 82 (MethodHash=2a9f5fab) for method System.Buffers.Text.FormattingHelpers:CountDecimalTrailingZeros(uint,byref):int (FullOpts)
; ============================================================ Unwind Info:

+39 (+84.78%) : 2462.dasm - System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)

@@ -7,44 +7,56 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 18 ) byref -> rcx single-def -; V01 arg1 [V01,T03] ( 3, 10 ) long -> rdx single-def -; V02 loc0 [V02,T00] ( 5, 40 ) long -> [rsp+0x00] spill-single-def -; V03 loc1 [V03,T01] ( 5, 27 ) long -> r8
+; V00 arg0 [V00,T02] ( 6, 20 ) byref -> rcx single-def +; V01 arg1 [V01,T03] ( 4, 11 ) long -> rdx single-def +; V02 loc0 [V02,T00] ( 10, 45 ) long -> [rsp+0x00] +; V03 loc1 [V03,T01] ( 10, 32 ) long -> r8
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8
-G_M36377_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rax
- ;; size=1 bbWeight=8 PerfScore 8.00 -G_M36377_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M36377_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx] mov rax, qword ptr [rcx]
- mov qword ptr [rsp], rax
lea r8, [rax+rdx]
+ mov r10, 0xD1FFAB1E
cmp r8, rax
- jge SHORT G_M36377_IG04 - ;; size=16 bbWeight=8 PerfScore 38.00 -G_M36377_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref - mov r8, 0xD1FFAB1E - ;; size=10 bbWeight=2 PerfScore 0.50 -G_M36377_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
+ cmovl r8, r10 + mov qword ptr [rsp], rax
lock cmpxchg qword ptr [rcx], r8 cmp rax, qword ptr [rsp]
- jne SHORT G_M36377_IG02 - ;; size=11 bbWeight=8 PerfScore 168.00 -G_M36377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M36377_IG06 + ;; size=39 bbWeight=1 PerfScore 25.25 +G_M36377_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov rax, qword ptr [rcx] + lea r8, [rax+rdx] + cmp r8, rax + jge SHORT G_M36377_IG05 + ;; size=12 bbWeight=8 PerfScore 30.00 +G_M36377_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref + mov r8, 0xD1FFAB1E + ;; size=10 bbWeight=2 PerfScore 0.50 +G_M36377_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz + mov qword ptr [rsp], rax + lock + cmpxchg qword ptr [rcx], r8 + cmp rax, qword ptr [rsp] + jne SHORT G_M36377_IG03 + ;; size=15 bbWeight=8 PerfScore 176.00 +G_M36377_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx] mov rax, r8 ;; size=3 bbWeight=1 PerfScore 0.25
-G_M36377_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M36377_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 1, PerfScore 216.00, instruction count 14, allocated bytes for code 46 (MethodHash=ecbb71e6) for method System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)
+; Total bytes of code 85, prolog size 1, PerfScore 234.25, instruction count 24, allocated bytes for code 85 (MethodHash=ecbb71e6) for method System.GC:InterlockedAddMemoryPressure(byref,long):long (FullOpts)
; ============================================================ Unwind Info:

+21 (+95.45%) : 12278.dasm - System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)

@@ -7,10 +7,10 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 12 ) ref -> rcx this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
+; V00 this [V00,T01] ( 6, 14 ) ref -> rcx this class-hnd exact <System.Collections.Hashtable+SyncHashtable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt return temp"
-; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> rax single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 8, 46 ) ref -> rax "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Hashtable> ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Hashtable+SyncHashtable> ; @@ -18,26 +18,40 @@ G_M30653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG ;; size=0 bbWeight=1 PerfScore 0.00
-G_M30653_IG02: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M30653_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x40] ; gcrRegs +[rax] lea rcx, [(reloc)] ; gcrRegs -[rcx] cmp qword ptr [rax], rcx
- je SHORT G_M30653_IG04 - ;; size=16 bbWeight=8 PerfScore 52.00 -G_M30653_IG03: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M30653_IG05
mov rcx, rax ; gcrRegs +[rcx]
- jmp SHORT G_M30653_IG02 - ;; size=5 bbWeight=2 PerfScore 4.50 -G_M30653_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=19 bbWeight=1 PerfScore 6.75 +G_M30653_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, gword ptr [rcx+0x40] + ; gcrRegs +[rax] + lea rcx, [(reloc)]
; gcrRegs -[rcx]
+ cmp qword ptr [rax], rcx + je SHORT G_M30653_IG05 + ;; size=16 bbWeight=8 PerfScore 52.00 +G_M30653_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rcx, rax + ; gcrRegs +[rcx] + jmp SHORT G_M30653_IG03 + ;; size=5 bbWeight=2 PerfScore 4.50 +G_M30653_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + cmp byte ptr [rax], al + ;; size=2 bbWeight=1 PerfScore 3.00 +G_M30653_IG06: ; bbWeight=1, epilog, nogc, extend
ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 22, prolog size 0, PerfScore 57.50, instruction count 7, allocated bytes for code 22 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
+; Total bytes of code 43, prolog size 0, PerfScore 67.25, instruction count 13, allocated bytes for code 43 (MethodHash=e1238842) for method System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (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 14,507 78 14,392 37 -1,459 +5,220,449
benchmarks.run.windows.x64.checked.mch 5,652 26 5,614 12 -834 +1,458,550
benchmarks.run_pgo.windows.x64.checked.mch 18,471 34 18,412 25 -1,488 +6,241,369
benchmarks.run_tiered.windows.x64.checked.mch 2,859 11 2,845 3 -529 +792,337
coreclr_tests.run.windows.x64.checked.mch 32,803 1,576 31,164 63 -36,693 +6,886,966
libraries.crossgen2.windows.x64.checked.mch 22,835 45 22,769 21 -489 +4,171,304
libraries.pmi.windows.x64.checked.mch 26,354 131 26,163 60 -1,470 +6,549,546
libraries_tests.run.windows.x64.Release.mch 54,940 537 54,311 92 -18,852 +26,593,678
librariestestsnotieredcompilation.run.windows.x64.Release.mch 26,278 155 26,092 31 -9,528 +9,508,392
realworld.run.windows.x64.checked.mch 5,422 33 5,380 9 -855 +1,889,941
smoke_tests.nativeaot.windows.x64.checked.mch 3,802 16 3,779 7 -44 +730,689
213,923 2,642 210,921 360 -72,241 +70,043,221

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 113,609 48,175 65,434 0 (0.00%) 99 (0.09%)
benchmarks.run.windows.x64.checked.mch 27,836 4 27,832 234 (0.83%) 250 (0.89%)
benchmarks.run_pgo.windows.x64.checked.mch 101,137 49,789 51,348 129 (0.13%) 581 (0.57%)
benchmarks.run_tiered.windows.x64.checked.mch 54,299 36,842 17,457 76 (0.14%) 86 (0.16%)
coreclr_tests.run.windows.x64.checked.mch 573,348 340,982 232,366 446 (0.08%) 641 (0.11%)
libraries.crossgen2.windows.x64.checked.mch 243,393 15 243,378 0 (0.00%) 32 (0.01%)
libraries.pmi.windows.x64.checked.mch 306,228 6 306,222 2,206 (0.72%) 2,270 (0.74%)
libraries_tests.run.windows.x64.Release.mch 671,770 479,203 192,567 1,126 (0.17%) 1,517 (0.23%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 318,216 21,885 296,331 2,194 (0.68%) 2,295 (0.72%)
realworld.run.windows.x64.checked.mch 36,472 3 36,469 402 (1.09%) 418 (1.13%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,365 11 32,354 3 (0.01%) 47 (0.15%)
2,478,673 976,915 1,501,758 6,816 (0.27%) 8,236 (0.33%)

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: 43157840 (overridden on cmd)
Total bytes of diff: 48376830 (overridden on cmd)
Total bytes of delta: 5218990 (12.09 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       12013 : 69729.dasm (108.70 % of base)
       11242 : 109209.dasm (75.53 % of base)
       11232 : 110743.dasm (75.46 % of base)
       10328 : 76306.dasm (91.31 % of base)
       10074 : 68362.dasm (92.32 % of base)
       10074 : 90543.dasm (92.32 % of base)
       10066 : 76355.dasm (110.25 % of base)
        9689 : 53681.dasm (98.30 % of base)
        9689 : 60678.dasm (98.30 % of base)
        9689 : 15138.dasm (98.30 % of base)
        9689 : 40640.dasm (98.30 % of base)
        9689 : 111686.dasm (98.30 % of base)
        9689 : 12944.dasm (98.30 % of base)
        9689 : 27078.dasm (98.30 % of base)
        9689 : 67605.dasm (98.30 % of base)
        9689 : 9794.dasm (98.30 % of base)
        9689 : 9284.dasm (98.30 % of base)
        9689 : 93607.dasm (98.30 % of base)
        9544 : 107082.dasm (74.26 % of base)
        9508 : 92350.dasm (74.58 % of base)

Top file improvements (bytes):
        -108 : 42056.dasm (-11.53 % of base)
         -67 : 70757.dasm (-1.57 % of base)
         -62 : 79461.dasm (-1.16 % of base)
         -62 : 90806.dasm (-1.16 % of base)
         -59 : 99928.dasm (-1.32 % of base)
         -57 : 39139.dasm (-2.46 % of base)
         -56 : 58523.dasm (-2.53 % of base)
         -54 : 85472.dasm (-0.66 % of base)
         -52 : 63693.dasm (-2.32 % of base)
         -50 : 39560.dasm (-2.24 % of base)
         -48 : 53982.dasm (-2.14 % of base)
         -45 : 20792.dasm (-1.99 % of base)
         -41 : 16515.dasm (-1.77 % of base)
         -40 : 44478.dasm (-1.87 % of base)
         -35 : 111009.dasm (-5.16 % of base)
         -32 : 110880.dasm (-2.83 % of base)
         -32 : 90857.dasm (-0.40 % of base)
         -31 : 112427.dasm (-2.68 % of base)
         -30 : 44321.dasm (-2.33 % of base)
         -29 : 82408.dasm (-0.36 % of base)

92 total files with Code Size differences (31 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       12013 (108.70 % of base) : 69729.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
       11242 (75.53 % of base) : 109209.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
       11232 (75.46 % of base) : 110743.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
       10328 (91.31 % of base) : 76306.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1-OSR)
       10074 (92.32 % of base) : 68362.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetSerializableMembers(System.Type):System.Collections.Generic.List`1[System.Reflection.MemberInfo]:this (Tier1-OSR)
       10074 (92.32 % of base) : 90543.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetSerializableMembers(System.Type):System.Collections.Generic.List`1[System.Reflection.MemberInfo]:this (Tier1-OSR)
       10066 (110.25 % of base) : 76355.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        9689 (98.30 % of base) : 53681.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 60678.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 15138.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 40640.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 111686.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 12944.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 27078.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 67605.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 9794.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 9284.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9689 (98.30 % of base) : 93607.dasm - System.Diagnostics.Tracing.EventSource:DefineEventPipeEvents():this (Tier1-OSR)
        9544 (74.26 % of base) : 107082.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        9508 (74.58 % of base) : 92350.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -108 (-11.53 % of base) : 42056.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Instrumented Tier1)
         -67 (-1.57 % of base) : 70757.dasm - YesSql.Session+<FlushAsync>d__35:MoveNext():this (Tier0-FullOpts)
         -62 (-1.16 % of base) : 79461.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Tier1-OSR)
         -62 (-1.16 % of base) : 90806.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Tier1-OSR)
         -59 (-1.32 % of base) : 99928.dasm - YesSql.Session+<FlushAsync>d__35:MoveNext():this (FullOpts)
         -57 (-2.46 % of base) : 39139.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -56 (-2.53 % of base) : 58523.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -54 (-0.66 % of base) : 85472.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Tier1-OSR)
         -52 (-2.32 % of base) : 63693.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -50 (-2.24 % of base) : 39560.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -48 (-2.14 % of base) : 53982.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -45 (-1.99 % of base) : 20792.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -41 (-1.77 % of base) : 16515.dasm - Dapper.SqlMapper:LoadReaderValueOrBranchToDBNullLabel(System.Reflection.Emit.ILGenerator,int,byref,System.Reflection.Emit.LocalBuilder,System.Type,System.Type,byref) (FullOpts)
         -40 (-1.87 % of base) : 44478.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.InternalModelBuilder:Entity(byref,int,System.Nullable`1[ubyte]):Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder:this (FullOpts)
         -35 (-5.16 % of base) : 111009.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
         -32 (-0.40 % of base) : 90857.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Tier1-OSR)
         -32 (-2.83 % of base) : 110880.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
         -31 (-2.68 % of base) : 112427.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
         -30 (-2.33 % of base) : 44321.dasm - Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer:.cctor() (FullOpts)
         -29 (-0.36 % of base) : 82408.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Tier1-OSR)

Top method regressions (percentages):
        2385 (145.69 % of base) : 29256.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (Tier1-OSR)
        2244 (133.33 % of base) : 90844.dasm - Parlot.Fluent.ZeroOrMany`1[System.__Canon]:Parse(Parlot.Fluent.ParseContext,byref):ubyte:this (Tier1-OSR)
        2243 (132.10 % of base) : 81725.dasm - Parlot.Fluent.ZeroOrMany`1[System.__Canon]:Parse(Parlot.Fluent.ParseContext,byref):ubyte:this (Tier1-OSR)
         209 (124.40 % of base) : 110501.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         209 (124.40 % of base) : 87909.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         209 (124.40 % of base) : 106670.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         209 (124.40 % of base) : 111330.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         209 (124.40 % of base) : 112828.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         209 (124.40 % of base) : 91956.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier1)
         672 (112.75 % of base) : 97989.dasm - NLog.Layouts.LayoutParser:ParseLayoutParameterValue(NLog.Internal.SimpleStringReader,System.Text.StringBuilder,System.Func`2[int,ubyte]):ubyte (FullOpts)
        9017 (111.21 % of base) : 73083.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        3761 (110.91 % of base) : 38748.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
        4305 (110.70 % of base) : 40080.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
        1256 (110.66 % of base) : 66539.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1-OSR)
        1256 (110.66 % of base) : 90486.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1-OSR)
        3107 (110.65 % of base) : 113633.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
        6372 (110.59 % of base) : 70738.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
        6372 (110.59 % of base) : 90620.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
        3519 (110.31 % of base) : 106128.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
       10066 (110.25 % of base) : 76355.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)

Top method improvements (percentages):
        -108 (-11.53 % of base) : 42056.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Instrumented Tier1)
         -12 (-6.00 % of base) : 44328.dasm - Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlLTreeTypeMapping:.cctor() (FullOpts)
         -15 (-5.84 % of base) : 97819.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -7 (-5.79 % of base) : 77731.dasm - System.SpanHelpers:Fill[int](byref,ulong,int) (Tier1-OSR)
         -35 (-5.16 % of base) : 111009.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
         -12 (-5.11 % of base) : 16134.dasm - Dapper.SqlMapper+<>c:<.cctor>b__90_1(System.Type):System.Reflection.MethodInfo:this (FullOpts)
         -20 (-4.56 % of base) : 44278.dasm - Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.Mapping.NpgsqlInetTypeMapping:.cctor() (FullOpts)
         -28 (-4.37 % of base) : 110081.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
         -26 (-4.02 % of base) : 112535.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-3.54 % of base) : 11140.dasm - System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
         -32 (-2.83 % of base) : 110880.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
         -15 (-2.69 % of base) : 91605.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
         -31 (-2.68 % of base) : 112427.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
         -56 (-2.53 % of base) : 58523.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -57 (-2.46 % of base) : 39139.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -30 (-2.33 % of base) : 44321.dasm - Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer:.cctor() (FullOpts)
         -52 (-2.32 % of base) : 63693.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -50 (-2.24 % of base) : 39560.dasm - Benchmarks.Middleware.JsonMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -14 (-2.15 % of base) : 106308.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
         -14 (-2.15 % of base) : 91305.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)


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: 8527978 (overridden on cmd)
Total bytes of diff: 9985694 (overridden on cmd)
Total bytes of delta: 1457716 (17.09 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       21708 : 7926.dasm (64.93 % of base)
       13639 : 20499.dasm (107.69 % of base)
       13114 : 8581.dasm (43.02 % of base)
        8505 : 25268.dasm (82.48 % of base)
        7375 : 2198.dasm (91.33 % of base)
        7324 : 5461.dasm (69.37 % of base)
        6843 : 14935.dasm (57.22 % of base)
        6569 : 19556.dasm (85.99 % of base)
        6383 : 17602.dasm (74.75 % of base)
        6348 : 22334.dasm (76.25 % of base)
        6121 : 885.dasm (83.01 % of base)
        6009 : 20757.dasm (98.86 % of base)
        5615 : 17418.dasm (65.90 % of base)
        5611 : 20451.dasm (73.90 % of base)
        5504 : 15006.dasm (74.95 % of base)
        5494 : 27837.dasm (76.68 % of base)
        5394 : 8096.dasm (31.12 % of base)
        5212 : 1373.dasm (91.94 % of base)
        4771 : 25279.dasm (58.70 % of base)
        4645 : 25800.dasm (80.18 % of base)

Top file improvements (bytes):
        -333 : 8157.dasm (-3.87 % of base)
        -152 : 404.dasm (-17.00 % of base)
         -53 : 4965.dasm (-5.69 % of base)
         -51 : 24450.dasm (-6.20 % of base)
         -42 : 19616.dasm (-4.90 % of base)
         -32 : 2364.dasm (-10.63 % of base)
         -27 : 15292.dasm (-1.06 % of base)
         -15 : 5023.dasm (-1.26 % of base)
         -15 : 8727.dasm (-7.61 % of base)
         -14 : 6544.dasm (-0.92 % of base)
         -12 : 14928.dasm (-1.80 % of base)
         -12 : 526.dasm (-1.27 % of base)
         -12 : 24840.dasm (-5.04 % of base)
         -12 : 26001.dasm (-1.05 % of base)
         -11 : 6123.dasm (-3.32 % of base)
         -10 : 7942.dasm (-0.65 % of base)
          -8 : 27884.dasm (-0.60 % of base)
          -4 : 19775.dasm (-0.80 % of base)
          -4 : 17832.dasm (-7.55 % of base)
          -3 : 10633.dasm (-0.51 % of base)

85 total files with Code Size differences (26 improved, 59 regressed), 12 unchanged.

Top method regressions (bytes):
       21708 (64.93 % of base) : 7926.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       13639 (107.69 % of base) : 20499.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13114 (43.02 % of base) : 8581.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        8505 (82.48 % of base) : 25268.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        7375 (91.33 % of base) : 2198.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        7324 (69.37 % of base) : 5461.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6843 (57.22 % of base) : 14935.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6569 (85.99 % of base) : 19556.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6383 (74.75 % of base) : 17602.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6348 (76.25 % of base) : 22334.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        6121 (83.01 % of base) : 885.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6009 (98.86 % of base) : 20757.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5615 (65.90 % of base) : 17418.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
        5611 (73.90 % of base) : 20451.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5504 (74.95 % of base) : 15006.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJson400KB(System.Text.Json.JsonElement) (FullOpts)
        5494 (76.68 % of base) : 27837.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        5394 (31.12 % of base) : 8096.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        5212 (91.94 % of base) : 1373.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4771 (58.70 % of base) : 25279.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)
        4645 (80.18 % of base) : 25800.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

Top method improvements (bytes):
        -333 (-3.87 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -152 (-17.00 % of base) : 404.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -53 (-5.69 % of base) : 4965.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -51 (-6.20 % of base) : 24450.dasm - BenchmarksGame.FannkuchRedux_5:Bench(int,ubyte):int (FullOpts)
         -42 (-4.90 % of base) : 19616.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
         -32 (-10.63 % of base) : 2364.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -27 (-1.06 % of base) : 15292.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
         -15 (-7.61 % of base) : 8727.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-1.26 % of base) : 5023.dasm - System.Text.Json.Nodes.JsonObject:InitializeDictionary():System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Nodes.JsonNode]:this (FullOpts)
         -14 (-0.92 % of base) : 6544.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
         -12 (-1.05 % of base) : 26001.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
         -12 (-1.80 % of base) : 14928.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -12 (-1.27 % of base) : 526.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
         -12 (-5.04 % of base) : 24840.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -11 (-3.32 % of base) : 6123.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -10 (-0.65 % of base) : 7942.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:.cctor() (FullOpts)
          -8 (-0.60 % of base) : 27884.dasm - BenchmarksGame.ReverseComplement_6:Grouper() (FullOpts)
          -4 (-0.80 % of base) : 19775.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (FullOpts)
          -4 (-7.55 % of base) : 17832.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
          -3 (-0.51 % of base) : 10633.dasm - System.String:SplitInternal(System.ReadOnlySpan`1[ushort],int,int):System.String[]:this (FullOpts)

Top method regressions (percentages):
         345 (173.37 % of base) : 18562.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
         103 (156.06 % of base) : 21438.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
          34 (125.93 % of base) : 9512.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
         151 (122.76 % of base) : 16528.dasm - AssignRect:CopyToAssign(int[,],int[,]) (FullOpts)
         213 (118.33 % of base) : 5002.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
         238 (111.21 % of base) : 22798.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
        3157 (110.81 % of base) : 15767.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__EnsureArrayIndexRegex_5+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         188 (109.94 % of base) : 16632.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
       13639 (107.69 % of base) : 20499.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        1092 (107.37 % of base) : 272.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
        1863 (106.64 % of base) : 24615.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
         385 (106.35 % of base) : 18560.dasm - Benchstone.MDBenchI.MDArray2:Bench(int):ubyte (FullOpts)
         137 (106.20 % of base) : 18561.dasm - Benchstone.MDBenchI.MDArray2:Initialize(int[,,]) (FullOpts)
         405 (106.02 % of base) : 23606.dasm - System.Text.Json.Utf8JsonReader:SkipAllCommentsMultiSegment(byref):ubyte:this (FullOpts)
         855 (105.95 % of base) : 16659.dasm - System.Runtime.Serialization.Json.JsonReaderDelegator+DateTimeArrayJsonHelperWithString:ReadArray(System.Xml.XmlDictionaryReader,System.String,System.String,System.DateTime[],int,int):int:this (FullOpts)
         414 (105.61 % of base) : 2142.dasm - System.Text.RegularExpressions.RegexParser:ScanBlank():this (FullOpts)
         438 (105.04 % of base) : 3256.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
        1133 (104.62 % of base) : 26096.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:proto_10(byref,MicroBenchmarks.Serializers.MyEventsListerItemTask):MicroBenchmarks.Serializers.MyEventsListerItemTask (FullOpts)
        2572 (104.30 % of base) : 15755.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        2079 (104.05 % of base) : 5452.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)

Top method improvements (percentages):
        -152 (-17.00 % of base) : 404.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-10.63 % of base) : 2364.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -15 (-7.61 % of base) : 8727.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-7.55 % of base) : 17832.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
         -51 (-6.20 % of base) : 24450.dasm - BenchmarksGame.FannkuchRedux_5:Bench(int,ubyte):int (FullOpts)
         -53 (-5.69 % of base) : 4965.dasm - System.Runtime.Serialization.DataContracts.XmlDataContract:GenerateCreateXmlSerializableDelegate():System.Runtime.Serialization.DataContracts.CreateXmlSerializableDelegate:this (FullOpts)
         -12 (-5.04 % of base) : 24840.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.Type,System.Type):System.Object (FullOpts)
         -42 (-4.90 % of base) : 19616.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
        -333 (-3.87 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -11 (-3.32 % of base) : 6123.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:GetShadowSetter(System.Reflection.PropertyInfo):System.Reflection.MethodInfo (FullOpts)
         -12 (-1.80 % of base) : 14928.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
          -2 (-1.77 % of base) : 9095.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.67 % of base) : 101.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.67 % of base) : 1649.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.67 % of base) : 1889.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.46 % of base) : 207.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.27 % of base) : 526.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
         -15 (-1.26 % of base) : 5023.dasm - System.Text.Json.Nodes.JsonObject:InitializeDictionary():System.Text.Json.JsonPropertyDictionary`1[System.Text.Json.Nodes.JsonNode]:this (FullOpts)
          -2 (-1.20 % of base) : 4607.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (FullOpts)
         -27 (-1.06 % of base) : 15292.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (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: 35281691 (overridden on cmd)
Total bytes of diff: 41521572 (overridden on cmd)
Total bytes of delta: 6239881 (17.69 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       21708 : 5731.dasm (64.93 % of base)
       13114 : 25286.dasm (43.02 % of base)
        8952 : 86632.dasm (78.31 % of base)
        8909 : 86620.dasm (77.90 % of base)
        8437 : 86631.dasm (81.23 % of base)
        7969 : 89518.dasm (100.75 % of base)
        7933 : 86068.dasm (113.23 % of base)
        6843 : 37565.dasm (57.22 % of base)
        6701 : 70130.dasm (71.20 % of base)
        6614 : 70146.dasm (70.15 % of base)
        6383 : 50132.dasm (74.75 % of base)
        6280 : 70145.dasm (74.76 % of base)
        6214 : 2225.dasm (83.47 % of base)
        5925 : 96098.dasm (81.70 % of base)
        5922 : 43473.dasm (81.60 % of base)
        5915 : 40975.dasm (81.70 % of base)
        5894 : 98060.dasm (81.82 % of base)
        5801 : 94971.dasm (82.12 % of base)
        5594 : 49084.dasm (65.50 % of base)
        5394 : 6127.dasm (31.12 % of base)

Top file improvements (bytes):
        -295 : 29324.dasm (-19.43 % of base)
        -295 : 29879.dasm (-19.45 % of base)
        -144 : 101384.dasm (-8.49 % of base)
        -144 : 101358.dasm (-8.49 % of base)
        -119 : 50949.dasm (-14.95 % of base)
        -118 : 92859.dasm (-6.96 % of base)
        -118 : 95860.dasm (-6.96 % of base)
        -111 : 60930.dasm (-12.69 % of base)
         -20 : 29089.dasm (-4.43 % of base)
         -20 : 35150.dasm (-4.43 % of base)
         -19 : 38391.dasm (-1.26 % of base)
         -18 : 41073.dasm (-0.24 % of base)
         -10 : 68802.dasm (-2.65 % of base)
          -9 : 58796.dasm (-2.67 % of base)
          -9 : 72745.dasm (-2.67 % of base)
          -6 : 73799.dasm (-1.22 % of base)
          -5 : 36575.dasm (-0.33 % of base)
          -5 : 74832.dasm (-1.49 % of base)
          -4 : 32696.dasm (-3.54 % of base)
          -2 : 44233.dasm (-0.29 % of base)

84 total files with Code Size differences (21 improved, 63 regressed), 20 unchanged.

Top method regressions (bytes):
       21708 (64.93 % of base) : 5731.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       13114 (43.02 % of base) : 25286.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        8952 (78.31 % of base) : 86632.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8909 (77.90 % of base) : 86620.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        8437 (81.23 % of base) : 86631.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        7969 (100.75 % of base) : 89518.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        7933 (113.23 % of base) : 86068.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        6843 (57.22 % of base) : 37565.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6701 (71.20 % of base) : 70130.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6614 (70.15 % of base) : 70146.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        6383 (74.75 % of base) : 50132.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6280 (74.76 % of base) : 70145.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6214 (83.47 % of base) : 2225.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        5925 (81.70 % of base) : 96098.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        5922 (81.60 % of base) : 43473.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        5915 (81.70 % of base) : 40975.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        5894 (81.82 % of base) : 98060.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        5801 (82.12 % of base) : 94971.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
        5594 (65.50 % of base) : 49084.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        5394 (31.12 % of base) : 6127.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)

Top method improvements (bytes):
        -295 (-19.43 % of base) : 29324.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -295 (-19.45 % of base) : 29879.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -144 (-8.49 % of base) : 101384.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -144 (-8.49 % of base) : 101358.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -119 (-14.95 % of base) : 50949.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -118 (-6.96 % of base) : 92859.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -118 (-6.96 % of base) : 95860.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -111 (-12.69 % of base) : 60930.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -20 (-4.43 % of base) : 29089.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -20 (-4.43 % of base) : 35150.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -19 (-1.26 % of base) : 38391.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -18 (-0.24 % of base) : 41073.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
         -10 (-2.65 % of base) : 68802.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
          -9 (-2.67 % of base) : 58796.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)
          -9 (-2.67 % of base) : 72745.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)
          -6 (-1.22 % of base) : 73799.dasm - Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator:TryMoveNextAndGetCurrentAsNode():Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          -5 (-1.49 % of base) : 74832.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)
          -5 (-0.33 % of base) : 36575.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -4 (-3.54 % of base) : 32696.dasm - System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
          -2 (-0.29 % of base) : 44233.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)

Top method regressions (percentages):
         267 (145.11 % of base) : 69421.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:ComputeOffsets():this (Tier1)
        2233 (142.05 % of base) : 74107.dasm - CscBench:DataflowBench():ubyte (Tier1-OSR)
        2079 (135.44 % of base) : 29067.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:InsertionSort(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]) (Tier1)
        1343 (134.57 % of base) : 51235.dasm - Benchstone.BenchI.NDhrystone:Proc0() (Tier1-OSR)
        4788 (133.26 % of base) : 91380.dasm - BenchmarksGame.pidigits:Run(ubyte):this (Tier1-OSR)
        1719 (131.52 % of base) : 45941.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
        4059 (128.45 % of base) : 82347.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
        4052 (127.94 % of base) : 77046.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
        1340 (127.13 % of base) : 99739.dasm - Benchstone.MDBenchI.MDNDhrystone:Proc0() (Tier1-OSR)
        3284 (123.00 % of base) : 83891.dasm - System.IO.Tests.Perf_Directory:SetupEnumerateFiles():this (Tier1-OSR)
        2311 (122.99 % of base) : 73927.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:DeclareVariables(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (Tier1)
        1575 (122.85 % of base) : 99971.dasm - Benchstone.MDBenchI.MDPuzzle:Trial(int):ubyte:this (Tier1)
         151 (122.76 % of base) : 45950.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier1)
         295 (119.92 % of base) : 68061.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        5094 (118.96 % of base) : 97100.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
        5093 (118.91 % of base) : 99786.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int,System.Comparison`1[System.Collections.BigStruct]) (Tier1)
         227 (118.23 % of base) : 73182.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
         230 (115.58 % of base) : 68048.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        1948 (115.20 % of base) : 38466.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:InsertionSort(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]) (Tier1)
        1602 (114.02 % of base) : 86195.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier1-OSR)

Top method improvements (percentages):
        -295 (-19.45 % of base) : 29879.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -295 (-19.43 % of base) : 29324.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -119 (-14.95 % of base) : 50949.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -111 (-12.69 % of base) : 60930.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -144 (-8.49 % of base) : 101384.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -144 (-8.49 % of base) : 101358.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -118 (-6.96 % of base) : 92859.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
        -118 (-6.96 % of base) : 95860.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1-OSR)
         -20 (-4.43 % of base) : 29089.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
         -20 (-4.43 % of base) : 35150.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
          -4 (-3.54 % of base) : 32696.dasm - System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
          -9 (-2.67 % of base) : 58796.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)
          -9 (-2.67 % of base) : 72745.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)
         -10 (-2.65 % of base) : 68802.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
          -5 (-1.49 % of base) : 74832.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)
         -19 (-1.26 % of base) : 38391.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -6 (-1.22 % of base) : 73799.dasm - Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator:TryMoveNextAndGetCurrentAsNode():Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          -5 (-0.33 % of base) : 36575.dasm - System.Linq.Enumerable+DistinctIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-0.29 % of base) : 44233.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -2 (-0.29 % of base) : 99130.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)


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: 12546330 (overridden on cmd)
Total bytes of diff: 13338138 (overridden on cmd)
Total bytes of delta: 791808 (6.31 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       21708 : 12665.dasm (64.93 % of base)
       13114 : 19479.dasm (43.02 % of base)
        9233 : 49865.dasm (106.72 % of base)
        8505 : 49991.dasm (82.48 % of base)
        7375 : 26453.dasm (91.65 % of base)
        6843 : 27870.dasm (57.22 % of base)
        6383 : 33218.dasm (74.75 % of base)
        6348 : 35280.dasm (76.25 % of base)
        6121 : 2036.dasm (83.01 % of base)
        5615 : 31995.dasm (65.90 % of base)
        5394 : 12909.dasm (31.12 % of base)
        4664 : 54376.dasm (77.39 % of base)
        4634 : 49843.dasm (28.46 % of base)
        4290 : 50723.dasm (78.83 % of base)
        3746 : 20822.dasm (74.68 % of base)
        3701 : 45739.dasm (68.59 % of base)
        3606 : 27485.dasm (92.08 % of base)
        3523 : 51122.dasm (34.51 % of base)
        3519 : 49700.dasm (86.36 % of base)
        3443 : 51120.dasm (61.02 % of base)

Top file improvements (bytes):
        -333 : 20840.dasm (-3.87 % of base)
        -149 : 2620.dasm (-17.55 % of base)
         -15 : 46373.dasm (-7.61 % of base)
         -12 : 21821.dasm (-1.27 % of base)
          -4 : 25768.dasm (-3.54 % of base)
          -4 : 36827.dasm (-0.71 % of base)
          -4 : 39276.dasm (-0.80 % of base)
          -2 : 2729.dasm (-1.67 % of base)
          -2 : 3121.dasm (-1.36 % of base)
          -2 : 26425.dasm (-1.67 % of base)
          -2 : 40543.dasm (-1.57 % of base)

82 total files with Code Size differences (11 improved, 71 regressed), 3 unchanged.

Top method regressions (bytes):
       21708 (64.93 % of base) : 12665.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
       13114 (43.02 % of base) : 19479.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
        9233 (106.72 % of base) : 49865.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
        8505 (82.48 % of base) : 49991.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        7375 (91.65 % of base) : 26453.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
        6843 (57.22 % of base) : 27870.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
        6383 (74.75 % of base) : 33218.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
        6348 (76.25 % of base) : 35280.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        6121 (83.01 % of base) : 2036.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
        5615 (65.90 % of base) : 31995.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
        5394 (31.12 % of base) : 12909.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        4664 (77.39 % of base) : 54376.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        4634 (28.46 % of base) : 49843.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
        4290 (78.83 % of base) : 50723.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        3746 (74.68 % of base) : 20822.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
        3701 (68.59 % of base) : 45739.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
        3606 (92.08 % of base) : 27485.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        3523 (34.51 % of base) : 51122.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
        3519 (86.36 % of base) : 49700.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        3443 (61.02 % of base) : 51120.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)

Top method improvements (bytes):
        -333 (-3.87 % of base) : 20840.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
        -149 (-17.55 % of base) : 2620.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -15 (-7.61 % of base) : 46373.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-1.27 % of base) : 21821.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
          -4 (-0.80 % of base) : 39276.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)
          -4 (-0.71 % of base) : 36827.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)
          -4 (-3.54 % of base) : 25768.dasm - System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
          -2 (-1.36 % of base) : 3121.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.67 % of base) : 2729.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -2 (-1.57 % of base) : 40543.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -2 (-1.67 % of base) : 26425.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
        1346 (123.83 % of base) : 33331.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
         151 (122.76 % of base) : 30172.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier1)
        1506 (122.54 % of base) : 31413.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
        1440 (117.17 % of base) : 30135.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
        1271 (113.38 % of base) : 32781.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
         238 (111.21 % of base) : 45376.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
        1092 (107.37 % of base) : 2975.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
        9233 (106.72 % of base) : 49865.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
         414 (105.61 % of base) : 21748.dasm - System.Text.RegularExpressions.RegexParser:ScanBlank():this (Tier1)
        1146 (104.37 % of base) : 51650.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:proto_10(byref,MicroBenchmarks.Serializers.MyEventsListerItemTask):MicroBenchmarks.Serializers.MyEventsListerItemTask (FullOpts)
        2572 (104.30 % of base) : 29816.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        1199 (103.45 % of base) : 47626.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (Tier1)
        1843 (102.85 % of base) : 48867.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
        2376 (102.77 % of base) : 13514.dasm - MicroBenchmarks.Serializers.Location:proto_2(byref,MicroBenchmarks.Serializers.Location):MicroBenchmarks.Serializers.Location (FullOpts)
        1562 (102.63 % of base) : 46298.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
        1498 (102.53 % of base) : 30169.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
        2143 (102.00 % of base) : 34940.dasm - MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:proto_8(byref,MicroBenchmarks.Serializers.ActiveOrUpcomingEvent):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent (FullOpts)
        1801 (101.92 % of base) : 34957.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_10(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel):MicroBenchmarks.Serializers.CampaignSummaryViewModel (FullOpts)
        1729 (101.65 % of base) : 50545.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
         139 (101.46 % of base) : 30176.dasm - AssignRect:LoadAssign(int[,]) (Tier1)

Top method improvements (percentages):
        -149 (-17.55 % of base) : 2620.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
         -15 (-7.61 % of base) : 46373.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
        -333 (-3.87 % of base) : 20840.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
          -4 (-3.54 % of base) : 25768.dasm - System.SpanHelpers:Fill[ushort](byref,ulong,ushort) (Tier1-OSR)
          -2 (-1.67 % of base) : 2729.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
          -2 (-1.67 % of base) : 26425.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -2 (-1.57 % of base) : 40543.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
          -2 (-1.36 % of base) : 3121.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-1.27 % of base) : 21821.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
          -4 (-0.80 % of base) : 39276.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1)
          -4 (-0.71 % of base) : 36827.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier1-OSR)


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: 392032764 (overridden on cmd)
Total bytes of diff: 398883037 (overridden on cmd)
Total bytes of delta: 6850273 (1.75 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
      147785 : 178506.dasm (99.83 % of base)
       18561 : 297831.dasm (99.06 % of base)
       13846 : 187753.dasm (107.18 % of base)
       13831 : 284268.dasm (97.32 % of base)
       12933 : 567595.dasm (99.98 % of base)
       12835 : 298150.dasm (99.42 % of base)
       11808 : 571042.dasm (109.43 % of base)
       11709 : 569004.dasm (107.13 % of base)
       11624 : 570844.dasm (100.94 % of base)
       11597 : 570615.dasm (105.37 % of base)
       11593 : 568261.dasm (100.74 % of base)
       10426 : 565390.dasm (75.06 % of base)
        8969 : 233594.dasm (90.61 % of base)
        8914 : 282116.dasm (83.64 % of base)
        8507 : 191449.dasm (82.36 % of base)
        8371 : 569504.dasm (71.12 % of base)
        8348 : 167900.dasm (76.82 % of base)
        7063 : 435767.dasm (86.51 % of base)
        7051 : 494443.dasm (87.21 % of base)
        7051 : 396700.dasm (87.21 % of base)

Top file improvements (bytes):
        -329 : 191703.dasm (-3.82 % of base)
        -233 : 143699.dasm (-11.46 % of base)
        -233 : 143763.dasm (-11.46 % of base)
        -227 : 159546.dasm (-14.04 % of base)
        -217 : 159681.dasm (-13.53 % of base)
        -212 : 159561.dasm (-13.58 % of base)
        -212 : 159576.dasm (-13.58 % of base)
        -202 : 159696.dasm (-13.06 % of base)
        -202 : 159711.dasm (-13.06 % of base)
        -137 : 190107.dasm (-42.95 % of base)
        -124 : 159963.dasm (-7.72 % of base)
        -116 : 190109.dasm (-36.36 % of base)
         -94 : 81465.dasm (-13.78 % of base)
         -93 : 228113.dasm (-14.35 % of base)
         -88 : 121993.dasm (-6.39 % of base)
         -88 : 122007.dasm (-6.39 % of base)
         -88 : 122035.dasm (-6.34 % of base)
         -88 : 122021.dasm (-6.34 % of base)
         -87 : 162375.dasm (-5.97 % of base)
         -87 : 162345.dasm (-6.01 % of base)

90 total files with Code Size differences (30 improved, 60 regressed), 20 unchanged.

Top method regressions (bytes):
      147785 (99.83 % of base) : 178506.dasm - Program:TestEntryPoint():int (FullOpts)
       18561 (99.06 % of base) : 297831.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
       13846 (107.18 % of base) : 187753.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13831 (97.32 % of base) : 284268.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
       12933 (99.98 % of base) : 567595.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       12835 (99.42 % of base) : 298150.dasm - SimpleArray_01.Test:Test1() (FullOpts)
       11808 (109.43 % of base) : 571042.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       11709 (107.13 % of base) : 569004.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
       11624 (100.94 % of base) : 570844.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       11597 (105.37 % of base) : 570615.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
       11593 (100.74 % of base) : 568261.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
       10426 (75.06 % of base) : 565390.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
        8969 (90.61 % of base) : 233594.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8914 (83.64 % of base) : 282116.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        8507 (82.36 % of base) : 191449.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        8371 (71.12 % of base) : 569504.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
        8348 (76.82 % of base) : 167900.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        7063 (86.51 % of base) : 435767.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
        7051 (87.21 % of base) : 494443.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
        7051 (87.21 % of base) : 396700.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)

Top method improvements (bytes):
        -329 (-3.82 % of base) : 191703.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -233 (-11.46 % of base) : 143699.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplyAddSubtractDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -233 (-11.46 % of base) : 143763.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
        -227 (-14.04 % of base) : 159546.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
        -217 (-13.53 % of base) : 159681.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
        -212 (-13.58 % of base) : 159561.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -212 (-13.58 % of base) : 159576.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -202 (-13.06 % of base) : 159696.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -202 (-13.06 % of base) : 159711.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -137 (-42.95 % of base) : 190107.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
        -124 (-7.72 % of base) : 159963.dasm - JIT.HardwareIntrinsics.X86._Sse3.AlternatingBinaryOpTest__AddSubtractDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
        -116 (-36.36 % of base) : 190109.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
         -94 (-13.78 % of base) : 81465.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)
         -93 (-14.35 % of base) : 228113.dasm - Test_sin3double.Z:Main():int (FullOpts)
         -88 (-6.39 % of base) : 121993.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmBinaryOpTest__AlignRight64Int641:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
         -88 (-6.39 % of base) : 122007.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmBinaryOpTest__AlignRight64Int643:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
         -88 (-6.34 % of base) : 122021.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmBinaryOpTest__AlignRight64UInt641:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         -88 (-6.34 % of base) : 122035.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmBinaryOpTest__AlignRight64UInt643:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         -87 (-6.01 % of base) : 162345.dasm - JIT.HardwareIntrinsics.X86._Ssse3.ImmBinaryOpTest__AlignRightInt648:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
         -87 (-5.97 % of base) : 162375.dasm - JIT.HardwareIntrinsics.X86._Ssse3.ImmBinaryOpTest__AlignRightUInt648:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)

Top method regressions (percentages):
         489 (182.46 % of base) : 426053.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         489 (182.46 % of base) : 426789.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         361 (180.50 % of base) : 426652.dasm - Chaos.A0A0A0A0`1[System.__Canon]:RecurseA0A0A0A0(int):this (Tier1)
         345 (173.37 % of base) : 191429.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
         103 (156.06 % of base) : 188699.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         210 (143.84 % of base) : 233532.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         272 (140.93 % of base) : 227037.dasm - Test_jaggedarr_basics.double1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         271 (140.41 % of base) : 226784.dasm - Test_doublearr_basics.double1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         272 (136.00 % of base) : 226729.dasm - class1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         272 (136.00 % of base) : 227046.dasm - Test_jaggedarr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
        1183 (134.28 % of base) : 227418.dasm - struct1:Process2DArray(byref) (FullOpts)
         256 (133.33 % of base) : 227420.dasm - struct1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         256 (133.33 % of base) : 226793.dasm - Test_doublearr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
        1224 (131.90 % of base) : 570097.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:FindValue(Internal.TypeSystem.Instantiation):byref:this (Tier1)
        1719 (131.52 % of base) : 439481.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
        1312 (127.50 % of base) : 570096.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:TryGetValue(Internal.TypeSystem.Instantiation,byref):ubyte:this (Tier1)
        1180 (126.07 % of base) : 566448.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:FindValue(Internal.TypeSystem.Instantiation):byref:this (Tier1)
        2105 (125.67 % of base) : 301732.dasm - ILCompiler.PEWriter.MapFileBuilder:WriteSections(System.IO.StreamWriter):this (FullOpts)
        1298 (125.41 % of base) : 566447.dasm - System.Collections.Generic.Dictionary`2[Internal.TypeSystem.Instantiation,System.__Canon]:TryGetValue(Internal.TypeSystem.Instantiation,byref):ubyte:this (Tier1)
         102 (122.89 % of base) : 25730.dasm - ValueNumberingUnorderedComparisonsOfConstants:TestSingleComparisonsEvaluatingToFalse() (FullOpts)

Top method improvements (percentages):
         -43 (-58.90 % of base) : 242762.dasm - foo:Main():int (FullOpts)
        -137 (-42.95 % of base) : 190107.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
        -116 (-36.36 % of base) : 190109.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
         -48 (-28.24 % of base) : 190128.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
         -66 (-20.00 % of base) : 19605.dasm - Mutual_recursion:seventhMethodFirstCalleeFastTailCallReversed@331(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -66 (-20.00 % of base) : 19606.dasm - Mutual_recursion:seventhMethodSecondCalleeFastTailCallReversed@349(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -31 (-15.50 % of base) : 19593.dasm - Mutual_recursion:seventhMethodFirstCallee@247(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -27 (-15.25 % of base) : 244413.dasm - X:Test() (FullOpts)
         -41 (-14.64 % of base) : 19600.dasm - Mutual_recursion:seventhMethodFirstCalleeFastTailCall@284(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -41 (-14.64 % of base) : 19601.dasm - Mutual_recursion:seventhMethodSecondCalleeFastTailCall@302(int,int,int,int,int,int,int,int,int,int,int):int (FullOpts)
         -93 (-14.35 % of base) : 228113.dasm - Test_sin3double.Z:Main():int (FullOpts)
        -227 (-14.04 % of base) : 159546.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         -94 (-13.78 % of base) : 81465.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)
        -212 (-13.58 % of base) : 159561.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -212 (-13.58 % of base) : 159576.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackHighUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -217 (-13.53 % of base) : 159681.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         -22 (-13.25 % of base) : 299833.dasm - T:Main():int (FullOpts)
         -22 (-13.25 % of base) : 555186.dasm - T:Main():int (Tier0-FullOpts)
        -202 (-13.06 % of base) : 159696.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowInt64:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -202 (-13.06 % of base) : 159711.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__UnpackLowUInt64:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)


libraries.crossgen2.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: 39426266 (overridden on cmd)
Total bytes of diff: 43597081 (overridden on cmd)
Total bytes of delta: 4170815 (10.58 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       47575 : 1481.dasm (73.58 % of base)
       17195 : 159536.dasm (66.32 % of base)
       12320 : 67768.dasm (102.54 % of base)
       10721 : 67664.dasm (94.74 % of base)
        9510 : 110347.dasm (77.22 % of base)
        9375 : 36630.dasm (78.76 % of base)
        8859 : 186171.dasm (81.83 % of base)
        7244 : 10988.dasm (73.06 % of base)
        7199 : 163342.dasm (76.94 % of base)
        7010 : 86452.dasm (96.16 % of base)
        6272 : 107563.dasm (47.01 % of base)
        5982 : 92968.dasm (89.90 % of base)
        5366 : 139395.dasm (82.52 % of base)
        5027 : 113941.dasm (79.49 % of base)
        4860 : 36563.dasm (83.20 % of base)
        4830 : 36817.dasm (82.32 % of base)
        4727 : 86769.dasm (83.41 % of base)
        4551 : 107616.dasm (103.20 % of base)
        4459 : 26369.dasm (99.11 % of base)
        4373 : 963.dasm (37.91 % of base)

Top file improvements (bytes):
        -142 : 215634.dasm (-1.90 % of base)
        -120 : 29655.dasm (-16.37 % of base)
         -64 : 62141.dasm (-6.30 % of base)
         -21 : 195674.dasm (-1.82 % of base)
         -17 : 237405.dasm (-2.60 % of base)
         -14 : 183788.dasm (-4.96 % of base)
         -12 : 106172.dasm (-4.78 % of base)
          -9 : 223629.dasm (-1.89 % of base)
          -6 : 168749.dasm (-1.75 % of base)
          -6 : 171990.dasm (-5.41 % of base)
          -6 : 156165.dasm (-1.75 % of base)
          -6 : 198378.dasm (-5.41 % of base)
          -5 : 150585.dasm (-1.37 % of base)
          -4 : 241058.dasm (-1.25 % of base)
          -3 : 186008.dasm (-0.90 % of base)
          -2 : 147941.dasm (-1.32 % of base)
          -2 : 22567.dasm (-1.64 % of base)
          -2 : 22857.dasm (-1.33 % of base)
          -2 : 31365.dasm (-1.64 % of base)
          -2 : 31860.dasm (-1.75 % of base)

86 total files with Code Size differences (25 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       47575 (73.58 % of base) : 1481.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
       17195 (66.32 % of base) : 159536.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       12320 (102.54 % of base) : 67768.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       10721 (94.74 % of base) : 67664.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
        9510 (77.22 % of base) : 110347.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
        9375 (78.76 % of base) : 36630.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        8859 (81.83 % of base) : 186171.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
        7244 (73.06 % of base) : 10988.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        7199 (76.94 % of base) : 163342.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        7010 (96.16 % of base) : 86452.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        6272 (47.01 % of base) : 107563.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
        5982 (89.90 % of base) : 92968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        5366 (82.52 % of base) : 139395.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
        5027 (79.49 % of base) : 113941.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        4860 (83.20 % of base) : 36563.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        4830 (82.32 % of base) : 36817.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
        4727 (83.41 % of base) : 86769.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        4551 (103.20 % of base) : 107616.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
        4459 (99.11 % of base) : 26369.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        4373 (37.91 % of base) : 963.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)

Top method improvements (bytes):
        -142 (-1.90 % of base) : 215634.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -120 (-16.37 % of base) : 29655.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -64 (-6.30 % of base) : 62141.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
         -21 (-1.82 % of base) : 195674.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
         -17 (-2.60 % of base) : 237405.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
         -14 (-4.96 % of base) : 183788.dasm - Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-4.78 % of base) : 106172.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (FullOpts)
          -9 (-1.89 % of base) : 223629.dasm - Xunit.Assert:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (FullOpts)
          -6 (-5.41 % of base) : 171990.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -6 (-5.41 % of base) : 198378.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -6 (-1.75 % of base) : 168749.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -6 (-1.75 % of base) : 156165.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -5 (-1.37 % of base) : 150585.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)
          -4 (-1.25 % of base) : 241058.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -3 (-0.90 % of base) : 186008.dasm - System.Management.ManagementNamedValueCollection:GetContext():System.Management.IWbemContext:this (FullOpts)
          -2 (-2.15 % of base) : 137604.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.32 % of base) : 147941.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.64 % of base) : 31365.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.33 % of base) : 22857.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.75 % of base) : 31860.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
          34 (125.93 % of base) : 235343.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
        1547 (122.39 % of base) : 236523.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
        2146 (122.07 % of base) : 107643.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteDerivedSerializable(System.Xml.Serialization.SerializableMapping,System.Xml.Serialization.SerializableMapping,System.String,ubyte):this (FullOpts)
         188 (120.51 % of base) : 36987.dasm - System.Data.Common.DbCommandBuilder+ParameterNames:EliminateConflictingNames():this (FullOpts)
         215 (117.49 % of base) : 145761.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
        2484 (116.29 % of base) : 123515.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this (FullOpts)
         143 (113.49 % of base) : 38630.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToTrue(System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
         564 (113.48 % of base) : 62543.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:<ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest>g__isRuntimeSimilar|42_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (FullOpts)
         347 (111.58 % of base) : 179472.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
         347 (111.58 % of base) : 205612.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
         824 (111.35 % of base) : 177307.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteCompilationStartActions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.CompilationStartAnalyzerAction],Microsoft.CodeAnalysis.Diagnostics.HostCompilationStartAnalysisScope,System.Threading.CancellationToken):this (FullOpts)
         824 (111.35 % of base) : 203497.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteCompilationStartActions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.CompilationStartAnalyzerAction],Microsoft.CodeAnalysis.Diagnostics.HostCompilationStartAnalysisScope,System.Threading.CancellationToken):this (FullOpts)
        1935 (110.32 % of base) : 134716.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
        1604 (109.94 % of base) : 228408.dasm - System.Security.Principal.WindowsIdentity:AddTokenClaims(System.Collections.Generic.List`1[System.Security.Claims.Claim],int,System.String):this (FullOpts)
         188 (109.30 % of base) : 145710.dasm - System.Runtime.Serialization.Json.XmlJsonReader:ComputeNumericalTextLength(ubyte[],int,int):int (FullOpts)
         208 (107.22 % of base) : 180717.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
         208 (107.22 % of base) : 206851.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
        1081 (107.14 % of base) : 90558.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
        2051 (106.55 % of base) : 31192.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
        1042 (106.33 % of base) : 165249.dasm - ILCompiler.Reflection.ReadyToRun.x86.GcInfo:GetTransitionsNoEbp(ubyte[],byref):this (FullOpts)

Top method improvements (percentages):
        -120 (-16.37 % of base) : 29655.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -64 (-6.30 % of base) : 62141.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
          -6 (-5.41 % of base) : 171990.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
          -6 (-5.41 % of base) : 198378.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -14 (-4.96 % of base) : 183788.dasm - Roslyn.Utilities.OneOrMany`1+<<OfType>g__iterateElements|18_0>d`1[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-4.78 % of base) : 106172.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (FullOpts)
         -17 (-2.60 % of base) : 237405.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
          -2 (-2.15 % of base) : 137604.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
        -142 (-1.90 % of base) : 215634.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          -9 (-1.89 % of base) : 223629.dasm - Xunit.Assert:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (FullOpts)
         -21 (-1.82 % of base) : 195674.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
          -2 (-1.75 % of base) : 31860.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -6 (-1.75 % of base) : 168749.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -6 (-1.75 % of base) : 156165.dasm - System.Configuration.XmlUtil:.ctor(System.IO.Stream,System.String,ubyte,System.Configuration.ConfigurationSchemaErrors):this (FullOpts)
          -2 (-1.72 % of base) : 31865.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.64 % of base) : 31365.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.64 % of base) : 22875.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.64 % of base) : 22567.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.63 % of base) : 22891.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -5 (-1.37 % of base) : 150585.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateDnsNames>d__6:MoveNext():ubyte:this (FullOpts)


libraries.pmi.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60047589 (overridden on cmd)
Total bytes of diff: 66595665 (overridden on cmd)
Total bytes of delta: 6548076 (10.90 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       19832 : 101368.dasm (111.00 % of base)
       19600 : 167748.dasm (68.83 % of base)
       19289 : 101409.dasm (83.92 % of base)
       13804 : 89835.dasm (107.54 % of base)
       11663 : 66984.dasm (94.61 % of base)
       11606 : 227557.dasm (101.16 % of base)
       11491 : 67090.dasm (102.72 % of base)
       10487 : 17540.dasm (84.77 % of base)
       10228 : 179806.dasm (104.23 % of base)
        9450 : 254025.dasm (88.65 % of base)
        9319 : 105578.dasm (93.87 % of base)
        8912 : 96983.dasm (90.72 % of base)
        8348 : 147857.dasm (76.82 % of base)
        7375 : 250178.dasm (91.33 % of base)
        7232 : 101358.dasm (91.50 % of base)
        7157 : 101684.dasm (75.34 % of base)
        6605 : 253620.dasm (64.69 % of base)
        6374 : 62318.dasm (96.10 % of base)
        6191 : 90123.dasm (93.32 % of base)
        6177 : 89847.dasm (100.72 % of base)

Top file improvements (bytes):
        -329 : 120.dasm (-3.82 % of base)
         -84 : 61283.dasm (-6.45 % of base)
         -58 : 248657.dasm (-7.32 % of base)
         -42 : 66145.dasm (-4.90 % of base)
         -40 : 205015.dasm (-8.06 % of base)
         -40 : 205055.dasm (-7.86 % of base)
         -25 : 209537.dasm (-3.18 % of base)
         -25 : 227383.dasm (-3.61 % of base)
         -20 : 278667.dasm (-3.03 % of base)
         -19 : 265890.dasm (-0.77 % of base)
         -19 : 169767.dasm (-3.06 % of base)
         -18 : 210226.dasm (-3.06 % of base)
         -18 : 143468.dasm (-0.46 % of base)
         -17 : 238773.dasm (-2.09 % of base)
         -17 : 188742.dasm (-2.09 % of base)
         -17 : 269051.dasm (-4.12 % of base)
         -15 : 286180.dasm (-7.61 % of base)
         -15 : 286215.dasm (-7.39 % of base)
         -15 : 149144.dasm (-10.07 % of base)
         -15 : 189084.dasm (-10.07 % of base)

93 total files with Code Size differences (32 improved, 61 regressed), 20 unchanged.

Top method regressions (bytes):
       19832 (111.00 % of base) : 101368.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
       19600 (68.83 % of base) : 167748.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       19289 (83.92 % of base) : 101409.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
       13804 (107.54 % of base) : 89835.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11663 (94.61 % of base) : 66984.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       11606 (101.16 % of base) : 227557.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
       11491 (102.72 % of base) : 67090.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       10487 (84.77 % of base) : 17540.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
       10228 (104.23 % of base) : 179806.dasm - Microsoft.Build.Evaluation.Preprocessor:CloneChildrenResolvingImports(System.Xml.XmlNode,System.Xml.XmlNode):this (FullOpts)
        9450 (88.65 % of base) : 254025.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
        9319 (93.87 % of base) : 105578.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
        8912 (90.72 % of base) : 96983.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8348 (76.82 % of base) : 147857.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        7375 (91.33 % of base) : 250178.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
        7232 (91.50 % of base) : 101358.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
        7157 (75.34 % of base) : 101684.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
        6605 (64.69 % of base) : 253620.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
        6374 (96.10 % of base) : 62318.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
        6191 (93.32 % of base) : 90123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        6177 (100.72 % of base) : 89847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)

Top method improvements (bytes):
        -329 (-3.82 % of base) : 120.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -84 (-6.45 % of base) : 61283.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
         -58 (-7.32 % of base) : 248657.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -42 (-4.90 % of base) : 66145.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
         -40 (-8.06 % of base) : 205015.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
         -40 (-7.86 % of base) : 205055.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.Nullable`1[int],double,ubyte],double):ubyte:this (FullOpts)
         -25 (-3.18 % of base) : 209537.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:Find(System.Predicate`1[double]):double:this (FullOpts)
         -25 (-3.61 % of base) : 227383.dasm - System.Management.ManagementQueryConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this (FullOpts)
         -20 (-3.03 % of base) : 278667.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
         -19 (-0.77 % of base) : 265890.dasm - ILCompiler.Diagnostics.PdbWriter:WriteFileChecksums():this (FullOpts)
         -19 (-3.06 % of base) : 169767.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
         -18 (-3.06 % of base) : 210226.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
         -18 (-0.46 % of base) : 143468.dasm - System.Xml.Xsl.Runtime.XsltMethods:.cctor() (FullOpts)
         -17 (-4.12 % of base) : 269051.dasm - System.CodeDom.Compiler.CompilerInfo:CreateProvider(System.Collections.Generic.IDictionary`2[System.String,System.String]):System.CodeDom.Compiler.CodeDomProvider:this (FullOpts)
         -17 (-2.09 % of base) : 238773.dasm - System.Reflection.TypeLoading.Ecma.EcmaDefinitionType+<SpecializeEvents>d__2:MoveNext():ubyte:this (FullOpts)
         -17 (-2.09 % of base) : 188742.dasm - System.Reflection.TypeLoading.Ecma.EcmaDefinitionType+<SpecializeEvents>d__2:MoveNext():ubyte:this (FullOpts)
         -15 (-10.07 % of base) : 149144.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -15 (-10.07 % of base) : 189084.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -15 (-7.61 % of base) : 286180.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-7.39 % of base) : 286215.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)

Top method regressions (percentages):
         103 (156.06 % of base) : 162332.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         103 (156.06 % of base) : 202193.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         210 (143.84 % of base) : 79726.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        3490 (130.61 % of base) : 146915.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__EnsureArrayIndexRegex_5+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        4838 (128.57 % of base) : 262470.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssets(System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeFile],System.String,System.String,System.Text.Json.Utf8JsonWriter) (FullOpts)
         860 (127.98 % of base) : 146236.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteDerivedTypes(System.Xml.Serialization.StructMapping,ubyte,System.String):this (FullOpts)
          34 (125.93 % of base) : 297669.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
        2105 (125.67 % of base) : 253494.dasm - ILCompiler.PEWriter.MapFileBuilder:WriteSections(System.IO.StreamWriter):this (FullOpts)
         189 (124.34 % of base) : 37249.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToTrue(System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
        2212 (124.34 % of base) : 231020.dasm - System.Net.Http.Headers.HttpHeaders:ToString():System.String:this (FullOpts)
        1529 (121.83 % of base) : 297082.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
         188 (121.29 % of base) : 22096.dasm - System.Data.Common.DbCommandBuilder+ParameterNames:EliminateConflictingNames():this (FullOpts)
         183 (120.39 % of base) : 37991.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:FindValidStartOn(Microsoft.Diagnostics.Tracing.Utilities.FastStream):this (FullOpts)
        1456 (118.76 % of base) : 59639.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:LinkChildToParentNamespace(System.Collections.Generic.Dictionary`2[System.String,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder],System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder,byref):this (FullOpts)
         213 (118.33 % of base) : 236808.dasm - System.Xml.XmlBaseReader+NamespaceManager:ExitScope():this (FullOpts)
        1649 (115.15 % of base) : 109007.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodCompiler:CreateSyntheticWithEventOverridesIfNeeded(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.HandledEvent],byref,byref,Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.SynthesizedSubmissionFields):this (FullOpts)
        2703 (114.05 % of base) : 93674.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitLengthBasedStringSwitchJumpTable>g__emitCharDispatches|282_1(Microsoft.CodeAnalysis.CSharp.LengthBasedStringSwitchData,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
         182 (113.75 % of base) : 179724.dasm - Microsoft.Build.Evaluation.Scanner:SkipSimpleStringChars():this (FullOpts)
         951 (113.21 % of base) : 279544.dasm - System.Security.IdentityHelper:ToBase32StringSuitableForDirName(ubyte[]):System.String (FullOpts)
         951 (113.21 % of base) : 215102.dasm - System.Security.IdentityHelper:ToBase32StringSuitableForDirName(ubyte[]):System.String (FullOpts)

Top method improvements (percentages):
         -15 (-10.07 % of base) : 149144.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -15 (-10.07 % of base) : 189084.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
         -40 (-8.06 % of base) : 205015.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
         -40 (-7.86 % of base) : 205055.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:All[double](System.Func`3[System.Nullable`1[int],double,ubyte],double):ubyte:this (FullOpts)
         -15 (-7.61 % of base) : 286180.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-7.39 % of base) : 286215.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts)
         -12 (-7.36 % of base) : 97786.dasm - System.Reflection.DispatchProxyGenerator:GetGenericMethodMethodInfo():System.Reflection.MethodInfo (FullOpts)
         -58 (-7.32 % of base) : 248657.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
         -84 (-6.45 % of base) : 61283.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
         -12 (-5.71 % of base) : 223075.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Byte():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223083.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Char():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223077.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int16():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223079.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int32():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223081.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_Int64():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223076.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_SByte():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223078.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt16():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223080.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt32():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223082.dasm - System.Linq.Expressions.CachedReflectionInfo:get_Decimal_op_Implicit_UInt64():System.Reflection.MethodInfo (FullOpts)
         -12 (-5.71 % of base) : 223066.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
          -9 (-5.33 % of base) : 183430.dasm - Microsoft.Build.Shared.FileUtilities:GetDirectoryNameOfFullPath(System.String):System.String (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: 276546440 (overridden on cmd)
Total bytes of diff: 303121266 (overridden on cmd)
Total bytes of delta: 26574826 (9.61 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24103 : 63174.dasm (101.20 % of base)
       19643 : 58976.dasm (90.78 % of base)
       19565 : 471212.dasm (93.22 % of base)
       19077 : 525799.dasm (91.92 % of base)
       18229 : 65613.dasm (99.80 % of base)
       18197 : 90443.dasm (90.71 % of base)
       17834 : 159745.dasm (79.84 % of base)
       17791 : 589084.dasm (90.84 % of base)
       17582 : 54084.dasm (95.10 % of base)
       16997 : 610858.dasm (79.36 % of base)
       16511 : 612821.dasm (86.23 % of base)
       16347 : 210263.dasm (77.69 % of base)
       15848 : 610856.dasm (74.98 % of base)
       15824 : 618188.dasm (79.83 % of base)
       15668 : 54081.dasm (77.84 % of base)
       15138 : 618256.dasm (73.70 % of base)
       15098 : 66267.dasm (78.97 % of base)
       14886 : 89749.dasm (88.21 % of base)
       14405 : 89988.dasm (87.61 % of base)
       14401 : 586622.dasm (81.22 % of base)

Top file improvements (bytes):
       -1226 : 387148.dasm (-30.57 % of base)
       -1187 : 386599.dasm (-27.84 % of base)
        -413 : 411360.dasm (-5.05 % of base)
        -216 : 316030.dasm (-21.36 % of base)
        -211 : 522964.dasm (-2.26 % of base)
        -199 : 300768.dasm (-4.06 % of base)
        -199 : 301106.dasm (-2.89 % of base)
        -199 : 300751.dasm (-2.90 % of base)
        -194 : 614897.dasm (-4.10 % of base)
        -170 : 242909.dasm (-18.48 % of base)
        -168 : 257629.dasm (-18.30 % of base)
        -167 : 251143.dasm (-17.36 % of base)
        -166 : 371481.dasm (-17.31 % of base)
        -161 : 228117.dasm (-16.95 % of base)
        -161 : 247896.dasm (-17.04 % of base)
        -161 : 254069.dasm (-16.97 % of base)
        -161 : 355021.dasm (-17.04 % of base)
        -161 : 376278.dasm (-16.97 % of base)
        -161 : 392408.dasm (-17.02 % of base)
        -161 : 41973.dasm (-16.97 % of base)

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

Top method regressions (bytes):
       24103 (101.20 % of base) : 63174.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (Tier1)
       19643 (90.78 % of base) : 58976.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       19565 (93.22 % of base) : 471212.dasm - System.Runtime.Serialization.ReflectionXmlFormatWriter:ReflectionWriteCollection(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (Tier1-OSR)
       19077 (91.92 % of base) : 525799.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
       18229 (99.80 % of base) : 65613.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (Tier1)
       18197 (90.71 % of base) : 90443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
       17834 (79.84 % of base) : 159745.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       17791 (90.84 % of base) : 589084.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:GetNumbersExpectedString(System.Text.Json.JsonWriterOptions,System.String,int[],uint[],long[],ulong[],float[],double[],System.Decimal[],ubyte):System.String (Tier1-OSR)
       17582 (95.10 % of base) : 54084.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       16997 (79.36 % of base) : 610858.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       16511 (86.23 % of base) : 612821.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
       16347 (77.69 % of base) : 210263.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1)
       15848 (74.98 % of base) : 610856.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       15824 (79.83 % of base) : 618188.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       15668 (77.84 % of base) : 54081.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
       15138 (73.70 % of base) : 618256.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstructorInitializerCore(Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       15098 (78.97 % of base) : 66267.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
       14886 (88.21 % of base) : 89749.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
       14405 (87.61 % of base) : 89988.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       14401 (81.22 % of base) : 586622.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestingNumbers_TryGetMethods() (Tier1-OSR)

Top method improvements (bytes):
       -1226 (-30.57 % of base) : 387148.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanIntoSpan>g__VectorizedSmall8|220_6[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](byref,byref,byref,ulong) (Tier1)
       -1187 (-27.84 % of base) : 386599.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong],System.Span`1[ulong]) (Tier1)
        -413 (-5.05 % of base) : 411360.dasm - System.Xml.XPath.XPathNavigator:CompareSiblings(System.Xml.XPath.XPathNavigator,System.Xml.XPath.XPathNavigator):int (Tier1)
        -216 (-21.36 % of base) : 316030.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (Tier1-OSR)
        -211 (-2.26 % of base) : 522964.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (Tier1)
        -199 (-4.06 % of base) : 300768.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternDotIsStar():this (Tier1)
        -199 (-2.89 % of base) : 301106.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithLeadingStar():this (Tier1)
        -199 (-2.90 % of base) : 300751.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternWithTrailingStar():this (Tier1)
        -194 (-4.10 % of base) : 614897.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitWhileStatement(Microsoft.CodeAnalysis.CSharp.BoundWhileStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
        -170 (-18.48 % of base) : 242909.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -168 (-18.30 % of base) : 257629.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -167 (-17.36 % of base) : 251143.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -166 (-17.31 % of base) : 371481.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.95 % of base) : 228117.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.04 % of base) : 247896.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 254069.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.04 % of base) : 355021.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 376278.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.02 % of base) : 392408.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 41973.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)

Top method regressions (percentages):
        2724 (178.62 % of base) : 612930.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:DoVisitList[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
        1517 (154.32 % of base) : 162580.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:DoVisitList[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
        3628 (151.99 % of base) : 161500.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
         274 (141.97 % of base) : 162809.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:ComputeOffsets():this (Tier1)
         265 (131.84 % of base) : 606992.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        6548 (131.14 % of base) : 55239.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
        6548 (131.14 % of base) : 88221.dasm - System.Collections.Generic.ArraySortHelper`1[System.ValueTuple`2[int,System.__Canon]]:IntroSort(System.Span`1[System.ValueTuple`2[int,System.__Canon]],int,System.Comparison`1[System.ValueTuple`2[int,System.__Canon]]) (Tier1)
         402 (130.94 % of base) : 609459.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (Tier1)
         223 (129.65 % of base) : 372418.dasm - System.Net.HttpValidationHelpers:IsInvalidMethodOrHeaderString(System.String):ubyte (Tier1)
         244 (128.42 % of base) : 52093.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier1)
        3587 (128.11 % of base) : 186189.dasm - System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests:AddManyItems_ThenTakeOnSameThread_ItemsOutputInExpectedOrder():this (Tier1-OSR)
        9217 (127.68 % of base) : 53296.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetRuntimeMember(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref,Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
        2277 (127.49 % of base) : 640555.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32006_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        2080 (126.91 % of base) : 533982.dasm - System.Net.MultiArrayBuffer:FreeBlocks(uint,uint):this (Tier1)
          34 (125.93 % of base) : 520403.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (Tier1)
        2266 (125.68 % of base) : 349171.dasm - System.Net.Http.Headers.HttpHeaders:ToString():System.String:this (Tier0-FullOpts)
        1713 (125.49 % of base) : 66464.dasm - Microsoft.CodeAnalysis.CSharp.Conversions:GetDelegateOrFunctionPointerArguments(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.CSharpCompilation) (Tier1)
       10588 (124.92 % of base) : 620267.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
        2144 (124.51 % of base) : 292393.dasm - System.Net.MultiArrayBuffer:FreeBlocks(uint,uint):this (Tier1)
        2212 (124.34 % of base) : 353037.dasm - System.Net.Http.Headers.HttpHeaders:ToString():System.String:this (Tier0-FullOpts)

Top method improvements (percentages):
       -1226 (-30.57 % of base) : 387148.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanIntoSpan>g__VectorizedSmall8|220_6[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](byref,byref,byref,ulong) (Tier1)
       -1187 (-27.84 % of base) : 386599.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong],System.Span`1[ulong]) (Tier1)
        -216 (-21.36 % of base) : 316030.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (Tier1-OSR)
        -124 (-19.97 % of base) : 618720.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclaratorArguments(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
        -170 (-18.48 % of base) : 242909.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -168 (-18.30 % of base) : 257629.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -167 (-17.36 % of base) : 251143.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -166 (-17.31 % of base) : 371481.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.04 % of base) : 247896.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.04 % of base) : 355021.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.02 % of base) : 392408.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-17.02 % of base) : 383991.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 254069.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 376278.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 41973.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 340524.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 476000.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 534320.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.97 % of base) : 106783.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
        -161 (-16.95 % of base) : 228117.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)


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: 135656589 (overridden on cmd)
Total bytes of diff: 145155453 (overridden on cmd)
Total bytes of delta: 9498864 (7.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       24869 : 117856.dasm (36.50 % of base)
       24645 : 110192.dasm (37.05 % of base)
       19332 : 60205.dasm (67.78 % of base)
       14913 : 183329.dasm (97.55 % of base)
       13846 : 7494.dasm (107.18 % of base)
       13740 : 50198.dasm (107.08 % of base)
       12904 : 45002.dasm (106.75 % of base)
       12589 : 210999.dasm (63.32 % of base)
       12296 : 210583.dasm (63.21 % of base)
       11840 : 310578.dasm (103.30 % of base)
       11558 : 149405.dasm (101.39 % of base)
       11464 : 56512.dasm (102.34 % of base)
       10115 : 94812.dasm (84.47 % of base)
        9500 : 108506.dasm (97.80 % of base)
        8968 : 6443.dasm (90.60 % of base)
        8891 : 99589.dasm (81.84 % of base)
        8593 : 54799.dasm (81.12 % of base)
        8385 : 54979.dasm (82.87 % of base)
        8348 : 25121.dasm (76.82 % of base)
        8343 : 184709.dasm (109.89 % of base)

Top file improvements (bytes):
       -1618 : 45690.dasm (-11.85 % of base)
       -1618 : 51422.dasm (-11.85 % of base)
       -1280 : 72212.dasm (-16.63 % of base)
       -1102 : 70126.dasm (-15.46 % of base)
        -329 : 3680.dasm (-3.82 % of base)
        -195 : 243408.dasm (-5.69 % of base)
        -147 : 152794.dasm (-6.82 % of base)
        -138 : 117050.dasm (-8.98 % of base)
         -93 : 293766.dasm (-14.72 % of base)
         -88 : 199700.dasm (-8.81 % of base)
         -88 : 199799.dasm (-8.81 % of base)
         -88 : 199673.dasm (-8.81 % of base)
         -88 : 311717.dasm (-6.15 % of base)
         -87 : 293877.dasm (-12.55 % of base)
         -85 : 312529.dasm (-5.84 % of base)
         -85 : 293878.dasm (-9.67 % of base)
         -83 : 119233.dasm (-1.49 % of base)
         -81 : 311820.dasm (-4.48 % of base)
         -81 : 311638.dasm (-4.71 % of base)
         -76 : 232398.dasm (-3.59 % of base)

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

Top method regressions (bytes):
       24869 (36.50 % of base) : 117856.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
       24645 (37.05 % of base) : 110192.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
       19332 (67.78 % of base) : 60205.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
       14913 (97.55 % of base) : 183329.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
       13846 (107.18 % of base) : 7494.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       13740 (107.08 % of base) : 50198.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12904 (106.75 % of base) : 45002.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       12589 (63.32 % of base) : 210999.dasm - (dynamicClass):ReadAllTypes2FromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       12296 (63.21 % of base) : 210583.dasm - (dynamicClass):ReadAllTypesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
       11840 (103.30 % of base) : 310578.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
       11558 (101.39 % of base) : 149405.dasm - System.Management.ManagementClassGenerator:GenerateProperties():this (FullOpts)
       11464 (102.34 % of base) : 56512.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
       10115 (84.47 % of base) : 94812.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
        9500 (97.80 % of base) : 108506.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test4():ubyte (FullOpts)
        8968 (90.60 % of base) : 6443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        8891 (81.84 % of base) : 99589.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        8593 (81.12 % of base) : 54799.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
        8385 (82.87 % of base) : 54979.dasm - Microsoft.Extensions.Options.Generators.Parser:GetMemberInfo(Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.Extensions.Options.Generators.ValidatedMember:this (FullOpts)
        8348 (76.82 % of base) : 25121.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        8343 (109.89 % of base) : 184709.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)

Top method improvements (bytes):
       -1618 (-11.85 % of base) : 45690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
       -1618 (-11.85 % of base) : 51422.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
       -1280 (-16.63 % of base) : 72212.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[int]:ComparingWithOtherSets(int):this (FullOpts)
       -1102 (-15.46 % of base) : 70126.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
        -329 (-3.82 % of base) : 3680.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -195 (-5.69 % of base) : 243408.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
        -147 (-6.82 % of base) : 152794.dasm - System.SpanTests.SpanTests:TestMatchLastIndexOfAny_Byte_ManyByte() (FullOpts)
        -138 (-8.98 % of base) : 117050.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test4a():ubyte (FullOpts)
         -93 (-14.72 % of base) : 293766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3164_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -88 (-8.81 % of base) : 199673.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:ExpDoubleTest(double,double,double):this (FullOpts)
         -88 (-8.81 % of base) : 199700.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Log2DoubleTest(double,double,double):this (FullOpts)
         -88 (-8.81 % of base) : 199799.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:LogDoubleTest(double,double,double):this (FullOpts)
         -88 (-6.15 % of base) : 311717.dasm - System.Threading.Tasks.Dataflow.Tests.BufferBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -87 (-12.55 % of base) : 293877.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3347_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -85 (-9.67 % of base) : 293878.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3348_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -85 (-5.84 % of base) : 312529.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptionsAsyncEnumerable>d__37:MoveNext():this (FullOpts)
         -83 (-1.49 % of base) : 119233.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.property.regproperty.genclass.genclass012.genclass012.Test:MainMethod():int (FullOpts)
         -81 (-4.48 % of base) : 311820.dasm - System.Threading.Tasks.Dataflow.Tests.TransformBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -81 (-4.71 % of base) : 311638.dasm - System.Threading.Tasks.Dataflow.Tests.TransformManyBlockTests+<TestLinkToOptions>d__6:MoveNext():this (FullOpts)
         -76 (-3.59 % of base) : 232398.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaTests:SignVerify_InteroperableSameKeys_RoundTripsUnlessTampered(System.Security.Cryptography.ECDsa,System.Security.Cryptography.HashAlgorithmName):this (FullOpts)

Top method regressions (percentages):
         103 (156.06 % of base) : 55568.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         103 (156.06 % of base) : 53378.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         103 (156.06 % of base) : 47053.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         792 (153.49 % of base) : 101664.dasm - System.Diagnostics.Metrics.Tests.MetricsTests+<>c__DisplayClass15_0:<SerializedEventsTest>b__3():this (FullOpts)
         210 (143.84 % of base) : 49213.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         210 (143.84 % of base) : 46219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         210 (143.84 % of base) : 10921.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
         993 (139.47 % of base) : 183968.dasm - System.Xml.XmlWriterApiTests.TCIndent:indent_29(System.Xml.XmlWriterApiTests.XmlWriterUtils):this (FullOpts)
        3519 (136.24 % of base) : 71726.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests`2[ushort,ushort]:EmptySource_ProducedFrozenDictionaryEmpty():this (FullOpts)
        1224 (128.17 % of base) : 190138.dasm - System.Reflection.Metadata.Tests.HandleTests:HandleKindHidesSpecialStringAndNamespaces():this (FullOpts)
         860 (127.98 % of base) : 63435.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteDerivedTypes(System.Xml.Serialization.StructMapping,ubyte,System.String):this (FullOpts)
         902 (126.33 % of base) : 82084.dasm - System.ComponentModel.DataAnnotations.Tests.AssociatedMetadataTypeTypeDescriptionProviderTests:GetTypeDescriptorGetAttributes_NoAssociatedMetadataTypeWithoutMetadataTypeAttribute_ReturnsExpected():this (FullOpts)
        2305 (125.96 % of base) : 290902.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3737_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          34 (125.93 % of base) : 203892.dasm - System.Numerics.BigIntegerCalculator:Gcd(uint,uint):uint (FullOpts)
        2266 (125.68 % of base) : 154634.dasm - System.Net.Http.Headers.HttpHeaders:ToString():System.String:this (FullOpts)
        1456 (124.87 % of base) : 191292.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:LinkChildToParentNamespace(System.Collections.Generic.Dictionary`2[System.String,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder],System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder,byref):this (FullOpts)
         728 (124.87 % of base) : 84927.dasm - Tests.Integration.CompositionContainerAttributedModelCycleTests:AssertCycle(System.Type[]) (FullOpts)
        2212 (124.34 % of base) : 156868.dasm - System.Net.Http.Headers.HttpHeaders:ToString():System.String:this (FullOpts)
        1013 (123.99 % of base) : 101260.dasm - System.Diagnostics.Tests.TagListTests:TestSearchOperations():this (FullOpts)
         775 (123.80 % of base) : 31074.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.ConfigurationBindingGenerator+Emitter:<EmitBindMethods_ConfigurationBinder>g__EmitMethods|14_0(SourceGenerators.ImmutableEquatableArray`1[Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypedInterceptorInvocationInfo],System.String,System.String,ubyte):this (FullOpts)

Top method improvements (percentages):
       -1280 (-16.63 % of base) : 72212.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[int]:ComparingWithOtherSets(int):this (FullOpts)
       -1102 (-15.46 % of base) : 70126.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
         -93 (-14.72 % of base) : 293766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3164_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -87 (-12.55 % of base) : 293877.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3347_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -42 (-12.32 % of base) : 283494.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -42 (-12.07 % of base) : 283497.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex14_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -42 (-12.07 % of base) : 283499.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex16_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
       -1618 (-11.85 % of base) : 45690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
       -1618 (-11.85 % of base) : 51422.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
         -44 (-11.06 % of base) : 183315.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
         -27 (-10.47 % of base) : 226608.dasm - System.Security.Cryptography.TripleDES:set_Key(ubyte[]):this (FullOpts)
         -85 (-9.67 % of base) : 293878.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3348_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-9.56 % of base) : 283537.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex55_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -138 (-8.98 % of base) : 117050.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate008a.operate008a.Test:Test4a():ubyte (FullOpts)
         -88 (-8.81 % of base) : 199673.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:ExpDoubleTest(double,double,double):this (FullOpts)
         -88 (-8.81 % of base) : 199700.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:Log2DoubleTest(double,double,double):this (FullOpts)
         -88 (-8.81 % of base) : 199799.dasm - System.Runtime.Intrinsics.Tests.Vectors.Vector512Tests:LogDoubleTest(double,double,double):this (FullOpts)
         -38 (-8.30 % of base) : 289974.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1114_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-8.30 % of base) : 289985.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1116_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-8.30 % of base) : 290007.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1120_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 13710148 (overridden on cmd)
Total bytes of diff: 15599234 (overridden on cmd)
Total bytes of delta: 1889086 (13.78 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
       13639 : 23160.dasm (107.69 % of base)
       11488 : 28048.dasm (94.57 % of base)
       11364 : 26871.dasm (102.42 % of base)
        9161 : 22070.dasm (91.05 % of base)
        7596 : 1466.dasm (95.50 % of base)
        7385 : 14099.dasm (91.22 % of base)
        7324 : 34750.dasm (69.37 % of base)
        6881 : 27373.dasm (83.77 % of base)
        6676 : 16592.dasm (82.42 % of base)
        6611 : 23827.dasm (94.94 % of base)
        6413 : 20823.dasm (85.75 % of base)
        6251 : 24444.dasm (95.83 % of base)
        6182 : 8567.dasm (77.97 % of base)
        6158 : 15467.dasm (132.46 % of base)
        6121 : 812.dasm (83.01 % of base)
        6009 : 23557.dasm (98.86 % of base)
        5646 : 33606.dasm (92.59 % of base)
        5500 : 23099.dasm (73.37 % of base)
        5294 : 10561.dasm (79.98 % of base)
        5190 : 15667.dasm (103.82 % of base)

Top file improvements (bytes):
        -335 : 32717.dasm (-3.87 % of base)
        -152 : 446.dasm (-17.00 % of base)
         -53 : 2190.dasm (-4.33 % of base)
         -42 : 20904.dasm (-4.90 % of base)
         -34 : 1334.dasm (-31.78 % of base)
         -32 : 17656.dasm (-10.63 % of base)
         -18 : 11212.dasm (-0.70 % of base)
         -18 : 11301.dasm (-0.73 % of base)
         -16 : 11240.dasm (-11.35 % of base)
         -15 : 35973.dasm (-1.77 % of base)
         -15 : 36759.dasm (-7.61 % of base)
         -14 : 17398.dasm (-0.92 % of base)
         -13 : 33380.dasm (-0.90 % of base)
         -12 : 1694.dasm (-1.27 % of base)
         -12 : 2203.dasm (-1.87 % of base)
         -12 : 35204.dasm (-5.71 % of base)
         -12 : 16256.dasm (-2.99 % of base)
          -6 : 15240.dasm (-0.39 % of base)
          -6 : 24010.dasm (-1.17 % of base)
          -6 : 36872.dasm (-0.81 % of base)

87 total files with Code Size differences (27 improved, 60 regressed), 9 unchanged.

Top method regressions (bytes):
       13639 (107.69 % of base) : 23160.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
       11488 (94.57 % of base) : 28048.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
       11364 (102.42 % of base) : 26871.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
        9161 (91.05 % of base) : 22070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
        7596 (95.50 % of base) : 1466.dasm - BepuPhysics.CollisionDetection.MeshReduction:ReduceManifolds(byref,byref,int,int,ubyte,byref,byref,byref,ulong,BepuUtilities.Memory.BufferPool) (FullOpts)
        7385 (91.22 % of base) : 14099.dasm - FSharp.Compiler.CheckFormatStrings:parseLoop@185(FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+FormatStringCheckContext],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType,int,System.Collections.Generic.List`1[System.Tuple`2[FSharp.Compiler.Text.Range,int]],System.Text.StringBuilder,System.Collections.Generic.List`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Core.FSharpRef`1[int],Microsoft.FSharp.Core.FSharpRef`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[int],FSharp.Compiler.TypedTree+TType]],int,int,int,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[int,int,FSharp.Compiler.Text.Range]]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType] (FullOpts)
        7324 (69.37 % of base) : 34750.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        6881 (83.77 % of base) : 27373.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
        6676 (82.42 % of base) : 16592.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
        6611 (94.94 % of base) : 23827.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
        6413 (85.75 % of base) : 20823.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
        6251 (95.83 % of base) : 24444.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
        6182 (77.97 % of base) : 8567.dasm - FSharp.Compiler.CheckExpressions:TcLinearExprs(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]]]]],FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,Microsoft.FSharp.Core.FSharpFunc`2[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv],System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
        6158 (132.46 % of base) : 15467.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponentPostProcessor:CopyBlocksToColorBuffer(int):this (FullOpts)
        6121 (83.01 % of base) : 812.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6009 (98.86 % of base) : 23557.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        5646 (92.59 % of base) : 33606.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        5500 (73.37 % of base) : 23099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
        5294 (79.98 % of base) : 10561.dasm - FSharp.Compiler.MethodOverrides+DispatchSlotChecking:CheckDispatchSlotsAreImplemented(FSharp.Compiler.TypedTreeOps+DisplayEnv,FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.NameResolution+TcResultsSink,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+RequiredSlot],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+OverrideInfo],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodOverrides+OverrideInfo]):ubyte (FullOpts)
        5190 (103.82 % of base) : 15667.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessBorderColumn(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)

Top method improvements (bytes):
        -335 (-3.87 % of base) : 32717.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -152 (-17.00 % of base) : 446.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -53 (-4.33 % of base) : 2190.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -42 (-4.90 % of base) : 20904.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
         -34 (-31.78 % of base) : 1334.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
         -32 (-10.63 % of base) : 17656.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -18 (-0.70 % of base) : 11212.dasm - FSharp.Compiler.TypedTreePickle:p_entity_spec_data(FSharp.Compiler.TypedTree+Entity,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
         -18 (-0.73 % of base) : 11301.dasm - FSharp.Compiler.TypedTreePickle:p_ValData(FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
         -16 (-11.35 % of base) : 11240.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
         -15 (-7.61 % of base) : 36759.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-1.77 % of base) : 35973.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
         -14 (-0.92 % of base) : 17398.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
         -13 (-0.90 % of base) : 33380.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetRegkeyForPath(System.String,ubyte):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
         -12 (-1.87 % of base) : 2203.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -12 (-2.99 % of base) : 16256.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -12 (-1.27 % of base) : 1694.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
         -12 (-5.71 % of base) : 35204.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
          -6 (-1.17 % of base) : 24010.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
          -6 (-0.39 % of base) : 15240.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:DeflateSlow(ubyte,ubyte):ubyte:this (FullOpts)
          -6 (-0.81 % of base) : 36872.dasm - System.Management.Automation.ComInterop.VariantArray:GetStructType(int):System.Type (FullOpts)

Top method regressions (percentages):
         103 (156.06 % of base) : 29886.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
         210 (143.84 % of base) : 19247.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
        6158 (132.46 % of base) : 15467.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponentPostProcessor:CopyBlocksToColorBuffer(int):this (FullOpts)
        1194 (117.06 % of base) : 1002.dasm - BepuPhysics.Trees.Tree:Sweep[BepuPhysics.Collidables.ShapeTreeSweepLeafTester`1[BepuPhysics.CollisionDetection.CollisionTasks.ChildOverlapsCollection]](int,byref,byref,byref,ulong,ulong,byref):this (FullOpts)
         629 (116.48 % of base) : 1129.dasm - BepuPhysics.Trees.Tree:RayCast[BepuPhysics.Collidables.BigCompound+LeafTester`1[DemoBenchmarks.ShapeRayBenchmarksDeep+HitHandler]](int,ulong,ulong,ulong,byref):this (FullOpts)
        4487 (113.85 % of base) : 1518.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
        2039 (112.22 % of base) : 27001.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:BuildSwitchLabels(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        4753 (108.99 % of base) : 29399.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         437 (108.98 % of base) : 24577.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEnumConstantSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         949 (108.58 % of base) : 18826.dasm - Microsoft.ML.Transforms.LpNormNormalizingTransformer+Mapper:GetOutputColumnsCore():Microsoft.ML.DataViewSchema+DetachedColumn[]:this (FullOpts)
         355 (108.23 % of base) : 23405.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
       13639 (107.69 % of base) : 23160.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         935 (107.47 % of base) : 1497.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
        1092 (107.37 % of base) : 271.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
         591 (107.07 % of base) : 28206.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:<ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest>g__isRuntimeSimilar|42_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (FullOpts)
        3048 (107.06 % of base) : 26383.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindRegularCSharpFieldInitializers(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundInitializer],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref) (FullOpts)
         448 (106.92 % of base) : 12148.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores:writeFakeUnionCtorsToSink@3987(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+EntityRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+UnionCase]) (FullOpts)
        1169 (106.37 % of base) : 25843.dasm - Microsoft.CodeAnalysis.CSharp.Conversions:GetDelegateOrFunctionPointerArguments(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.CSharpCompilation) (FullOpts)
        3140 (106.26 % of base) : 1368.dasm - BepuPhysics.CollisionDetection.FreshnessChecker:CheckFreshnessInRegion(int,int,int):this (FullOpts)
        3229 (105.97 % of base) : 15669.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ProcessCornerTile(SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData[SixLabors.ImageSharp.PixelFormats.Rgba32],int,int,int,int,int,int,int) (FullOpts)

Top method improvements (percentages):
         -34 (-31.78 % of base) : 1334.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
        -152 (-17.00 % of base) : 446.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-11.35 % of base) : 11240.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
         -32 (-10.63 % of base) : 17656.dasm - System.Threading.PortableThreadPool:EnsureIOCompletionPollers():this (FullOpts)
         -15 (-7.61 % of base) : 36759.dasm - System.Linq.Enumerable+WhereListIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -12 (-5.71 % of base) : 35204.dasm - System.Linq.Expressions.CachedReflectionInfo:get_MethodBase_GetMethodFromHandle_RuntimeMethodHandle():System.Reflection.MethodInfo (FullOpts)
         -42 (-4.90 % of base) : 20904.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
         -53 (-4.33 % of base) : 2190.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
        -335 (-3.87 % of base) : 32717.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -12 (-2.99 % of base) : 16256.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe:Create(Microsoft.ML.Data.DataViewType,System.Object):Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe (FullOpts)
         -12 (-1.87 % of base) : 2203.dasm - FSharp.Compiler.DependencyManager.AssemblyResolveHandlerCoreclr:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.AssemblyResolutionProbe]):this (FullOpts)
         -15 (-1.77 % of base) : 35973.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
          -2 (-1.67 % of base) : 16454.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.67 % of base) : 101.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.67 % of base) : 20925.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.65 % of base) : 3138.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.59 % of base) : 4561.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.46 % of base) : 207.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.41 % of base) : 26469.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
         -12 (-1.27 % of base) : 1694.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)


smoke_tests.nativeaot.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: 5066508 (overridden on cmd)
Total bytes of diff: 5797153 (overridden on cmd)
Total bytes of delta: 730645 (14.42 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        6130 : 18950.dasm (81.62 % of base)
        6106 : 1116.dasm (81.27 % of base)
        6106 : 4481.dasm (81.27 % of base)
        6105 : 16193.dasm (81.21 % of base)
        6105 : 21627.dasm (81.21 % of base)
        5959 : 11377.dasm (68.28 % of base)
        4827 : 6161.dasm (87.02 % of base)
        4780 : 14914.dasm (87.16 % of base)
        4780 : 11930.dasm (87.21 % of base)
        2430 : 10589.dasm (59.22 % of base)
        2430 : 4663.dasm (59.22 % of base)
        2325 : 14470.dasm (84.33 % of base)
        2302 : 7136.dasm (95.64 % of base)
        2282 : 3451.dasm (82.00 % of base)
        2175 : 15692.dasm (77.16 % of base)
        2175 : 18370.dasm (77.16 % of base)
        2175 : 471.dasm (77.16 % of base)
        2175 : 21061.dasm (77.16 % of base)
        2159 : 16631.dasm (92.50 % of base)
        2159 : 1580.dasm (92.58 % of base)

Top file improvements (bytes):
         -12 : 9610.dasm (-7.41 % of base)
          -4 : 6211.dasm (-0.84 % of base)
          -4 : 6205.dasm (-0.86 % of base)
          -2 : 12087.dasm (-1.68 % of base)
          -2 : 12638.dasm (-2.33 % of base)
          -2 : 13218.dasm (-1.68 % of base)
          -2 : 4613.dasm (-1.45 % of base)
          -2 : 7294.dasm (-2.15 % of base)
          -2 : 7859.dasm (-1.68 % of base)
          -2 : 1249.dasm (-1.45 % of base)
          -2 : 9832.dasm (-1.68 % of base)
          -2 : 16923.dasm (-1.37 % of base)
          -2 : 19488.dasm (-1.37 % of base)
          -2 : 22220.dasm (-1.37 % of base)
          -1 : 11067.dasm (-0.49 % of base)
          -1 : 5741.dasm (-0.45 % of base)

74 total files with Code Size differences (16 improved, 58 regressed), 7 unchanged.

Top method regressions (bytes):
        6130 (81.62 % of base) : 18950.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6106 (81.27 % of base) : 1116.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6106 (81.27 % of base) : 4481.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6105 (81.21 % of base) : 16193.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        6105 (81.21 % of base) : 21627.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
        5959 (68.28 % of base) : 11377.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        4827 (87.02 % of base) : 6161.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4780 (87.16 % of base) : 14914.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        4780 (87.21 % of base) : 11930.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
        2430 (59.22 % of base) : 10589.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        2430 (59.22 % of base) : 4663.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
        2325 (84.33 % of base) : 14470.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2302 (95.64 % of base) : 7136.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
        2282 (82.00 % of base) : 3451.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2175 (77.16 % of base) : 15692.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2175 (77.16 % of base) : 18370.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2175 (77.16 % of base) : 471.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2175 (77.16 % of base) : 21061.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
        2159 (92.50 % of base) : 16631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2159 (92.58 % of base) : 1580.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method improvements (bytes):
         -12 (-7.41 % of base) : 9610.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -4 (-0.84 % of base) : 6211.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)
          -4 (-0.86 % of base) : 6205.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -2 (-2.33 % of base) : 12638.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-2.15 % of base) : 7294.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 13218.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 4613.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 1249.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 16923.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 19488.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 22220.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 9832.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 7859.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 12087.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -1 (-0.49 % of base) : 11067.dasm - Internal.TypeSystem.InstantiatedMethod:IsCanonicalMethod(int):ubyte:this (FullOpts)
          -1 (-0.45 % of base) : 5741.dasm - Internal.TypeSystem.InstantiatedMethod:IsCanonicalMethod(int):ubyte:this (FullOpts)

Top method regressions (percentages):
          85 (98.84 % of base) : 6742.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (98.84 % of base) : 2012.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (98.84 % of base) : 17081.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (98.84 % of base) : 19788.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
          85 (98.84 % of base) : 22399.dasm - System.Random+XoshiroImpl:Next():int:this (FullOpts)
        1117 (98.41 % of base) : 21035.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
        1117 (98.41 % of base) : 15547.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
        1114 (98.24 % of base) : 18319.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
        1127 (97.83 % of base) : 3313.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
        1119 (97.73 % of base) : 424.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
        2302 (95.64 % of base) : 7136.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
          21 (95.45 % of base) : 12278.dasm - System.Collections.Hashtable+SyncHashtable:get_SyncRoot():System.Object:this (FullOpts)
         405 (93.75 % of base) : 16213.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
         405 (93.75 % of base) : 4502.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
         405 (93.75 % of base) : 1137.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
         405 (93.75 % of base) : 18969.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
         405 (93.75 % of base) : 21598.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:RehydrateData(long,int) (FullOpts)
          99 (93.40 % of base) : 25457.dasm - System.Sha1ForNonSecretPurposes:Append(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
        2159 (92.58 % of base) : 1580.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
        2159 (92.50 % of base) : 16631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method improvements (percentages):
         -12 (-7.41 % of base) : 9610.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitInvocation(System.Linq.Expressions.InvocationExpression):System.Linq.Expressions.Expression:this (FullOpts)
          -2 (-2.33 % of base) : 12638.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-2.15 % of base) : 7294.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 13218.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 9832.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 7859.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.68 % of base) : 12087.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 4613.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.45 % of base) : 1249.dasm - System.Collections.Generic.Dictionary`2+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 16923.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 19488.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -2 (-1.37 % of base) : 22220.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-0.86 % of base) : 6205.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticMethods>d__188:MoveNext():ubyte:this (FullOpts)
          -4 (-0.84 % of base) : 6211.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo+<CoreGetDeclaredSyntheticConstructors>d__186:MoveNext():ubyte:this (FullOpts)
          -1 (-0.49 % of base) : 11067.dasm - Internal.TypeSystem.InstantiatedMethod:IsCanonicalMethod(int):ubyte:this (FullOpts)
          -1 (-0.45 % of base) : 5741.dasm - Internal.TypeSystem.InstantiatedMethod:IsCanonicalMethod(int):ubyte:this (FullOpts)