Assembly Diffs

linux arm

Diffs are based on 2,230,531 contexts (825,130 MinOpts, 1,405,401 FullOpts).

MISSED contexts: 77,526 (3.36%)

Overall (+107,040 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,058,218 +3,186
benchmarks.run_pgo.linux.arm.checked.mch 63,288,040 +6,114
benchmarks.run_tiered.linux.arm.checked.mch 17,396,558 +2,988
coreclr_tests.run.linux.arm.checked.mch 321,408,536 +18,464
libraries.crossgen2.linux.arm.checked.mch 36,764,136 +606
libraries.pmi.linux.arm.checked.mch 48,744,412 +12,712
libraries_tests.run.linux.arm.Release.mch 244,971,224 +46,576
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,398,640 +13,030
realworld.run.linux.arm.checked.mch 13,306,794 +3,364

FullOpts (+107,040 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,674,752 +3,186
benchmarks.run_pgo.linux.arm.checked.mch 51,640,226 +6,114
benchmarks.run_tiered.linux.arm.checked.mch 10,204,256 +2,988
coreclr_tests.run.linux.arm.checked.mch 108,689,074 +18,464
libraries.crossgen2.linux.arm.checked.mch 36,762,906 +606
libraries.pmi.linux.arm.checked.mch 48,637,908 +12,712
libraries_tests.run.linux.arm.Release.mch 122,627,896 +46,576
librariestestsnotieredcompilation.run.linux.arm.Release.mch 83,314,838 +13,030
realworld.run.linux.arm.checked.mch 12,857,108 +3,364

Example diffs

benchmarks.run.linux.arm.checked.mch

-20 (-6.45%) : 7118.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)

@@ -17,13 +17,13 @@ ; V07 tmp2 [V07,T09] ( 4, 2 ) ref -> lr "field V03.Cert (fldOffset=0x0)" P-INDEP ; V08 tmp3 [V08,T10] ( 4, 2 ) ref -> [sp+0x00] "field V03.Key (fldOffset=0x4)" P-INDEP ; V09 tmp4 [V09,T05] ( 3, 3 ) byref -> r3 single-def "BlockOp address local"
-; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r0 "index expr"
+; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r4 "index expr"
; V11 tmp6 [V11,T06] ( 3, 3 ) byref -> r3 single-def "BlockOp address local" ;* V12 tmp7 [V12,T13] ( 0, 0 ) int -> zero-ref "index expr" ; V13 tmp8 [V13,T15] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V14 cse0 [V14,T11] ( 3, 1.50) byref -> r0 "CSE - moderate" ; V15 cse1 [V15,T12] ( 3, 1.50) byref -> r0 "CSE - moderate"
-; V16 cse2 [V16,T04] ( 3, 2.50) int -> r0 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 2.50) int -> r4 "CSE - aggressive"
; V17 cse3 [V17,T08] ( 3, 3 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -42,57 +42,57 @@ G_M3164_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byr ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M3164_IG11
- subs r0, r0, 1 - mov r3, r0
+ subs r4, r0, 1 + mov r3, r4
cmp r3, 0 blt SHORT G_M3164_IG06 cmp r2, 0 beq SHORT G_M3164_IG05
- ldr lr, [r2+0x04] - cmp lr, r3
+ ldr r0, [r2+0x04] + cmp r0, r3
ble SHORT G_M3164_IG05
- ;; size=28 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 13.00
G_M3164_IG03: ; bbWeight=3.96, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG03
- ;; size=26 bbWeight=3.96 PerfScore 35.64 -G_M3164_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz - ; gcrRegs -[lr]
+ ;; size=18 bbWeight=3.96 PerfScore 35.64 +G_M3164_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz + ; gcrRegs -[r0]
b SHORT G_M3164_IG06
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3164_IG05: ; bbWeight=0.04, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ldr lr, [r2+0x04] - cmp r3, lr
+ ldr r0, [r2+0x04] + cmp r3, r0
bhs SHORT G_M3164_IG10
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG05
- ;; size=34 bbWeight=0.04 PerfScore 0.48
+ ;; size=24 bbWeight=0.04 PerfScore 0.48
G_M3164_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[lr] - ldr r3, [r2+0x04] - cmp r0, r3
+ ; gcrRegs -[r0] + ldr r0, [r2+0x04] + cmp r4, r0
bhs SHORT G_M3164_IG10
- lsls r0, r0, 3
+ lsls r0, r4, 3
adds r0, 8 adds r0, r2, r0 ; byrRegs +[r0] @@ -228,7 +228,7 @@ G_M3164_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 10, PerfScore 80.12, instruction count 116, allocated bytes for code 310 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
+; Total bytes of code 290, prolog size 10, PerfScore 79.62, instruction count 116, allocated bytes for code 290 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +240,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 310 (0x000136)
+ Function Length : 145 (0x00091) Actual length = 290 (0x000122)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-30 (-5.77%) : 3423.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int

@@ -15,15 +15,15 @@ ; V04 loc0 [V04,T14] ( 4, 3 ) int -> [sp+0x04] spill-single-def ; V05 loc1 [V05,T13] ( 8, 4 ) int -> r8 ; V06 loc2 [V06,T07] ( 13, 8.68) ref -> r9 class-hnd single-def <int[]>
-; V07 loc3 [V07,T10] ( 4, 5 ) int -> r0
+; V07 loc3 [V07,T10] ( 4, 5 ) int -> r10
; V08 loc4 [V08,T19] ( 3, 1.50) ref -> r4 class-hnd single-def <int[]> ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V10 loc6 [V10,T04] ( 6, 18.50) int -> r1
+; V10 loc6 [V10,T04] ( 6, 18.50) int -> r3
;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V12 loc8 [V12,T03] ( 6, 20 ) int -> [sp+0x00] spill-single-def
+; V12 loc8 [V12,T03] ( 6, 20 ) int -> r0
; V13 loc9 [V13,T02] ( 7, 32 ) int -> r12
-; V14 loc10 [V14,T00] ( 12, 74.16) int -> r5 -; V15 loc11 [V15,T01] ( 5, 34 ) byref -> r10
+; V14 loc10 [V14,T00] ( 12, 74.16) int -> r2 +; V15 loc11 [V15,T01] ( 5, 34 ) byref -> r1
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V17 tmp1 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V18 tmp2 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" @@ -39,9 +39,9 @@ ; V28 tmp12 [V28,T17] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ; V29 tmp13 [V29,T18] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ;* V30 cse0 [V30,T22] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V31 cse1 [V31,T05] ( 3, 16.50) byref -> r3 hoist "CSE - aggressive"
+; V31 cse1 [V31,T05] ( 3, 16.50) byref -> lr hoist "CSE - aggressive"
; V32 cse2 [V32,T08] ( 4, 6.50) int -> r7 "CSE - aggressive"
-; V33 cse3 [V33,T12] ( 2, 4.50) byref -> r2 hoist "CSE - moderate"
+; V33 cse3 [V33,T12] ( 2, 4.50) byref -> r5 hoist "CSE - moderate"
; ; Lcl frame size = 12 @@ -65,7 +65,7 @@ G_M57321_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // CORINFO_HELP_DIV ; gcr arg pop 0 cmp r0, 5
- bgt G_M57321_IG19
+ bgt G_M57321_IG17
;; size=28 bbWeight=1 PerfScore 11.00 G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz movs r0, 5 @@ -73,7 +73,7 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b movw r0, 0xd1ff movt r0, 0xd1ff cmp r8, r0
- bgt G_M57321_IG19
+ bgt G_M57321_IG17
movw r0, 0xd1ff movt r0, 0xd1ff movs r1, 34 @@ -97,7 +97,7 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b cmp r9, 0 bne SHORT G_M57321_IG04 cmp r8, 0
- bne G_M57321_IG24
+ bne G_M57321_IG22
movs r0, 0 ; gcrRegs -[r0] movs r1, 0 @@ -107,7 +107,7 @@ G_M57321_IG04: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} ldr r0, [r9+0x04] ldr r1, [r9+0x04] cmp r1, r8
- blo G_M57321_IG24
+ blo G_M57321_IG22
add r0, r9, 8 ; byrRegs +[r0] mov r1, r8 @@ -120,100 +120,92 @@ G_M57321_IG05: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0001 {r blx r3 // <unknown method> ; byrRegs -[r0] ; gcr arg pop 0
- movs r0, 0 - movs r1, 0
+ mov r10, 0 + movs r3, 0
cmp r7, 0
- ble SHORT G_M57321_IG17 - add r2, r5, 8 - ; byrRegs +[r2] - add r3, r9, 8 - ; byrRegs +[r3] - ;; size=32 bbWeight=0.50 PerfScore 5.50 -G_M57321_IG06: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz
+ ble SHORT G_M57321_IG15 + adds r5, 8
; gcrRegs -[r5]
- lsl lr, r1, 2 - ldr lr, [r2+lr] - ; gcrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs -[lr] - sub lr, lr, r4 - mov r12, 5 - mul lr, lr, r12 - str lr, [sp] - add r12, lr, 5 - mov r5, lr - cmp lr, r12 - bge SHORT G_M57321_IG16 - ;; size=38 bbWeight=4 PerfScore 44.00 -G_M57321_IG07: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz
+ ; byrRegs +[r5] + add lr, r9, 8 + ; byrRegs +[lr] + ;; size=32 bbWeight=0.50 PerfScore 5.50 +G_M57321_IG06: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + lsls r0, r3, 2 + ldr r0, [r5+r0] + ; gcrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs -[r0] + subs r0, r0, r4 + movs r1, 5 + mul r0, r0, r1 + add r12, r0, 5 + mov r2, r0 + cmp r0, r12 + bge SHORT G_M57321_IG14 + ;; size=24 bbWeight=4 PerfScore 40.00 +G_M57321_IG07: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz
cmp r9, 0 beq SHORT G_M57321_IG10
- orrs r10, lr, r12 - cmp r10, 0
+ orrs r1, r0, r12 + cmp r1, 0
blt SHORT G_M57321_IG10
- ldr r10, [r9+0x04] - cmp r10, r12
+ ldr r1, [r9+0x04] + cmp r1, r12
blt SHORT G_M57321_IG10
- ;; size=24 bbWeight=2 PerfScore 16.00 -G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - lsl r10, r5, 2 - add r10, r3 - ; byrRegs +[r10] - ldr r6, [r10]
+ ;; size=22 bbWeight=2 PerfScore 16.00 +G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + lsls r1, r2, 2 + add r1, lr + ; byrRegs +[r1] + ldr r6, [r1]
cmp r6, 0
- blt SHORT G_M57321_IG14 - adds r5, r5, 1 - cmp r5, r12
+ blt SHORT G_M57321_IG12 + adds r2, r2, 1 + cmp r2, r12
blt SHORT G_M57321_IG08
- ;; size=20 bbWeight=15.84 PerfScore 126.72 -G_M57321_IG09: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - b SHORT G_M57321_IG16 - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M57321_IG10: ; bbWeight=0.02, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref - ldr r10, [r9+0x04]
+ ;; size=16 bbWeight=15.84 PerfScore 126.72 +G_M57321_IG09: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ; byrRegs -[r1] + b SHORT G_M57321_IG14 + ;; size=2 bbWeight=4 PerfScore 4.00 +G_M57321_IG10: ; bbWeight=0.02, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref + ldr r1, [r9+0x04]
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M57321_IG11: ; bbWeight=0.16, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ldr r10, [r9+0x04] - cmp r5, r10 - bhs SHORT G_M57321_IG23 - lsl r10, r5, 2 - add r10, r3 - ; byrRegs +[r10] - ldr lr, [r10] - cmp lr, 0 - blt SHORT G_M57321_IG13 - adds r5, r5, 1 - cmp r5, r12
+G_M57321_IG11: ; bbWeight=0.16, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ldr r1, [r9+0x04] + cmp r2, r1 + bhs SHORT G_M57321_IG21 + lsls r1, r2, 2 + add r1, lr + ; byrRegs +[r1] + ldr r6, [r1] + cmp r6, 0 + blt SHORT G_M57321_IG12 + adds r2, r2, 1 + cmp r2, r12
blt SHORT G_M57321_IG11
- ;; size=30 bbWeight=0.16 PerfScore 1.76 -G_M57321_IG12: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - b SHORT G_M57321_IG16
+ b SHORT G_M57321_IG14 + ;; size=26 bbWeight=0.16 PerfScore 1.92 +G_M57321_IG12: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4022 {r1 r5 lr}, byref, isz + cmp r2, r0 + bne SHORT G_M57321_IG13 + add r10, r10, 1 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M57321_IG13: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4022 {r1 r5 lr}, byref + str r3, [r1]
;; size=2 bbWeight=2 PerfScore 2.00
-G_M57321_IG13: ; bbWeight=0.08, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref - ; byrRegs +[r10] - ldr lr, [sp] // [V12 loc8] - ;; size=4 bbWeight=0.08 PerfScore 0.08 -G_M57321_IG14: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref, isz - cmp r5, lr - bne SHORT G_M57321_IG15 - adds r0, r0, 1 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M57321_IG15: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref - str r1, [r10] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M57321_IG16: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - cmp r5, r12 - beq SHORT G_M57321_IG18 - adds r1, r1, 1 - cmp r7, r1
+G_M57321_IG14: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ; byrRegs -[r1] + cmp r2, r12 + beq SHORT G_M57321_IG16 + adds r3, r3, 1 + cmp r7, r3
bgt SHORT G_M57321_IG06 ;; size=10 bbWeight=4 PerfScore 20.00
-G_M57321_IG17: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r2-r3] - vmov.i2f s8, r0
+G_M57321_IG15: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r5 lr] + vmov.i2f s8, r10
vcvt.i2d d4, s8 ldr r6, [sp+0x04] // [V04 loc0] vmov.i2f s10, r6 @@ -226,9 +218,9 @@ G_M57321_IG17: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, b vmov.i2d d5, r0, r1 vcmp d4, d5 vmrs APSR, FPSCR
- bhs SHORT G_M57321_IG21
+ bhs SHORT G_M57321_IG19
;; size=52 bbWeight=0.50 PerfScore 7.00 ...

-12 (-4.62%) : 34065.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (FullOpts)

@@ -10,18 +10,18 @@ ; V00 this [V00,T06] ( 3, 3 ) ref -> r0 this class-hnd single-def <Benchstone.BenchI.XposMatrix> ; V01 loc0 [V01,T07] ( 7, 4.58) ref -> r0 class-hnd single-def <int[][]> ;* V02 loc1 [V02,T11] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc2 [V03,T03] ( 12, 19.04) int -> r1 -; V04 loc3 [V04,T00] ( 16, 68.32) int -> r2
+; V03 loc2 [V03,T03] ( 12, 19.04) int -> r4 +; V04 loc3 [V04,T00] ( 16, 68.32) int -> r1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 8, 64.64) ref -> registers "arr expr" ; V07 tmp2 [V07,T05] ( 3, 6 ) ref -> r1 single-def "arr expr" ; V08 tmp3 [V08,T10] ( 3, 3 ) ref -> r0 single-def "arr expr"
-; V09 cse0 [V09,T12] ( 2, 0.20) ref -> lr hoist "CSE - conservative" -; V10 cse1 [V10,T02] ( 6, 21.80) ref -> r12 hoist multi-def "CSE - aggressive" -; V11 cse2 [V11,T08] ( 7, 4.58) byref -> r4 hoist multi-def "CSE - aggressive" -; V12 cse3 [V12,T09] ( 4, 4.00) int -> lr hoist multi-def "CSE - aggressive" -; V13 cse4 [V13,T04] ( 6, 7.04) int -> r3 hoist multi-def "CSE - aggressive" -; V14 cse5 [V14,T13] ( 2, 0.08) int -> lr hoist "CSE - conservative"
+; V09 cse0 [V09,T12] ( 2, 0.20) ref -> r3 hoist "CSE - conservative" +; V10 cse1 [V10,T02] ( 6, 21.80) ref -> r2 hoist multi-def "CSE - aggressive" +; V11 cse2 [V11,T08] ( 7, 4.58) byref -> r6 hoist multi-def "CSE - aggressive" +; V12 cse3 [V12,T09] ( 4, 4.00) int -> r3 hoist multi-def "CSE - aggressive" +; V13 cse4 [V13,T04] ( 6, 7.04) int -> r5 hoist multi-def "CSE - aggressive" +; V14 cse5 [V14,T13] ( 2, 0.08) int -> r3 hoist "CSE - conservative"
; ; Lcl frame size = 4 @@ -32,119 +32,119 @@ G_M49643_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M49643_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x04]
- movs r1, 1
+ movs r4, 1
cmp r0, 0 beq SHORT G_M49643_IG11
- ldr r3, [r0+0x04] - cmp r3, 100
+ ldr r5, [r0+0x04] + cmp r5, 100
ble SHORT G_M49643_IG11
- add r4, r0, 8 - ; byrRegs +[r4]
+ add r6, r0, 8 + ; byrRegs +[r6]
;; size=18 bbWeight=1 PerfScore 8.00
-G_M49643_IG03: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - movs r2, 1 - cmp r3, r1
+G_M49643_IG03: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + movs r1, 1 + cmp r5, r4
bls SHORT G_M49643_IG07 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M49643_IG04: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - lsl lr, r1, 2 - ldr r12, [r4+lr] - ; gcrRegs +[r12] - cmp r12, 0
+G_M49643_IG04: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + lsls r3, r4, 2 + ldr r2, [r6+r3] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M49643_IG07
- ldr lr, [r12+0x04] - cmp lr, 100
+ ldr r3, [r2+0x04] + cmp r3, 100
ble SHORT G_M49643_IG07
- ;; size=24 bbWeight=1.98 PerfScore 13.86 -G_M49643_IG05: ; bbWeight=15.68, gcrefRegs=1001 {r0 r12}, byrefRegs=0010 {r4}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r5, r2, 2 - movs r6, 1 - str r6, [lr+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG05 - ;; size=20 bbWeight=15.68 PerfScore 125.45 -G_M49643_IG06: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr] - b SHORT G_M49643_IG09 - ;; size=2 bbWeight=1.98 PerfScore 1.98 -G_M49643_IG07: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref
+ ;; size=14 bbWeight=1.98 PerfScore 13.86 +G_M49643_IG05: ; bbWeight=15.68, gcrefRegs=0005 {r0 r2}, byrefRegs=0040 {r6}, byref, isz + mov r3, r2 + ; gcrRegs +[r3] + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3]
lsl lr, r1, 2
- ldr r12, [r4+lr] - ; gcrRegs +[r12] - ;; size=8 bbWeight=0.02 PerfScore 0.04 -G_M49643_IG08: ; bbWeight=0.16, gcrefRegs=1001 {r0 r12}, byrefRegs=0010 {r4}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - ldr r5, [lr+0x04] - cmp r2, r5 - bhs SHORT G_M49643_IG19 - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r5, r2, 2 - movs r6, 1 - str r6, [lr+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG08 - ;; size=28 bbWeight=0.16 PerfScore 1.74 -G_M49643_IG09: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr]
+ mov r12, 1 + str r12, [r3+lr]
adds r1, r1, 1 cmp r1, 100
+ ble SHORT G_M49643_IG05 + ;; size=22 bbWeight=15.68 PerfScore 125.45 +G_M49643_IG06: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r3] + b SHORT G_M49643_IG09 + ;; size=2 bbWeight=3.96 PerfScore 3.96 +G_M49643_IG07: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref + lsls r3, r4, 2 + ldr r2, [r6+r3] + ; gcrRegs +[r2] + ;; size=4 bbWeight=0.02 PerfScore 0.04 +G_M49643_IG08: ; bbWeight=0.16, gcrefRegs=0005 {r0 r2}, byrefRegs=0040 {r6}, byref, isz + mov r3, r2 + ; gcrRegs +[r3] + ldr lr, [r3+0x04] + cmp r1, lr + bhs SHORT G_M49643_IG19 + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3] + lsl lr, r1, 2 + mov r12, 1 + str r12, [r3+lr] + adds r1, r1, 1 + cmp r1, 100 + ble SHORT G_M49643_IG08 + ;; size=30 bbWeight=0.16 PerfScore 1.74 +G_M49643_IG09: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r3] + adds r4, r4, 1 + cmp r4, 100
ble SHORT G_M49643_IG03 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M49643_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
+G_M49643_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz
b SHORT G_M49643_IG14 ;; size=2 bbWeight=1 PerfScore 1.00 G_M49643_IG11: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r4] - movs r2, 1 - ldr r3, [r0+0x04] - add r4, r0, 8 - ; byrRegs +[r4]
+ ; byrRegs -[r6] + movs r1, 1 + ldr r5, [r0+0x04] + add r6, r0, 8 + ; byrRegs +[r6] + lsls r3, r4, 2 + cmp r4, r5 + bhs SHORT G_M49643_IG19 + ldr r3, [r6+r3] + ; gcrRegs +[r3] + ;; size=16 bbWeight=0.04 PerfScore 0.28 +G_M49643_IG12: ; bbWeight=0.16, gcrefRegs=0009 {r0 r3}, byrefRegs=0040 {r6}, byref, isz + mov r2, r3 + ; gcrRegs +[r2] + ldr lr, [r2+0x04] + cmp r1, lr + bhs SHORT G_M49643_IG19 + adds r2, 8 + ; gcrRegs -[r2] + ; byrRegs +[r2]
lsl lr, r1, 2
- cmp r1, r3 - bhs SHORT G_M49643_IG19 - ldr lr, [r4+lr] - ; gcrRegs +[lr] - ;; size=20 bbWeight=0.04 PerfScore 0.28 -G_M49643_IG12: ; bbWeight=0.16, gcrefRegs=4001 {r0 lr}, byrefRegs=0010 {r4}, byref, isz - mov r12, lr - ; gcrRegs +[r12] - ldr r5, [r12+0x04] - cmp r2, r5 - bhs SHORT G_M49643_IG19 - add r12, r12, 8 - ; gcrRegs -[r12] - ; byrRegs +[r12] - lsls r5, r2, 2 - movs r6, 1 - str r6, [r12+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG12 - ;; size=28 bbWeight=0.16 PerfScore 1.76 -G_M49643_IG13: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[lr] - ; byrRegs -[r12]
+ mov r12, 1 + str r12, [r2+lr]
adds r1, r1, 1 cmp r1, 100
+ ble SHORT G_M49643_IG12 + ;; size=30 bbWeight=0.16 PerfScore 1.76 +G_M49643_IG13: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r3] + ; byrRegs -[r2] + adds r4, r4, 1 + cmp r4, 100
ble SHORT G_M49643_IG11 ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
+G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz
movs r1, 100
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M49643_IG19
- ldr r1, [r4+0x190]
+ ldr r1, [r6+0x190]
; gcrRegs +[r1] movs r3, 100 ldr r2, [r1+0x04] @@ -157,15 +157,15 @@ G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, by ;; size=26 bbWeight=1 PerfScore 11.00 G_M49643_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0]
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M49643_IG16: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49643_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M49643_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, gcvars, byref, isz
...

+20 (+50.00%) : 3408.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (FullOpts)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r0 single-def "V02.[000..004)" -;* V09 cse0 [V09,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r3 single-def "V02.[000..004)" +; V09 cse0 [V09,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V10 rat0 [V10,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V11 rat1 [V11,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -36,19 +36,31 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M20412_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x18] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ldr r3, [sp+0x18] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x10]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M20412_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -56,7 +68,7 @@ G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+50.00%) : 16768.dasm - System.Collections.Immutable.ImmutableHashSet1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)

@@ -17,13 +17,13 @@ ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V02._firstValue (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r0 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP -;* V10 cse0 [V10,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V11 rat0 [V11,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r3 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP +; V10 cse0 [V10,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V11 rat0 [V11,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V14 rat3 [V14,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V15 rat4 [V15,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -37,19 +37,31 @@ G_M10050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M10050_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x1C] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x08] + cmp r3, 0 + ldr r3, [sp+0x1C] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x0C]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M10050_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -57,7 +69,7 @@ G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+54.55%) : 13586.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [sp+0x04] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> [sp+0x00] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
; V01 loc0 [V01,T02] ( 3, 6 ) ref -> r3 ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03,T00] ( 5, 17 ) int -> r1 @@ -19,31 +19,37 @@ ;* V08 cse0 [V08,T09] ( 0, 0 ) int -> zero-ref "CSE - aggressive" ; V09 cse1 [V09,T03] ( 3, 6 ) int -> lr "CSE - aggressive" ; V10 cse2 [V10,T05] ( 2, 5 ) byref -> r2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V11 rat0 [V11,T06] ( 2, 4 ) int -> lr "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T04] ( 2, 4 ) int -> lr "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r2,r3,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ str r0, [r11-0x04] + ;; size=12 bbWeight=1 PerfScore 3.00
G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] movs r3, 0
- str r0, [sp+0x04] - ; GC ptr vars +{V00}
ldr r2, [r0+0x1C] ; gcrRegs +[r2] movs r1, 0
+ str r0, [sp] + ; GC ptr vars +{V00} + ldr lr, [r0] + ldr lr, [lr+0x24] + ldr lr, [lr] + ldr lr, [lr+0x10] + cmp lr, 0
ldr lr, [r2+0x04] cmp lr, 0 ble SHORT G_M3722_IG04 adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2]
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M3722_IG03: ; bbWeight=4, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref, isz ; gcrRegs -[r0] lsls r3, r1, 2 @@ -62,7 +68,7 @@ G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 44 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 68, prolog size 12, PerfScore 38.00, instruction count 23, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +80,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-8.99%) : 1011.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)

@@ -15,15 +15,15 @@ ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> r3 class-hnd single-def "impAppendStmt" <int[]>
-; V06 tmp2 [V06,T12] ( 2, 2 ) int -> r12 "Inline return value spill temp" -; V07 tmp3 [V07,T05] ( 4, 18 ) byref -> r5 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T04] ( 3, 20 ) int -> r4 "Inlining Arg" -; V09 tmp5 [V09,T03] ( 4, 25 ) int -> r6 "Inline stloc first use temp" -; V10 tmp6 [V10,T00] ( 5, 33 ) int -> r7 "Inline stloc first use temp" -; V11 tmp7 [V11,T02] ( 5, 29 ) byref -> r3 "Inline stloc first use temp" -; V12 tmp8 [V12,T01] ( 5, 33 ) int -> lr "Inline stloc first use temp" -; V13 tmp9 [V13,T06] ( 2, 16 ) int -> r12 "Inline stloc first use temp" -; V14 tmp10 [V14,T08] ( 3, 9 ) int -> r12 "Inline stloc first use temp"
+; V06 tmp2 [V06,T12] ( 2, 2 ) int -> r7 "Inline return value spill temp" +; V07 tmp3 [V07,T05] ( 4, 18 ) byref -> r3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T04] ( 3, 20 ) int -> lr "Inlining Arg" +; V09 tmp5 [V09,T03] ( 4, 25 ) int -> r12 "Inline stloc first use temp" +; V10 tmp6 [V10,T00] ( 5, 33 ) int -> r4 "Inline stloc first use temp" +; V11 tmp7 [V11,T02] ( 5, 29 ) byref -> r5 "Inline stloc first use temp" +; V12 tmp8 [V12,T01] ( 5, 33 ) int -> r6 "Inline stloc first use temp" +; V13 tmp9 [V13,T06] ( 2, 16 ) int -> r7 "Inline stloc first use temp" +; V14 tmp10 [V14,T08] ( 3, 9 ) int -> r7 "Inline stloc first use temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; @@ -40,74 +40,76 @@ G_M35959_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, by movt r3, 0xd1ff ldr r3, [r3] ; gcrRegs +[r3]
- ldr r4, [r2] - add r5, r3, 8 - ; byrRegs +[r5] - ror r3, r4, 16
+ ldr lr, [r2] + adds r3, 8
; gcrRegs -[r3]
- eors r3, r1 - movw lr, 0xd1ff - movt lr, 0xd1ff - mul r3, r3, lr - ldr lr, [r5] - and lr, lr, 31 - lsr r6, r3, lr - movs r7, 0 - ;; size=48 bbWeight=1 PerfScore 14.00 -G_M35959_IG03: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz - adds r3, r6, 1 - mov lr, 12 - mul r3, r3, lr - adds r3, r5, r3
; byrRegs +[r3]
- ldr lr, [r3] - dmb 15 - ldr r12, [r3+0x04] - mvn r8, 1 - and lr, lr, r8 - cmp r12, r4 - bne SHORT G_M35959_IG05 - ;; size=36 bbWeight=8 PerfScore 88.00 -G_M35959_IG04: ; bbWeight=4, gcrefRegs=0004 {r2}, byrefRegs=0029 {r0 r3 r5}, byref, isz - ldr r12, [r3+0x08]
+ ror r12, lr, 16
eor r12, r12, r1
- cmp r12, 1 - bls SHORT G_M35959_IG06 - ;; size=14 bbWeight=4 PerfScore 16.00 -G_M35959_IG05: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz - ; byrRegs -[r3] - cmp lr, 0 - beq SHORT G_M35959_IG08 - adds r7, r7, 1 - add r12, r6, r7 - ldr r3, [r5+0x04] - and r6, r12, r3 - cmp r7, 8 - bge SHORT G_M35959_IG08 - b SHORT G_M35959_IG03 - ;; size=24 bbWeight=8 PerfScore 72.00 -G_M35959_IG06: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz - ; byrRegs -[r5] +[r3]
+ movw r4, 0xd1ff + movt r4, 0xd1ff + mul r12, r12, r4 + ldr r4, [r3] + and r4, r4, 31 + lsr r12, r12, r4 + movs r4, 0 + ;; size=48 bbWeight=1 PerfScore 14.00 +G_M35959_IG03: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz + add r5, r12, 1 + movs r6, 12 + mul r5, r5, r6 + adds r5, r3, r5 + ; byrRegs +[r5] + ldr r6, [r5]
dmb 15
- ldr r3, [r3]
+ ldr r7, [r5+0x04] + mvn r8, 1 + and r6, r6, r8 + cmp r7, lr + bne SHORT G_M35959_IG05 + ;; size=32 bbWeight=8 PerfScore 88.00 +G_M35959_IG04: ; bbWeight=4, gcrefRegs=0004 {r2}, byrefRegs=0029 {r0 r3 r5}, byref, isz + ldr r7, [r5+0x08] + eors r7, r1 + cmp r7, 1 + bls SHORT G_M35959_IG07 + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M35959_IG05: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0009 {r0 r3}, byref, isz + ; byrRegs -[r5] + cmp r6, 0 + beq SHORT G_M35959_IG09 + adds r4, r4, 1 + add r12, r4 + ldr r7, [r3+0x04] + and r12, r12, r7 + cmp r4, 8 + blt SHORT G_M35959_IG03 + ;; size=18 bbWeight=8 PerfScore 64.00 +G_M35959_IG06: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
; byrRegs -[r3]
- cmp lr, r3 - bne SHORT G_M35959_IG08 - cmp r12, 1 - bne SHORT G_M35959_IG08
+ b SHORT G_M35959_IG09 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M35959_IG07: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0021 {r0 r5}, byref, isz + ; byrRegs +[r5] + dmb 15 + ldr r3, [r5] + cmp r6, r3 + bne SHORT G_M35959_IG09 + cmp r7, 1 + bne SHORT G_M35959_IG09
mov r1, r2 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> ; gcrRegs -[r1-r2]
- ; byrRegs -[r0]
+ ; byrRegs -[r0 r5]
; gcr arg pop 0
- ;; size=28 bbWeight=1 PerfScore 10.00 -G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=26 bbWeight=1 PerfScore 10.00 +G_M35959_IG08: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M35959_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, gcvars, byref
+G_M35959_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, gcvars, byref
; gcrRegs +[r2] ; byrRegs +[r0] movw r3, 0xd1ff @@ -118,11 +120,11 @@ G_M35959_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byr ; byrRegs -[r0] ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M35959_IG10: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 178, prolog size 8, PerfScore 203.00, instruction count 56, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 162, prolog size 8, PerfScore 196.00, instruction count 56, allocated bytes for code 162 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================ Unwind Info: @@ -134,7 +136,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 89 (0x00059) Actual length = 178 (0x0000b2)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.72%) : 93282.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

@@ -31,7 +31,7 @@ ; V19 tmp11 [V19,T10] ( 3, 3 ) ubyte -> r1 "Inline return value spill temp" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]> ; V21 tmp13 [V21,T00] ( 5, 32.68) int -> r1 "Inline stloc first use temp"
-; V22 tmp14 [V22,T02] ( 3, 9.92) int -> r12 single-def "Inline stloc first use temp"
+; V22 tmp14 [V22,T02] ( 3, 9.92) int -> r0 single-def "Inline stloc first use temp"
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp17 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -43,11 +43,11 @@ ; V31 tmp23 [V31,T04] ( 4, 4 ) ref -> [sp+0x18] do-not-enreg[] single-def "field V02.array (fldOffset=0x0)" P-DEP ; V32 tmp24 [V32,T05] ( 4, 4 ) ref -> [sp+0x1C] do-not-enreg[] single-def "field V03.array (fldOffset=0x0)" P-DEP ; V33 tmp25 [V33,T07] ( 4, 3 ) ref -> [sp+0x28] do-not-enreg[] single-def "field V06.array (fldOffset=0x0)" P-DEP
-; V34 tmp26 [V34,T09] ( 3, 3 ) ref -> r0 single-def "field V12.array (fldOffset=0x0)" P-INDEP -; V35 tmp27 [V35,T12] ( 3, 2 ) ref -> [sp+0x00] "field V16.array (fldOffset=0x0)" P-INDEP
+; V34 tmp26 [V34,T09] ( 3, 3 ) ref -> r4 single-def "field V12.array (fldOffset=0x0)" P-INDEP +; V35 tmp27 [V35,T12] ( 3, 2 ) ref -> r4 "field V16.array (fldOffset=0x0)" P-INDEP
;* V36 tmp28 [V36,T19] ( 0, 0 ) ref -> zero-ref single-def "field V20.array (fldOffset=0x0)" P-INDEP
-; V37 cse0 [V37,T15] ( 2, 2 ) int -> r12 "CSE - aggressive" -; V38 cse1 [V38,T03] ( 2, 8.92) byref -> r4 hoist "CSE - aggressive"
+; V37 cse0 [V37,T15] ( 2, 2 ) int -> r0 "CSE - aggressive" +; V38 cse1 [V38,T03] ( 2, 8.92) byref -> r12 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -64,21 +64,21 @@ G_M59896_IG02: ; bbWeight=1, gcrefRegs=000E {r1 r2 r3}, byrefRegs=0000 {} ; gcrRegs +[r1] mov lr, r1 ; gcrRegs +[lr]
- ldr r0, [sp+0x28] - ; gcrRegs +[r0] - ldrb r12, [sp+0x2C] - cmp r12, 0
+ ldr r4, [sp+0x28] + ; gcrRegs +[r4] + ldrb r0, [sp+0x2C] + cmp r0, 0
bne SHORT G_M59896_IG11 cmp r3, 0 beq SHORT G_M59896_IG03 str r3, [sp+0x24]
- ldrsh r12, [r3+0x08] - ands r12, r12, 1 - cmp r12, 0
+ ldrsh r0, [r3+0x08] + ands r0, r0, 1 + cmp r0, 0
ldr r3, [sp+0x24] // [V05 arg5] bne SHORT G_M59896_IG11
- ;; size=36 bbWeight=1 PerfScore 13.00 -G_M59896_IG03: ; bbWeight=1, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 13.00 +G_M59896_IG03: ; bbWeight=1, gcrefRegs=401C {r2 r3 r4 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] ldr r1, [sp+0x28] // [V33 tmp25] ; gcrRegs +[r1] @@ -86,18 +86,18 @@ G_M59896_IG03: ; bbWeight=1, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0000 beq SHORT G_M59896_IG05 movs r1, 0 ; gcrRegs -[r1]
- ldr r12, [sp+0x28] // [V33 tmp25] - ; gcrRegs +[r12] - ldr r12, [r12+0x04] - ; gcrRegs -[r12] - cmp r12, 0
+ ldr r0, [sp+0x28] // [V33 tmp25] + ; gcrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs -[r0] + cmp r0, 0
ble SHORT G_M59896_IG05
- add r4, r0, 8 - ; byrRegs +[r4] - ;; size=26 bbWeight=1 PerfScore 9.00 -G_M59896_IG04: ; bbWeight=7.92, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0010 {r4}, byref, isz
+ add r12, r4, 8 + ; byrRegs +[r12] + ;; size=20 bbWeight=1 PerfScore 9.00 +G_M59896_IG04: ; bbWeight=7.92, gcrefRegs=401C {r2 r3 r4 lr}, byrefRegs=1000 {r12}, byref, isz
lsls r5, r1, 2
- ldr r5, [r4+r5]
+ ldr r5, [r12+r5]
; gcrRegs +[r5] ldrsh r5, [r5+0x08] ; gcrRegs -[r5] @@ -105,25 +105,23 @@ G_M59896_IG04: ; bbWeight=7.92, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0 cmp r5, 0 bne SHORT G_M59896_IG06 adds r1, r1, 1
- cmp r1, r12
+ cmp r1, r0
blt SHORT G_M59896_IG04
- ;; size=22 bbWeight=7.92 PerfScore 71.28 -G_M59896_IG05: ; bbWeight=1, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r4]
+ ;; size=24 bbWeight=7.92 PerfScore 71.28 +G_M59896_IG05: ; bbWeight=1, gcrefRegs=401C {r2 r3 r4 lr}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r12]
movs r1, 0 b SHORT G_M59896_IG07 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M59896_IG06: ; bbWeight=1, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0000 {}, byref
+G_M59896_IG06: ; bbWeight=1, gcrefRegs=401C {r2 r3 r4 lr}, byrefRegs=0000 {}, byref
movs r1, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M59896_IG07: ; bbWeight=1, gcrefRegs=400D {r0 r2 r3 lr}, byrefRegs=0000 {}, byref - str r0, [sp] // [V35 tmp27] - ; GC ptr vars +{V35}
+G_M59896_IG07: ; bbWeight=1, gcrefRegs=401C {r2 r3 r4 lr}, byrefRegs=0000 {}, byref
str r1, [sp+0x04] // [V17 tmp9] str r3, [sp+0x24] // [V05 arg5]
- ;; size=6 bbWeight=1 PerfScore 3.00 -G_M59896_IG08: ; bbWeight=1, gcVars=00001000 {V35}, gcrefRegs=4004 {r2 lr}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0 r3]
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M59896_IG08: ; bbWeight=1, gcrefRegs=4014 {r2 r4 lr}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r3]
movs r0, 80 strb r0, [r2+0x0A] adds r0, r2, 4 @@ -139,16 +137,15 @@ G_M59896_IG08: ; bbWeight=1, gcVars=00001000 {V35}, gcrefRegs=4004 {r2 lr cmp r1, 0 bne SHORT G_M59896_IG12 ;; size=26 bbWeight=1 PerfScore 10.00
-G_M59896_IG09: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
+G_M59896_IG09: ; bbWeight=1, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref
add r0, r2, 12 ; byrRegs +[r0]
- ldr r1, [sp] // [V35 tmp27]
+ mov r1, r4
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V35}
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1]
+ ; gcrRegs -[r1 r4]
; byrRegs -[r0] add r0, r2, 24 ; byrRegs +[r0] @@ -187,25 +184,23 @@ G_M59896_IG10: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 3.00 G_M59896_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000E {r1 r2 r3}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r1-r3]
- ldr r0, [sp+0x28] // [V33 tmp25] - ; gcrRegs +[r0] - mov lr, 1
+ ldr r4, [sp+0x28] // [V33 tmp25] + ; gcrRegs +[r4] + movs r0, 1
str r3, [sp+0x24] // [V05 arg5]
- str r0, [sp] // [V35 tmp27] - ; GC ptr vars +{V35} - str lr, [sp+0x04] // [V17 tmp9]
+ str r0, [sp+0x04] // [V17 tmp9]
mov lr, r1 ; gcrRegs +[lr] b SHORT G_M59896_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00 -G_M59896_IG12: ; bbWeight=0, gcVars=00001000 {V35}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 r3 lr]
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M59896_IG12: ; bbWeight=0, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1 r3 lr]
movs r1, 1 strh r1, [r2+0x08] b SHORT G_M59896_IG09 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 14, PerfScore 139.28, instruction count 87, allocated bytes for code 238 (MethodHash=8f681607) for method Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
+; Total bytes of code 222, prolog size 14, PerfScore 138.28, instruction count 85, allocated bytes for code 222 (MethodHash=8f681607) for method Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
; ============================================================ Unwind Info: @@ -217,7 +212,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 119 (0x00077) Actual length = 238 (0x0000ee)
+ Function Length : 111 (0x0006f) Actual length = 222 (0x0000de)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-6.45%) : 25326.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)

@@ -17,13 +17,13 @@ ; V07 tmp2 [V07,T09] ( 4, 2 ) ref -> lr "field V03.Cert (fldOffset=0x0)" P-INDEP ; V08 tmp3 [V08,T10] ( 4, 2 ) ref -> [sp+0x00] "field V03.Key (fldOffset=0x4)" P-INDEP ; V09 tmp4 [V09,T05] ( 3, 3 ) byref -> r3 single-def "BlockOp address local"
-; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r0 "index expr"
+; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r4 "index expr"
; V11 tmp6 [V11,T06] ( 3, 3 ) byref -> r3 single-def "BlockOp address local" ;* V12 tmp7 [V12,T13] ( 0, 0 ) int -> zero-ref "index expr" ; V13 tmp8 [V13,T15] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V14 cse0 [V14,T11] ( 3, 1.50) byref -> r0 "CSE - moderate" ; V15 cse1 [V15,T12] ( 3, 1.50) byref -> r0 "CSE - moderate"
-; V16 cse2 [V16,T04] ( 3, 2.50) int -> r0 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 2.50) int -> r4 "CSE - aggressive"
; V17 cse3 [V17,T08] ( 3, 3 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -42,57 +42,57 @@ G_M3164_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byr ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M3164_IG11
- subs r0, r0, 1 - mov r3, r0
+ subs r4, r0, 1 + mov r3, r4
cmp r3, 0 blt SHORT G_M3164_IG06 cmp r2, 0 beq SHORT G_M3164_IG05
- ldr lr, [r2+0x04] - cmp lr, r3
+ ldr r0, [r2+0x04] + cmp r0, r3
ble SHORT G_M3164_IG05
- ;; size=28 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 13.00
G_M3164_IG03: ; bbWeight=3.96, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG03
- ;; size=26 bbWeight=3.96 PerfScore 35.64 -G_M3164_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz - ; gcrRegs -[lr]
+ ;; size=18 bbWeight=3.96 PerfScore 35.64 +G_M3164_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz + ; gcrRegs -[r0]
b SHORT G_M3164_IG06
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3164_IG05: ; bbWeight=0.04, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ldr lr, [r2+0x04] - cmp r3, lr
+ ldr r0, [r2+0x04] + cmp r3, r0
bhs SHORT G_M3164_IG10
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG05
- ;; size=34 bbWeight=0.04 PerfScore 0.48
+ ;; size=24 bbWeight=0.04 PerfScore 0.48
G_M3164_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[lr] - ldr r3, [r2+0x04] - cmp r0, r3
+ ; gcrRegs -[r0] + ldr r0, [r2+0x04] + cmp r4, r0
bhs SHORT G_M3164_IG10
- lsls r0, r0, 3
+ lsls r0, r4, 3
adds r0, 8 adds r0, r2, r0 ; byrRegs +[r0] @@ -228,7 +228,7 @@ G_M3164_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 10, PerfScore 80.12, instruction count 116, allocated bytes for code 310 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
+; Total bytes of code 290, prolog size 10, PerfScore 79.62, instruction count 116, allocated bytes for code 290 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +240,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 310 (0x000136)
+ Function Length : 145 (0x00091) Actual length = 290 (0x000122)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+42.11%) : 97492.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo1[System.__Canon]):this (Tier1)

@@ -9,22 +9,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 3, 2 ) struct (16) [sp+0x0C] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 2 ) struct (16) [sp+0x14] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V04 rat0 [V04,T02] ( 2, 0 ) int -> r0 "Spilling to split statement for tree"
;* V05 rat1 [V05,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V06 rat2 [V06,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 rat2 [V06,T03] ( 2, 0 ) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M44880_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2,r3}
- push {r3,r4,lr}
+ push {r4,lr} + sub sp, 12 + str r0, [sp+0x04]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=10 bbWeight=1 PerfScore 5.00
G_M44880_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] ; gcrRegs +[r0] @@ -33,14 +35,20 @@ G_M44880_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=6 bbWeight=1 PerfScore 3.00 G_M44880_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r0]
- pop {r3,r4,lr}
+ add sp, 12 + pop {r4,lr}
add sp, 12 bx lr
- ;; size=8 bbWeight=1 PerfScore 3.00
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M44880_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r4] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x48] + cmp r0, 0
mov r0, r4 ; gcrRegs +[r0]
- ldr r1, [sp+0x10]
+ ldr r1, [sp+0x18]
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -49,9 +57,9 @@ G_M44880_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr ; gcrRegs -[r0-r1] ; gcr arg pop 0 b SHORT G_M44880_IG03
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 9.00, instruction count 16, allocated bytes for code 38 (MethodHash=282050af) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
+; Total bytes of code 54, prolog size 8, PerfScore 12.00, instruction count 24, allocated bytes for code 54 (MethodHash=282050af) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info: @@ -63,21 +71,22 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 38 (0x000026)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- ED 18 pop {r3,r4,lr} ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16 + D4 pop {r4,lr} ; opsize 16
EC 0E pop {r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A0 18 pop {r3,r4,lr} ; opsize 32
+ 03 add sp, sp, #12 ; opsize 16 + A0 10 pop {r4,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16 FF end FF end
- FF end

+20 (+50.00%) : 73597.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (Tier1)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r0 single-def "V02.[000..004)" -;* V09 cse0 [V09,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r3 single-def "V02.[000..004)" +; V09 cse0 [V09,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V10 rat0 [V10,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V11 rat1 [V11,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -36,19 +36,31 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M20412_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x18] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ldr r3, [sp+0x18] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x10]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M20412_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -56,7 +68,7 @@ G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+54.55%) : 29620.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [sp+0x04] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> [sp+0x00] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
; V01 loc0 [V01,T02] ( 3, 6 ) ref -> r3 ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03,T00] ( 5, 17 ) int -> r1 @@ -19,31 +19,37 @@ ;* V08 cse0 [V08,T09] ( 0, 0 ) int -> zero-ref "CSE - aggressive" ; V09 cse1 [V09,T03] ( 3, 6 ) int -> lr "CSE - aggressive" ; V10 cse2 [V10,T05] ( 2, 5 ) byref -> r2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V11 rat0 [V11,T06] ( 2, 4 ) int -> lr "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T04] ( 2, 4 ) int -> lr "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r2,r3,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ str r0, [r11-0x04] + ;; size=12 bbWeight=1 PerfScore 3.00
G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] movs r3, 0
- str r0, [sp+0x04] - ; GC ptr vars +{V00}
ldr r2, [r0+0x1C] ; gcrRegs +[r2] movs r1, 0
+ str r0, [sp] + ; GC ptr vars +{V00} + ldr lr, [r0] + ldr lr, [lr+0x24] + ldr lr, [lr] + ldr lr, [lr+0x10] + cmp lr, 0
ldr lr, [r2+0x04] cmp lr, 0 ble SHORT G_M3722_IG04 adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2]
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M3722_IG03: ; bbWeight=4, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref, isz ; gcrRegs -[r0] lsls r3, r1, 2 @@ -62,7 +68,7 @@ G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 44 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 12, PerfScore 38.00, instruction count 23, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +80,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

benchmarks.run_tiered.linux.arm.checked.mch

-20 (-6.45%) : 13085.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)

@@ -17,13 +17,13 @@ ; V07 tmp2 [V07,T09] ( 4, 2 ) ref -> lr "field V03.Cert (fldOffset=0x0)" P-INDEP ; V08 tmp3 [V08,T10] ( 4, 2 ) ref -> [sp+0x00] "field V03.Key (fldOffset=0x4)" P-INDEP ; V09 tmp4 [V09,T05] ( 3, 3 ) byref -> r3 single-def "BlockOp address local"
-; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r0 "index expr"
+; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r4 "index expr"
; V11 tmp6 [V11,T06] ( 3, 3 ) byref -> r3 single-def "BlockOp address local" ;* V12 tmp7 [V12,T13] ( 0, 0 ) int -> zero-ref "index expr" ; V13 tmp8 [V13,T15] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V14 cse0 [V14,T11] ( 3, 1.50) byref -> r0 "CSE - moderate" ; V15 cse1 [V15,T12] ( 3, 1.50) byref -> r0 "CSE - moderate"
-; V16 cse2 [V16,T04] ( 3, 2.50) int -> r0 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 2.50) int -> r4 "CSE - aggressive"
; V17 cse3 [V17,T08] ( 3, 3 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -42,57 +42,57 @@ G_M3164_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byr ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M3164_IG11
- subs r0, r0, 1 - mov r3, r0
+ subs r4, r0, 1 + mov r3, r4
cmp r3, 0 blt SHORT G_M3164_IG06 cmp r2, 0 beq SHORT G_M3164_IG05
- ldr lr, [r2+0x04] - cmp lr, r3
+ ldr r0, [r2+0x04] + cmp r0, r3
ble SHORT G_M3164_IG05
- ;; size=28 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 13.00
G_M3164_IG03: ; bbWeight=3.96, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG03
- ;; size=26 bbWeight=3.96 PerfScore 35.64 -G_M3164_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz - ; gcrRegs -[lr]
+ ;; size=18 bbWeight=3.96 PerfScore 35.64 +G_M3164_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz + ; gcrRegs -[r0]
b SHORT G_M3164_IG06
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3164_IG05: ; bbWeight=0.04, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ldr lr, [r2+0x04] - cmp r3, lr
+ ldr r0, [r2+0x04] + cmp r3, r0
bhs SHORT G_M3164_IG10
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG05
- ;; size=34 bbWeight=0.04 PerfScore 0.48
+ ;; size=24 bbWeight=0.04 PerfScore 0.48
G_M3164_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[lr] - ldr r3, [r2+0x04] - cmp r0, r3
+ ; gcrRegs -[r0] + ldr r0, [r2+0x04] + cmp r4, r0
bhs SHORT G_M3164_IG10
- lsls r0, r0, 3
+ lsls r0, r4, 3
adds r0, 8 adds r0, r2, r0 ; byrRegs +[r0] @@ -228,7 +228,7 @@ G_M3164_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 10, PerfScore 80.12, instruction count 116, allocated bytes for code 310 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
+; Total bytes of code 290, prolog size 10, PerfScore 79.62, instruction count 116, allocated bytes for code 290 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +240,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 310 (0x000136)
+ Function Length : 145 (0x00091) Actual length = 290 (0x000122)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-30 (-5.77%) : 10372.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int

@@ -15,15 +15,15 @@ ; V04 loc0 [V04,T14] ( 4, 3 ) int -> [sp+0x04] spill-single-def ; V05 loc1 [V05,T13] ( 8, 4 ) int -> r8 ; V06 loc2 [V06,T07] ( 13, 8.68) ref -> r9 class-hnd single-def <int[]>
-; V07 loc3 [V07,T10] ( 4, 5 ) int -> r0
+; V07 loc3 [V07,T10] ( 4, 5 ) int -> r10
; V08 loc4 [V08,T19] ( 3, 1.50) ref -> r4 class-hnd single-def <int[]> ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V10 loc6 [V10,T04] ( 6, 18.50) int -> r1
+; V10 loc6 [V10,T04] ( 6, 18.50) int -> r3
;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V12 loc8 [V12,T03] ( 6, 20 ) int -> [sp+0x00] spill-single-def
+; V12 loc8 [V12,T03] ( 6, 20 ) int -> r0
; V13 loc9 [V13,T02] ( 7, 32 ) int -> r12
-; V14 loc10 [V14,T00] ( 12, 74.16) int -> r5 -; V15 loc11 [V15,T01] ( 5, 34 ) byref -> r10
+; V14 loc10 [V14,T00] ( 12, 74.16) int -> r2 +; V15 loc11 [V15,T01] ( 5, 34 ) byref -> r1
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V17 tmp1 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V18 tmp2 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" @@ -39,9 +39,9 @@ ; V28 tmp12 [V28,T17] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ; V29 tmp13 [V29,T18] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ;* V30 cse0 [V30,T22] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V31 cse1 [V31,T05] ( 3, 16.50) byref -> r3 hoist "CSE - aggressive"
+; V31 cse1 [V31,T05] ( 3, 16.50) byref -> lr hoist "CSE - aggressive"
; V32 cse2 [V32,T08] ( 4, 6.50) int -> r7 "CSE - aggressive"
-; V33 cse3 [V33,T12] ( 2, 4.50) byref -> r2 hoist "CSE - moderate"
+; V33 cse3 [V33,T12] ( 2, 4.50) byref -> r5 hoist "CSE - moderate"
; ; Lcl frame size = 12 @@ -65,7 +65,7 @@ G_M57321_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // CORINFO_HELP_DIV ; gcr arg pop 0 cmp r0, 5
- bgt G_M57321_IG19
+ bgt G_M57321_IG17
;; size=28 bbWeight=1 PerfScore 11.00 G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz movs r0, 5 @@ -73,7 +73,7 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b movw r0, 0xd1ff movt r0, 0xd1ff cmp r8, r0
- bgt G_M57321_IG19
+ bgt G_M57321_IG17
movw r0, 0xd1ff movt r0, 0xd1ff movs r1, 27 @@ -97,7 +97,7 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b cmp r9, 0 bne SHORT G_M57321_IG04 cmp r8, 0
- bne G_M57321_IG24
+ bne G_M57321_IG22
movs r0, 0 ; gcrRegs -[r0] movs r1, 0 @@ -107,7 +107,7 @@ G_M57321_IG04: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} ldr r0, [r9+0x04] ldr r1, [r9+0x04] cmp r1, r8
- blo G_M57321_IG24
+ blo G_M57321_IG22
add r0, r9, 8 ; byrRegs +[r0] mov r1, r8 @@ -120,100 +120,92 @@ G_M57321_IG05: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0001 {r blx r3 // <unknown method> ; byrRegs -[r0] ; gcr arg pop 0
- movs r0, 0 - movs r1, 0
+ mov r10, 0 + movs r3, 0
cmp r7, 0
- ble SHORT G_M57321_IG17 - add r2, r5, 8 - ; byrRegs +[r2] - add r3, r9, 8 - ; byrRegs +[r3] - ;; size=32 bbWeight=0.50 PerfScore 5.50 -G_M57321_IG06: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz
+ ble SHORT G_M57321_IG15 + adds r5, 8
; gcrRegs -[r5]
- lsl lr, r1, 2 - ldr lr, [r2+lr] - ; gcrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs -[lr] - sub lr, lr, r4 - mov r12, 5 - mul lr, lr, r12 - str lr, [sp] - add r12, lr, 5 - mov r5, lr - cmp lr, r12 - bge SHORT G_M57321_IG16 - ;; size=38 bbWeight=4 PerfScore 44.00 -G_M57321_IG07: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz
+ ; byrRegs +[r5] + add lr, r9, 8 + ; byrRegs +[lr] + ;; size=32 bbWeight=0.50 PerfScore 5.50 +G_M57321_IG06: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + lsls r0, r3, 2 + ldr r0, [r5+r0] + ; gcrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs -[r0] + subs r0, r0, r4 + movs r1, 5 + mul r0, r0, r1 + add r12, r0, 5 + mov r2, r0 + cmp r0, r12 + bge SHORT G_M57321_IG14 + ;; size=24 bbWeight=4 PerfScore 40.00 +G_M57321_IG07: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz
cmp r9, 0 beq SHORT G_M57321_IG10
- orrs r10, lr, r12 - cmp r10, 0
+ orrs r1, r0, r12 + cmp r1, 0
blt SHORT G_M57321_IG10
- ldr r10, [r9+0x04] - cmp r10, r12
+ ldr r1, [r9+0x04] + cmp r1, r12
blt SHORT G_M57321_IG10
- ;; size=24 bbWeight=2 PerfScore 16.00 -G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - lsl r10, r5, 2 - add r10, r3 - ; byrRegs +[r10] - ldr r6, [r10]
+ ;; size=22 bbWeight=2 PerfScore 16.00 +G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + lsls r1, r2, 2 + add r1, lr + ; byrRegs +[r1] + ldr r6, [r1]
cmp r6, 0
- blt SHORT G_M57321_IG14 - adds r5, r5, 1 - cmp r5, r12
+ blt SHORT G_M57321_IG12 + adds r2, r2, 1 + cmp r2, r12
blt SHORT G_M57321_IG08
- ;; size=20 bbWeight=15.84 PerfScore 126.72 -G_M57321_IG09: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - b SHORT G_M57321_IG16 - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M57321_IG10: ; bbWeight=0.02, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref - ldr r10, [r9+0x04]
+ ;; size=16 bbWeight=15.84 PerfScore 126.72 +G_M57321_IG09: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ; byrRegs -[r1] + b SHORT G_M57321_IG14 + ;; size=2 bbWeight=4 PerfScore 4.00 +G_M57321_IG10: ; bbWeight=0.02, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref + ldr r1, [r9+0x04]
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M57321_IG11: ; bbWeight=0.16, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ldr r10, [r9+0x04] - cmp r5, r10 - bhs SHORT G_M57321_IG23 - lsl r10, r5, 2 - add r10, r3 - ; byrRegs +[r10] - ldr lr, [r10] - cmp lr, 0 - blt SHORT G_M57321_IG13 - adds r5, r5, 1 - cmp r5, r12
+G_M57321_IG11: ; bbWeight=0.16, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ldr r1, [r9+0x04] + cmp r2, r1 + bhs SHORT G_M57321_IG21 + lsls r1, r2, 2 + add r1, lr + ; byrRegs +[r1] + ldr r6, [r1] + cmp r6, 0 + blt SHORT G_M57321_IG12 + adds r2, r2, 1 + cmp r2, r12
blt SHORT G_M57321_IG11
- ;; size=30 bbWeight=0.16 PerfScore 1.76 -G_M57321_IG12: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - b SHORT G_M57321_IG16
+ b SHORT G_M57321_IG14 + ;; size=26 bbWeight=0.16 PerfScore 1.92 +G_M57321_IG12: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4022 {r1 r5 lr}, byref, isz + cmp r2, r0 + bne SHORT G_M57321_IG13 + add r10, r10, 1 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M57321_IG13: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=4022 {r1 r5 lr}, byref + str r3, [r1]
;; size=2 bbWeight=2 PerfScore 2.00
-G_M57321_IG13: ; bbWeight=0.08, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref - ; byrRegs +[r10] - ldr lr, [sp] // [V12 loc8] - ;; size=4 bbWeight=0.08 PerfScore 0.08 -G_M57321_IG14: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref, isz - cmp r5, lr - bne SHORT G_M57321_IG15 - adds r0, r0, 1 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M57321_IG15: ; bbWeight=2, gcrefRegs=0200 {r9}, byrefRegs=040C {r2 r3 r10}, byref - str r1, [r10] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M57321_IG16: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=000C {r2 r3}, byref, isz - ; byrRegs -[r10] - cmp r5, r12 - beq SHORT G_M57321_IG18 - adds r1, r1, 1 - cmp r7, r1
+G_M57321_IG14: ; bbWeight=4, gcrefRegs=0200 {r9}, byrefRegs=4020 {r5 lr}, byref, isz + ; byrRegs -[r1] + cmp r2, r12 + beq SHORT G_M57321_IG16 + adds r3, r3, 1 + cmp r7, r3
bgt SHORT G_M57321_IG06 ;; size=10 bbWeight=4 PerfScore 20.00
-G_M57321_IG17: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r2-r3] - vmov.i2f s8, r0
+G_M57321_IG15: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r5 lr] + vmov.i2f s8, r10
vcvt.i2d d4, s8 ldr r6, [sp+0x04] // [V04 loc0] vmov.i2f s10, r6 @@ -226,9 +218,9 @@ G_M57321_IG17: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, b vmov.i2d d5, r0, r1 vcmp d4, d5 vmrs APSR, FPSCR
- bhs SHORT G_M57321_IG21
+ bhs SHORT G_M57321_IG19
;; size=52 bbWeight=0.50 PerfScore 7.00 ...

-12 (-4.62%) : 59283.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (Tier0-FullOpts)

@@ -10,18 +10,18 @@ ; V00 this [V00,T06] ( 3, 3 ) ref -> r0 this class-hnd single-def <Benchstone.BenchI.XposMatrix> ; V01 loc0 [V01,T07] ( 7, 4.58) ref -> r0 class-hnd single-def <int[][]> ;* V02 loc1 [V02,T11] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc2 [V03,T03] ( 12, 19.04) int -> r1 -; V04 loc3 [V04,T00] ( 16, 68.32) int -> r2
+; V03 loc2 [V03,T03] ( 12, 19.04) int -> r4 +; V04 loc3 [V04,T00] ( 16, 68.32) int -> r1
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T01] ( 8, 64.64) ref -> registers "arr expr" ; V07 tmp2 [V07,T05] ( 3, 6 ) ref -> r1 single-def "arr expr" ; V08 tmp3 [V08,T10] ( 3, 3 ) ref -> r0 single-def "arr expr"
-; V09 cse0 [V09,T12] ( 2, 0.20) ref -> lr hoist "CSE - conservative" -; V10 cse1 [V10,T02] ( 6, 21.80) ref -> r12 hoist multi-def "CSE - aggressive" -; V11 cse2 [V11,T08] ( 7, 4.58) byref -> r4 hoist multi-def "CSE - aggressive" -; V12 cse3 [V12,T09] ( 4, 4.00) int -> lr hoist multi-def "CSE - aggressive" -; V13 cse4 [V13,T04] ( 6, 7.04) int -> r3 hoist multi-def "CSE - aggressive" -; V14 cse5 [V14,T13] ( 2, 0.08) int -> lr hoist "CSE - conservative"
+; V09 cse0 [V09,T12] ( 2, 0.20) ref -> r3 hoist "CSE - conservative" +; V10 cse1 [V10,T02] ( 6, 21.80) ref -> r2 hoist multi-def "CSE - aggressive" +; V11 cse2 [V11,T08] ( 7, 4.58) byref -> r6 hoist multi-def "CSE - aggressive" +; V12 cse3 [V12,T09] ( 4, 4.00) int -> r3 hoist multi-def "CSE - aggressive" +; V13 cse4 [V13,T04] ( 6, 7.04) int -> r5 hoist multi-def "CSE - aggressive" +; V14 cse5 [V14,T13] ( 2, 0.08) int -> r3 hoist "CSE - conservative"
; ; Lcl frame size = 4 @@ -32,119 +32,119 @@ G_M49643_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M49643_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x04]
- movs r1, 1
+ movs r4, 1
cmp r0, 0 beq SHORT G_M49643_IG11
- ldr r3, [r0+0x04] - cmp r3, 100
+ ldr r5, [r0+0x04] + cmp r5, 100
ble SHORT G_M49643_IG11
- add r4, r0, 8 - ; byrRegs +[r4]
+ add r6, r0, 8 + ; byrRegs +[r6]
;; size=18 bbWeight=1 PerfScore 8.00
-G_M49643_IG03: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - movs r2, 1 - cmp r3, r1
+G_M49643_IG03: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + movs r1, 1 + cmp r5, r4
bls SHORT G_M49643_IG07 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M49643_IG04: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - lsl lr, r1, 2 - ldr r12, [r4+lr] - ; gcrRegs +[r12] - cmp r12, 0
+G_M49643_IG04: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + lsls r3, r4, 2 + ldr r2, [r6+r3] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M49643_IG07
- ldr lr, [r12+0x04] - cmp lr, 100
+ ldr r3, [r2+0x04] + cmp r3, 100
ble SHORT G_M49643_IG07
- ;; size=24 bbWeight=1.98 PerfScore 13.86 -G_M49643_IG05: ; bbWeight=15.68, gcrefRegs=1001 {r0 r12}, byrefRegs=0010 {r4}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r5, r2, 2 - movs r6, 1 - str r6, [lr+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG05 - ;; size=20 bbWeight=15.68 PerfScore 125.45 -G_M49643_IG06: ; bbWeight=1.98, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr] - b SHORT G_M49643_IG09 - ;; size=2 bbWeight=1.98 PerfScore 1.98 -G_M49643_IG07: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref
+ ;; size=14 bbWeight=1.98 PerfScore 13.86 +G_M49643_IG05: ; bbWeight=15.68, gcrefRegs=0005 {r0 r2}, byrefRegs=0040 {r6}, byref, isz + mov r3, r2 + ; gcrRegs +[r3] + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3]
lsl lr, r1, 2
- ldr r12, [r4+lr] - ; gcrRegs +[r12] - ;; size=8 bbWeight=0.02 PerfScore 0.04 -G_M49643_IG08: ; bbWeight=0.16, gcrefRegs=1001 {r0 r12}, byrefRegs=0010 {r4}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - ldr r5, [lr+0x04] - cmp r2, r5 - bhs SHORT G_M49643_IG19 - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r5, r2, 2 - movs r6, 1 - str r6, [lr+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG08 - ;; size=28 bbWeight=0.16 PerfScore 1.74 -G_M49643_IG09: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr]
+ mov r12, 1 + str r12, [r3+lr]
adds r1, r1, 1 cmp r1, 100
+ ble SHORT G_M49643_IG05 + ;; size=22 bbWeight=15.68 PerfScore 125.45 +G_M49643_IG06: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r3] + b SHORT G_M49643_IG09 + ;; size=2 bbWeight=3.96 PerfScore 3.96 +G_M49643_IG07: ; bbWeight=0.02, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref + lsls r3, r4, 2 + ldr r2, [r6+r3] + ; gcrRegs +[r2] + ;; size=4 bbWeight=0.02 PerfScore 0.04 +G_M49643_IG08: ; bbWeight=0.16, gcrefRegs=0005 {r0 r2}, byrefRegs=0040 {r6}, byref, isz + mov r3, r2 + ; gcrRegs +[r3] + ldr lr, [r3+0x04] + cmp r1, lr + bhs SHORT G_M49643_IG19 + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3] + lsl lr, r1, 2 + mov r12, 1 + str r12, [r3+lr] + adds r1, r1, 1 + cmp r1, 100 + ble SHORT G_M49643_IG08 + ;; size=30 bbWeight=0.16 PerfScore 1.74 +G_M49643_IG09: ; bbWeight=3.96, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r3] + adds r4, r4, 1 + cmp r4, 100
ble SHORT G_M49643_IG03 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M49643_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
+G_M49643_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz
b SHORT G_M49643_IG14 ;; size=2 bbWeight=1 PerfScore 1.00 G_M49643_IG11: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r4] - movs r2, 1 - ldr r3, [r0+0x04] - add r4, r0, 8 - ; byrRegs +[r4]
+ ; byrRegs -[r6] + movs r1, 1 + ldr r5, [r0+0x04] + add r6, r0, 8 + ; byrRegs +[r6] + lsls r3, r4, 2 + cmp r4, r5 + bhs SHORT G_M49643_IG19 + ldr r3, [r6+r3] + ; gcrRegs +[r3] + ;; size=16 bbWeight=0.04 PerfScore 0.28 +G_M49643_IG12: ; bbWeight=0.16, gcrefRegs=0009 {r0 r3}, byrefRegs=0040 {r6}, byref, isz + mov r2, r3 + ; gcrRegs +[r2] + ldr lr, [r2+0x04] + cmp r1, lr + bhs SHORT G_M49643_IG19 + adds r2, 8 + ; gcrRegs -[r2] + ; byrRegs +[r2]
lsl lr, r1, 2
- cmp r1, r3 - bhs SHORT G_M49643_IG19 - ldr lr, [r4+lr] - ; gcrRegs +[lr] - ;; size=20 bbWeight=0.04 PerfScore 0.28 -G_M49643_IG12: ; bbWeight=0.16, gcrefRegs=4001 {r0 lr}, byrefRegs=0010 {r4}, byref, isz - mov r12, lr - ; gcrRegs +[r12] - ldr r5, [r12+0x04] - cmp r2, r5 - bhs SHORT G_M49643_IG19 - add r12, r12, 8 - ; gcrRegs -[r12] - ; byrRegs +[r12] - lsls r5, r2, 2 - movs r6, 1 - str r6, [r12+r5] - adds r2, r2, 1 - cmp r2, 100 - ble SHORT G_M49643_IG12 - ;; size=28 bbWeight=0.16 PerfScore 1.76 -G_M49643_IG13: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs -[lr] - ; byrRegs -[r12]
+ mov r12, 1 + str r12, [r2+lr]
adds r1, r1, 1 cmp r1, 100
+ ble SHORT G_M49643_IG12 + ;; size=30 bbWeight=0.16 PerfScore 1.76 +G_M49643_IG13: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ; gcrRegs -[r3] + ; byrRegs -[r2] + adds r4, r4, 1 + cmp r4, 100
ble SHORT G_M49643_IG11 ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, byref, isz
+G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz
movs r1, 100
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M49643_IG19
- ldr r1, [r4+0x190]
+ ldr r1, [r6+0x190]
; gcrRegs +[r1] movs r3, 100 ldr r2, [r1+0x04] @@ -157,15 +157,15 @@ G_M49643_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, by ;; size=26 bbWeight=1 PerfScore 11.00 G_M49643_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0]
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M49643_IG16: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49643_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M49643_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, gcvars, byref, isz
...

+20 (+50.00%) : 28372.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (Tier1)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r0 single-def "V02.[000..004)" -;* V09 cse0 [V09,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r3 single-def "V02.[000..004)" +; V09 cse0 [V09,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V10 rat0 [V10,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V11 rat1 [V11,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -36,19 +36,31 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M20412_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x18] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ldr r3, [sp+0x18] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x10]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M20412_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -56,7 +68,7 @@ G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+54.55%) : 23575.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 3 ) ref -> [sp+0x04] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> [sp+0x00] this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]>
; V01 loc0 [V01,T02] ( 3, 6 ) ref -> r3 ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03,T00] ( 5, 17 ) int -> r1 @@ -19,31 +19,37 @@ ;* V08 cse0 [V08,T09] ( 0, 0 ) int -> zero-ref "CSE - aggressive" ; V09 cse1 [V09,T03] ( 3, 6 ) int -> lr "CSE - aggressive" ; V10 cse2 [V10,T05] ( 2, 5 ) byref -> r2 hoist "CSE - aggressive"
-;* V11 rat0 [V11,T06] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V11 rat0 [V11,T06] ( 2, 4 ) int -> lr "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T04] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T04] ( 2, 4 ) int -> lr "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r2,r3,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ str r0, [r11-0x04] + ;; size=12 bbWeight=1 PerfScore 3.00
G_M3722_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] movs r3, 0
- str r0, [sp+0x04] - ; GC ptr vars +{V00}
ldr r2, [r0+0x1C] ; gcrRegs +[r2] movs r1, 0
+ str r0, [sp] + ; GC ptr vars +{V00} + ldr lr, [r0] + ldr lr, [lr+0x24] + ldr lr, [lr] + ldr lr, [lr+0x10] + cmp lr, 0
ldr lr, [r2+0x04] cmp lr, 0 ble SHORT G_M3722_IG04 adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2]
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M3722_IG03: ; bbWeight=4, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref, isz ; gcrRegs -[r0] lsls r3, r1, 2 @@ -62,7 +68,7 @@ G_M3722_IG05: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 44 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 68, prolog size 12, PerfScore 38.00, instruction count 23, allocated bytes for code 68 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +80,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+8 (+66.67%) : 38903.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Tier1)

@@ -15,9 +15,9 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.m_task (fldOffset=0x0)" P-INDEP
-;* V07 rat0 [V07,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V08 rat1 [V08,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -29,13 +29,17 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9200_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x20] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

coreclr_tests.run.linux.arm.checked.mch

-26 (-7.83%) : 338554.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (Tier0-FullOpts)

@@ -9,23 +9,23 @@ ; ; V00 loc0 [V00,T06] ( 7, 5.08) ref -> r4 class-hnd single-def <double[][]> ; V01 loc1 [V01,T07] ( 4, 4 ) ref -> r5 class-hnd single-def <double[][]>
-; V02 loc2 [V02,T02] ( 15, 35.04) int -> r0 -; V03 loc3 [V03,T00] ( 19, 84.32) int -> r3
+; V02 loc2 [V02,T02] ( 15, 35.04) int -> r6 +; V03 loc3 [V03,T00] ( 19, 84.32) int -> r0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> lr "arr expr"
+; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> registers "arr expr"
; V06 tmp2 [V06,T05] ( 3, 6 ) ref -> r0 single-def "arr expr" ; V07 cse0 [V07,T10] ( 2, 0.20) ref -> r1 hoist "CSE - conservative"
-; V08 cse1 [V08,T03] ( 6, 21.80) ref -> r12 hoist multi-def "CSE - aggressive" -; V09 cse2 [V09,T09] ( 5, 3.08) byref -> r2 hoist multi-def "CSE - aggressive" -; V10 cse3 [V10,T08] ( 4, 4.00) int -> lr hoist multi-def "CSE - aggressive" -; V11 cse4 [V11,T04] ( 5, 6.04) int -> r1 hoist multi-def "CSE - aggressive" -; V12 cse5 [V12,T11] ( 2, 0.08) int -> lr hoist "CSE - conservative"
+; V08 cse1 [V08,T03] ( 6, 21.80) ref -> r2 hoist multi-def "CSE - aggressive" +; V09 cse2 [V09,T09] ( 5, 3.08) byref -> r8 hoist multi-def "CSE - aggressive" +; V10 cse3 [V10,T08] ( 4, 4.00) int -> r1 hoist multi-def "CSE - aggressive" +; V11 cse4 [V11,T04] ( 5, 6.04) int -> r7 hoist multi-def "CSE - aggressive" +; V12 cse5 [V12,T11] ( 2, 0.08) int -> r1 hoist "CSE - conservative"
; ; Lcl frame size = 4 G_M31008_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr} + add r11, sp, 24
;; size=8 bbWeight=1 PerfScore 2.00 G_M31008_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movs r0, 41 @@ -49,123 +49,123 @@ G_M31008_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- movs r0, 1 - ; gcrRegs -[r0]
+ movs r6, 1
cmp r4, 0 beq SHORT G_M31008_IG11
- ldr r1, [r4+0x04] - cmp r1, 40
+ ldr r7, [r4+0x04] + cmp r7, 40
ble SHORT G_M31008_IG11
- add r2, r4, 8 - ; byrRegs +[r2]
+ add r8, r4, 8 + ; byrRegs +[r8]
;; size=52 bbWeight=1 PerfScore 21.00
-G_M31008_IG03: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - movs r3, 1 - cmp r1, r0
+G_M31008_IG03: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r0] + movs r0, 1 + cmp r7, r6
bls SHORT G_M31008_IG07 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M31008_IG04: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - lsl lr, r0, 2 - ldr r12, [r2+lr] - ; gcrRegs +[r12] - cmp r12, 0
+G_M31008_IG04: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + lsls r1, r6, 2 + ldr r2, [r8+r1] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M31008_IG07
- ldr lr, [r12+0x04] - cmp lr, 40
+ ldr r1, [r2+0x04] + cmp r1, 40
ble SHORT G_M31008_IG07
- ;; size=24 bbWeight=1.98 PerfScore 13.86 -G_M31008_IG05: ; bbWeight=15.68, gcrefRegs=1030 {r4 r5 r12}, byrefRegs=0004 {r2}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r6, r3, 3 - add lr, r6 - adds r6, r0, r3 - vmov.i2f s8, r6
+ ;; size=16 bbWeight=1.98 PerfScore 13.86 +G_M31008_IG05: ; bbWeight=15.68, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0100 {r8}, byref, isz + mov r1, r2 + ; gcrRegs +[r1] + adds r1, 8 + ; gcrRegs -[r1] + ; byrRegs +[r1] + lsls r3, r0, 3 + adds r1, r1, r3 + adds r3, r6, r0 + vmov.i2f s8, r3
vcvt.i2d d4, s8
- vstr d4, [lr] - adds r3, r3, 1 - cmp r3, 40 - ble SHORT G_M31008_IG05 - ;; size=30 bbWeight=15.68 PerfScore 172.50 -G_M31008_IG06: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr] - b SHORT G_M31008_IG09 - ;; size=2 bbWeight=1.98 PerfScore 1.98 -G_M31008_IG07: ; bbWeight=0.02, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref - lsl lr, r0, 2 - ldr r12, [r2+lr] - ; gcrRegs +[r12] - ;; size=8 bbWeight=0.02 PerfScore 0.04 -G_M31008_IG08: ; bbWeight=0.16, gcrefRegs=1030 {r4 r5 r12}, byrefRegs=0004 {r2}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - ldr r6, [lr+0x04] - cmp r3, r6 - bhs SHORT G_M31008_IG19 - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r6, r3, 3 - add lr, r6 - adds r6, r0, r3 - vmov.i2f s8, r6 - vcvt.i2d d4, s8 - vstr d4, [lr] - adds r3, r3, 1 - cmp r3, 40 - ble SHORT G_M31008_IG08 - ;; size=38 bbWeight=0.16 PerfScore 2.22 -G_M31008_IG09: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr]
+ vstr d4, [r1]
adds r0, r0, 1 cmp r0, 40
+ ble SHORT G_M31008_IG05 + ;; size=28 bbWeight=15.68 PerfScore 172.50 +G_M31008_IG06: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r1] + b SHORT G_M31008_IG09 + ;; size=2 bbWeight=3.96 PerfScore 3.96 +G_M31008_IG07: ; bbWeight=0.02, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref + lsls r1, r6, 2 + ldr r2, [r8+r1] + ; gcrRegs +[r2] + ;; size=6 bbWeight=0.02 PerfScore 0.04 +G_M31008_IG08: ; bbWeight=0.16, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0100 {r8}, byref, isz + mov r1, r2 + ; gcrRegs +[r1] + ldr r3, [r1+0x04] + cmp r0, r3 + bhs SHORT G_M31008_IG19 + adds r1, 8 + ; gcrRegs -[r1] + ; byrRegs +[r1] + lsls r3, r0, 3 + adds r1, r1, r3 + adds r3, r6, r0 + vmov.i2f s8, r3 + vcvt.i2d d4, s8 + vstr d4, [r1] + adds r0, r0, 1 + cmp r0, 40 + ble SHORT G_M31008_IG08 + ;; size=34 bbWeight=0.16 PerfScore 2.22 +G_M31008_IG09: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r1] + adds r6, r6, 1 + cmp r6, 40
ble SHORT G_M31008_IG03 ;; size=6 bbWeight=3.96 PerfScore 11.88 G_M31008_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r2]
+ ; byrRegs -[r8]
b SHORT G_M31008_IG14 ;; size=2 bbWeight=1 PerfScore 1.00 G_M31008_IG11: ; bbWeight=0.04, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- movs r3, 1 - ldr r1, [r4+0x04] - add r2, r4, 8 - ; byrRegs +[r2] - lsl lr, r0, 2 - cmp r0, r1
+ movs r0, 1 + ldr r7, [r4+0x04] + add r8, r4, 8 + ; byrRegs +[r8] + lsls r1, r6, 2 + cmp r6, r7
bhs SHORT G_M31008_IG19
- ldr r1, [r2+lr]
+ ldr r1, [r8+r1]
; gcrRegs +[r1]
- ;; size=20 bbWeight=0.04 PerfScore 0.28
+ ;; size=18 bbWeight=0.04 PerfScore 0.28
G_M31008_IG12: ; bbWeight=0.16, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r2] - mov lr, r1 - ; gcrRegs +[lr] - ldr r2, [lr+0x04] - cmp r3, r2
+ ; byrRegs -[r8] + mov r2, r1 + ; gcrRegs +[r2] + ldr r3, [r2+0x04] + cmp r0, r3
bhs SHORT G_M31008_IG19
- add r2, lr, 8
+ adds r2, 8 + ; gcrRegs -[r2]
; byrRegs +[r2]
- lsl lr, r3, 3 - ; gcrRegs -[lr] - add r2, lr - add lr, r0, r3 - vmov.i2f s8, lr
+ lsls r3, r0, 3 + adds r2, r2, r3 + adds r3, r6, r0 + vmov.i2f s8, r3
vcvt.i2d d4, s8 vstr d4, [r2]
- adds r3, r3, 1 - cmp r3, 40
+ adds r0, r0, 1 + cmp r0, 40
ble SHORT G_M31008_IG12
- ;; size=42 bbWeight=0.16 PerfScore 2.24
+ ;; size=34 bbWeight=0.16 PerfScore 2.24
G_M31008_IG13: ; bbWeight=0.04, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r1] ; byrRegs -[r2]
- adds r0, r0, 1 - cmp r0, 40
+ adds r6, r6, 1 + cmp r6, 40
ble SHORT G_M31008_IG11 ;; size=6 bbWeight=0.04 PerfScore 0.12 G_M31008_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz @@ -205,13 +205,13 @@ G_M31008_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 ...

-26 (-7.83%) : 117336.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)

@@ -9,23 +9,23 @@ ; ; V00 loc0 [V00,T06] ( 7, 5.08) ref -> r4 class-hnd single-def <double[][]> ; V01 loc1 [V01,T07] ( 4, 4 ) ref -> r5 class-hnd single-def <double[][]>
-; V02 loc2 [V02,T02] ( 15, 35.04) int -> r0 -; V03 loc3 [V03,T00] ( 19, 84.32) int -> r3
+; V02 loc2 [V02,T02] ( 15, 35.04) int -> r6 +; V03 loc3 [V03,T00] ( 19, 84.32) int -> r0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> lr "arr expr"
+; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> registers "arr expr"
; V06 tmp2 [V06,T05] ( 3, 6 ) ref -> r0 single-def "arr expr" ; V07 cse0 [V07,T10] ( 2, 0.20) ref -> r1 hoist "CSE - conservative"
-; V08 cse1 [V08,T03] ( 6, 21.80) ref -> r12 hoist multi-def "CSE - aggressive" -; V09 cse2 [V09,T09] ( 5, 3.08) byref -> r2 hoist multi-def "CSE - aggressive" -; V10 cse3 [V10,T08] ( 4, 4.00) int -> lr hoist multi-def "CSE - aggressive" -; V11 cse4 [V11,T04] ( 5, 6.04) int -> r1 hoist multi-def "CSE - aggressive" -; V12 cse5 [V12,T11] ( 2, 0.08) int -> lr hoist "CSE - conservative"
+; V08 cse1 [V08,T03] ( 6, 21.80) ref -> r2 hoist multi-def "CSE - aggressive" +; V09 cse2 [V09,T09] ( 5, 3.08) byref -> r8 hoist multi-def "CSE - aggressive" +; V10 cse3 [V10,T08] ( 4, 4.00) int -> r1 hoist multi-def "CSE - aggressive" +; V11 cse4 [V11,T04] ( 5, 6.04) int -> r7 hoist multi-def "CSE - aggressive" +; V12 cse5 [V12,T11] ( 2, 0.08) int -> r1 hoist "CSE - conservative"
; ; Lcl frame size = 4 G_M31008_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr} + add r11, sp, 24
;; size=8 bbWeight=1 PerfScore 2.00 G_M31008_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movs r0, 41 @@ -49,123 +49,123 @@ G_M31008_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- movs r0, 1 - ; gcrRegs -[r0]
+ movs r6, 1
cmp r4, 0 beq SHORT G_M31008_IG11
- ldr r1, [r4+0x04] - cmp r1, 40
+ ldr r7, [r4+0x04] + cmp r7, 40
ble SHORT G_M31008_IG11
- add r2, r4, 8 - ; byrRegs +[r2]
+ add r8, r4, 8 + ; byrRegs +[r8]
;; size=52 bbWeight=1 PerfScore 21.00
-G_M31008_IG03: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - movs r3, 1 - cmp r1, r0
+G_M31008_IG03: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r0] + movs r0, 1 + cmp r7, r6
bls SHORT G_M31008_IG07 ;; size=6 bbWeight=3.96 PerfScore 11.88
-G_M31008_IG04: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - lsl lr, r0, 2 - ldr r12, [r2+lr] - ; gcrRegs +[r12] - cmp r12, 0
+G_M31008_IG04: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + lsls r1, r6, 2 + ldr r2, [r8+r1] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M31008_IG07
- ldr lr, [r12+0x04] - cmp lr, 40
+ ldr r1, [r2+0x04] + cmp r1, 40
ble SHORT G_M31008_IG07
- ;; size=24 bbWeight=1.98 PerfScore 13.86 -G_M31008_IG05: ; bbWeight=15.68, gcrefRegs=1030 {r4 r5 r12}, byrefRegs=0004 {r2}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r6, r3, 3 - add lr, r6 - adds r6, r0, r3 - vmov.i2f s8, r6
+ ;; size=16 bbWeight=1.98 PerfScore 13.86 +G_M31008_IG05: ; bbWeight=15.68, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0100 {r8}, byref, isz + mov r1, r2 + ; gcrRegs +[r1] + adds r1, 8 + ; gcrRegs -[r1] + ; byrRegs +[r1] + lsls r3, r0, 3 + adds r1, r1, r3 + adds r3, r6, r0 + vmov.i2f s8, r3
vcvt.i2d d4, s8
- vstr d4, [lr] - adds r3, r3, 1 - cmp r3, 40 - ble SHORT G_M31008_IG05 - ;; size=30 bbWeight=15.68 PerfScore 172.50 -G_M31008_IG06: ; bbWeight=1.98, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr] - b SHORT G_M31008_IG09 - ;; size=2 bbWeight=1.98 PerfScore 1.98 -G_M31008_IG07: ; bbWeight=0.02, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref - lsl lr, r0, 2 - ldr r12, [r2+lr] - ; gcrRegs +[r12] - ;; size=8 bbWeight=0.02 PerfScore 0.04 -G_M31008_IG08: ; bbWeight=0.16, gcrefRegs=1030 {r4 r5 r12}, byrefRegs=0004 {r2}, byref, isz - mov lr, r12 - ; gcrRegs +[lr] - ldr r6, [lr+0x04] - cmp r3, r6 - bhs SHORT G_M31008_IG19 - add lr, lr, 8 - ; gcrRegs -[lr] - ; byrRegs +[lr] - lsls r6, r3, 3 - add lr, r6 - adds r6, r0, r3 - vmov.i2f s8, r6 - vcvt.i2d d4, s8 - vstr d4, [lr] - adds r3, r3, 1 - cmp r3, 40 - ble SHORT G_M31008_IG08 - ;; size=38 bbWeight=0.16 PerfScore 2.22 -G_M31008_IG09: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r2}, byref, isz - ; gcrRegs -[r12] - ; byrRegs -[lr]
+ vstr d4, [r1]
adds r0, r0, 1 cmp r0, 40
+ ble SHORT G_M31008_IG05 + ;; size=28 bbWeight=15.68 PerfScore 172.50 +G_M31008_IG06: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r1] + b SHORT G_M31008_IG09 + ;; size=2 bbWeight=3.96 PerfScore 3.96 +G_M31008_IG07: ; bbWeight=0.02, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref + lsls r1, r6, 2 + ldr r2, [r8+r1] + ; gcrRegs +[r2] + ;; size=6 bbWeight=0.02 PerfScore 0.04 +G_M31008_IG08: ; bbWeight=0.16, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0100 {r8}, byref, isz + mov r1, r2 + ; gcrRegs +[r1] + ldr r3, [r1+0x04] + cmp r0, r3 + bhs SHORT G_M31008_IG19 + adds r1, 8 + ; gcrRegs -[r1] + ; byrRegs +[r1] + lsls r3, r0, 3 + adds r1, r1, r3 + adds r3, r6, r0 + vmov.i2f s8, r3 + vcvt.i2d d4, s8 + vstr d4, [r1] + adds r0, r0, 1 + cmp r0, 40 + ble SHORT G_M31008_IG08 + ;; size=34 bbWeight=0.16 PerfScore 2.22 +G_M31008_IG09: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + ; gcrRegs -[r2] + ; byrRegs -[r1] + adds r6, r6, 1 + cmp r6, 40
ble SHORT G_M31008_IG03 ;; size=6 bbWeight=3.96 PerfScore 11.88 G_M31008_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r2]
+ ; byrRegs -[r8]
b SHORT G_M31008_IG14 ;; size=2 bbWeight=1 PerfScore 1.00 G_M31008_IG11: ; bbWeight=0.04, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- movs r3, 1 - ldr r1, [r4+0x04] - add r2, r4, 8 - ; byrRegs +[r2] - lsl lr, r0, 2 - cmp r0, r1
+ movs r0, 1 + ldr r7, [r4+0x04] + add r8, r4, 8 + ; byrRegs +[r8] + lsls r1, r6, 2 + cmp r6, r7
bhs SHORT G_M31008_IG19
- ldr r1, [r2+lr]
+ ldr r1, [r8+r1]
; gcrRegs +[r1]
- ;; size=20 bbWeight=0.04 PerfScore 0.28
+ ;; size=18 bbWeight=0.04 PerfScore 0.28
G_M31008_IG12: ; bbWeight=0.16, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r2] - mov lr, r1 - ; gcrRegs +[lr] - ldr r2, [lr+0x04] - cmp r3, r2
+ ; byrRegs -[r8] + mov r2, r1 + ; gcrRegs +[r2] + ldr r3, [r2+0x04] + cmp r0, r3
bhs SHORT G_M31008_IG19
- add r2, lr, 8
+ adds r2, 8 + ; gcrRegs -[r2]
; byrRegs +[r2]
- lsl lr, r3, 3 - ; gcrRegs -[lr] - add r2, lr - add lr, r0, r3 - vmov.i2f s8, lr
+ lsls r3, r0, 3 + adds r2, r2, r3 + adds r3, r6, r0 + vmov.i2f s8, r3
vcvt.i2d d4, s8 vstr d4, [r2]
- adds r3, r3, 1 - cmp r3, 40
+ adds r0, r0, 1 + cmp r0, 40
ble SHORT G_M31008_IG12
- ;; size=42 bbWeight=0.16 PerfScore 2.24
+ ;; size=34 bbWeight=0.16 PerfScore 2.24
G_M31008_IG13: ; bbWeight=0.04, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r1] ; byrRegs -[r2]
- adds r0, r0, 1 - cmp r0, 40
+ adds r6, r6, 1 + cmp r6, 40
ble SHORT G_M31008_IG11 ;; size=6 bbWeight=0.04 PerfScore 0.12 G_M31008_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz @@ -205,13 +205,13 @@ G_M31008_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 ...

-44 (-6.96%) : 325140.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -10,15 +10,15 @@ ; Final local variable assignments ; ; V00 this [V00,T12] ( 8, 6.50) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8,457.30) ref -> r4 class-hnd single-def <System.__Canon[]> -; V02 loc0 [V02,T06] ( 17, 72.79) ref -> r6 class-hnd <System.__Canon[]> -; V03 loc1 [V03,T08] ( 6, 62.13) int -> r7
+; V01 arg1 [V01,T04] ( 8, 63.55) ref -> r4 class-hnd single-def <System.__Canon[]> +; V02 loc0 [V02,T03] ( 17, 72.79) ref -> r6 class-hnd <System.__Canon[]> +; V03 loc1 [V03,T07] ( 5, 62.13) int -> r7
; V04 loc2 [V04,T11] ( 9, 15.83) int -> r8
-; V05 loc3 [V05,T02] ( 6,458.93) int -> r9 -; V06 loc4 [V06,T07] ( 9, 62.91) ref -> r10 class-hnd <System.__Canon> -; V07 loc5 [V07,T03] ( 3,454.07) ubyte -> [sp+0x10] -; V08 loc6 [V08,T04] ( 14,236.01) int -> [sp+0x0C] -; V09 loc7 [V09,T00] ( 10,678 ) ref -> [sp+0x00] class-hnd <System.__Canon>
+; V05 loc3 [V05,T05] ( 6, 65.18) int -> r9 +; V06 loc4 [V06,T06] ( 9, 62.91) ref -> r10 class-hnd <System.__Canon> +; V07 loc5 [V07,T08] ( 3, 60.32) ubyte -> [sp+0x10] +; V08 loc6 [V08,T01] ( 11,236.01) int -> [sp+0x0C] +; V09 loc7 [V09,T00] ( 10,284.25) ref -> [sp+0x00] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.47) int -> [sp+0x08] ; V11 loc9 [V11 ] ( 3, 0.70) ref -> [sp+0x04] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -27,19 +27,19 @@ ;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V19 tmp7 [V19,T19] ( 4, 0.65) int -> r2 "Inline return value spill temp" -; V20 tmp8 [V20,T15] ( 3, 1.03) int -> r2 "Inlining Arg"
+;* V18 tmp6 [V18,T02] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V19 tmp7 [V19,T19] ( 4, 0.65) int -> r3 "Inline return value spill temp" +; V20 tmp8 [V20,T15] ( 3, 1.03) int -> r3 "Inlining Arg"
; V21 tmp9 [V21,T21] ( 3, 0.47) int -> registers "Inline return value spill temp"
-; V22 tmp10 [V22,T16] ( 3, 1.03) int -> lr "Inlining Arg"
+; V22 tmp10 [V22,T16] ( 3, 1.03) int -> r2 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ; V25 tmp13 [V25,T18] ( 2, 0.93) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T09] ( 6, 59.41) int -> r1 multi-def "CSE - aggressive"
+; V26 cse0 [V26,T09] ( 6, 59.41) int -> registers multi-def "CSE - aggressive"
; V27 cse1 [V27,T10] ( 3, 24.40) ref -> r1 "CSE - aggressive" ; V28 rat0 [V28,T14] ( 3, 1.03) int -> r0 "Spilling to split statement for tree" ; V29 rat1 [V29,T17] ( 3, 0.93) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 1.31) int -> r3 "fgMakeTemp is creating a new local variable"
+; V30 rat2 [V30,T13] ( 3, 1.31) int -> r12 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 28 @@ -59,7 +59,7 @@ G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by ldr r6, [r5+0x04] ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M8298_IG11
+ beq SHORT G_M8298_IG10
;; size=6 bbWeight=1 PerfScore 3.00 G_M8298_IG03: ; bbWeight=0.80, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r7, [r6+0x04] @@ -67,7 +67,7 @@ G_M8298_IG03: ; bbWeight=0.80, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 mov r9, 0 ldr r0, [r4+0x04] cmp r0, 0
- ble G_M8298_IG21
+ ble G_M8298_IG25
;; size=18 bbWeight=0.80 PerfScore 4.80 G_M8298_IG04: ; bbWeight=2.03, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz add r0, r4, 8 @@ -78,57 +78,53 @@ G_M8298_IG04: ; bbWeight=2.03, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 movs r3, 0 mov lr, 0 cmp r7, 0
- ble SHORT G_M8298_IG10
+ ble SHORT G_M8298_IG18
;; size=22 bbWeight=2.03 PerfScore 14.23 G_M8298_IG05: ; bbWeight=1.02, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r0] cmp r6, 0
- beq G_M8298_IG31
+ beq SHORT G_M8298_IG15
cmp r10, 0
- beq G_M8298_IG31
+ beq SHORT G_M8298_IG15
ldr r0, [r10]
- movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1 - bne G_M8298_IG31
+ movw r12, 0xd1ff + movt r12, 0xd1ff + cmp r0, r12 + bne SHORT G_M8298_IG15
ldr r0, [r6+0x04] cmp r0, r7
- blt G_M8298_IG31 - ;; size=40 bbWeight=1.02 PerfScore 12.20
+ blt SHORT G_M8298_IG15 + ;; size=32 bbWeight=1.02 PerfScore 12.20
G_M8298_IG06: ; bbWeight=57.17, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz add r0, r6, 8 ; byrRegs +[r0]
- lsl r2, lr, 2 - ldr r12, [r0+r2] - ; gcrRegs +[r12] - cmp r12, 0 - beq SHORT G_M8298_IG09 - ;; size=18 bbWeight=57.17 PerfScore 285.86 -G_M8298_IG07: ; bbWeight=55.69, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
+ lsl r1, lr, 2 + ldr r2, [r0+r1] + ; gcrRegs +[r2] + cmp r2, 0 + beq SHORT G_M8298_IG18 + ;; size=14 bbWeight=57.17 PerfScore 285.86 +G_M8298_IG07: ; bbWeight=55.69, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [r2] + cmp r0, r12 + bne SHORT G_M8298_IG13 + ldr r0, [r2+0x28] + ldr r1, [r10+0x28]
cmp r0, r1
- bne SHORT G_M8298_IG23 - ldr r0, [r12+0x28] - ldr r2, [r10+0x28] - cmp r0, r2 - bne SHORT G_M8298_IG23 - ;; size=20 bbWeight=55.69 PerfScore 389.81 -G_M8298_IG08: ; bbWeight=450, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz - str lr, [sp+0x0C]
+ beq SHORT G_M8298_IG09 + ;; size=16 bbWeight=55.69 PerfScore 389.81 +G_M8298_IG08: ; bbWeight=57.70, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r2]
b SHORT G_M8298_IG13
- ;; size=6 bbWeight=450 PerfScore 900.00 -G_M8298_IG09: ; bbWeight=28.59, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12]
+ ;; size=2 bbWeight=57.70 PerfScore 57.70 +G_M8298_IG09: ; bbWeight=27.84, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r2]
str lr, [sp+0x0C]
- b SHORT G_M8298_IG14 - ;; size=6 bbWeight=28.59 PerfScore 57.17 -G_M8298_IG10: ; bbWeight=1.02, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - str lr, [sp+0x0C] - b SHORT G_M8298_IG14 - ;; size=6 bbWeight=1.02 PerfScore 2.03 -G_M8298_IG11: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6 r10]
+ b SHORT G_M8298_IG12 + ;; size=6 bbWeight=27.84 PerfScore 55.69 +G_M8298_IG10: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref + ; gcrRegs -[r2 r6 r10]
adds r0, r5, 4 ; byrRegs +[r0] mov r1, r4 @@ -139,43 +135,92 @@ G_M8298_IG11: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, ; gcrRegs -[r1 r4] ; byrRegs -[r0] ;; size=14 bbWeight=0.20 PerfScore 1.00
-G_M8298_IG12: ; bbWeight=0.20, epilog, nogc, extend
+G_M8298_IG11: ; bbWeight=0.20, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.20 PerfScore 0.40
-G_M8298_IG13: ; bbWeight=450, gcVars=00000000 {}, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r4 r6 r10 r12]
+G_M8298_IG12: ; bbWeight=56.25, gcVars=00000000 {}, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r2 r4 r6 r10]
mov r0, r4 ; gcrRegs +[r0] mov r1, r9
- mov r2, r12 - ; gcrRegs +[r2]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r0 r2]
; gcr arg pop 0 movs r3, 1
- ;; size=18 bbWeight=450 PerfScore 3150.00 -G_M8298_IG14: ; bbWeight=2.03, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - cmp r3, 0 - bne SHORT G_M8298_IG20 - cmp r8, 0 - bne SHORT G_M8298_IG16 - ;; size=10 bbWeight=2.03 PerfScore 8.13 -G_M8298_IG15: ; bbWeight=0.80, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref
+ mov r2, r3 + mov r3, r2
ldr lr, [sp+0x0C] // [V08 loc6]
+ b SHORT G_M8298_IG18 + ;; size=26 bbWeight=56.25 PerfScore 562.50 +G_M8298_IG13: ; bbWeight=57.70, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + add lr, lr, 1 + cmp lr, r7 + blt SHORT G_M8298_IG06 + ;; size=8 bbWeight=57.70 PerfScore 173.10 +G_M8298_IG14: ; bbWeight=2.03, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + b SHORT G_M8298_IG18 + ;; size=2 bbWeight=2.03 PerfScore 2.03 +G_M8298_IG15: ; bbWeight=0.58, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ldr r2, [r6+0x04] + cmp lr, r2 + bhs G_M8298_IG41 + add r12, r6, 8 + ; byrRegs +[r12] + lsl r0, lr, 2 + ldr r2, [r12+r0] + ; gcrRegs +[r2] + mov r12, r2 + ; gcrRegs +[r12] + ; byrRegs -[r12] + cmp r12, 0 + beq SHORT G_M8298_IG18 + ;; size=28 bbWeight=0.58 PerfScore 5.20 +G_M8298_IG16: ; bbWeight=0.56, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r2] + ldr r0, [r10] + movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1 + bne G_M8298_IG42 + ldr r0, [r12] + cmp r0, r1 + bne SHORT G_M8298_IG17 + ldr r0, [r12+0x28] + ldr r1, [r10+0x28] + cmp r0, r1 + mov r2, r12 + ; gcrRegs +[r2] + beq SHORT G_M8298_IG27 + ;; size=40 bbWeight=0.56 PerfScore 7.31 +G_M8298_IG17: ; bbWeight=0.58, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r2 r12] + add lr, lr, 1 + str lr, [sp+0x0C] // [V08 loc6] + cmp lr, r7 + ldr lr, [sp+0x0C] // [V08 loc6] + blt SHORT G_M8298_IG15 + ;; size=16 bbWeight=0.58 PerfScore 2.91 +G_M8298_IG18: ; bbWeight=2.03, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + cmp r3, 0 + bne SHORT G_M8298_IG24 + cmp r8, 0 + bne SHORT G_M8298_IG20 + ;; size=10 bbWeight=2.03 PerfScore 8.13
...

+12 (+66.67%) : 227983.dasm - HelperILDllTests:CallMethodFromGenericTypeSystem.__Canon:System.String (FullOpts)

@@ -8,28 +8,32 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 3, 3 ) int -> r0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <DerivedTypeGenericMethodActuallyOnBase`1[System.__Canon]> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat1 [V05,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat1 [V05,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M49861_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r11,lr} + add r11, sp, 8 + str r0, [r11-0x04] + ;; size=12 bbWeight=1 PerfScore 3.00
G_M49861_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r0, [r0+0x20] + ldr r0, [r0+0x08] + cmp r0, 0
movw r0, 0xd1ff movt r0, 0xd1ff
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M49861_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ pop {r2,r3,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 18, prolog size 6, PerfScore 5.00, instruction count 5, allocated bytes for code 18 (MethodHash=d9953d3a) for method HelperILDllTests:CallMethodFromGenericType[System.__Canon]():System.String (FullOpts)
+; Total bytes of code 30, prolog size 12, PerfScore 9.00, instruction count 9, allocated bytes for code 30 (MethodHash=d9953d3a) for method HelperILDllTests:CallMethodFromGenericType[System.__Canon]():System.String (FullOpts)
; ============================================================ Unwind Info: @@ -41,11 +45,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 18 (0x000012)
+ Function Length : 15 (0x0000f) Actual length = 30 (0x00001e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A8 0C pop {r2,r3,r11,lr} ; opsize 32
FF end FF end

+12 (+100.00%) : 104084.dasm - Program:TestSystem.__Canon:int (FullOpts)

@@ -8,27 +8,31 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 3, 3 ) int -> r0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <MyInterfaceImpl`1[System.__Canon]> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat1 [V05,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat1 [V05,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M46698_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r2,r3,r11,lr} + add r11, sp, 8 + str r0, [r11-0x04] + ;; size=12 bbWeight=1 PerfScore 3.00
G_M46698_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r0, [r0+0x20] + ldr r0, [r0+0x08] + cmp r0, 0
movs r0, 100
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 4.00
G_M46698_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ pop {r2,r3,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 12, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 12 (MethodHash=498b4995) for method Program:Test[System.__Canon]():int (FullOpts)
+; Total bytes of code 24, prolog size 12, PerfScore 8.00, instruction count 8, allocated bytes for code 24 (MethodHash=498b4995) for method Program:Test[System.__Canon]():int (FullOpts)
; ============================================================ Unwind Info: @@ -40,11 +44,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A8 0C pop {r2,r3,r11,lr} ; opsize 32
FF end FF end

+46 (+766.67%) : 171074.dasm - ILGEN0x2dda4eb5:Method0xa084659a():ushort (FullOpts)

@@ -9,7 +9,7 @@ ; ;* V00 loc0 [V00,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02,T00] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V02 tmp1 [V02,T00] ( 2, 4 ) ref -> r0 single-def "arr expr"
; ; Lcl frame size = 4 @@ -17,13 +17,29 @@ G_M5817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r3,lr} ;; size=2 bbWeight=1 PerfScore 1.00 G_M5817_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff + movs r1, 41 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_DIRECT + ; gcrRegs +[r0] + ; gcr arg pop 0 + vldr d4, [r0+0x40] + movs r0, 0 + ; gcrRegs -[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + vmov.i2d d5, r0, r3 + vcmp d4, d5 + vmrs APSR, FPSCR
movs r0, 100
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=48 bbWeight=1 PerfScore 14.00
G_M5817_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 6, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 6 (MethodHash=cc10e946) for method ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 16.00, instruction count 16, allocated bytes for code 52 (MethodHash=cc10e946) for method ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
; ============================================================ Unwind Info: @@ -35,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 3 (0x00003) Actual length = 6 (0x000006)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries.crossgen2.linux.arm.checked.mch

-22 (-5.95%) : 3800.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)

@@ -19,12 +19,12 @@ ; V08 tmp3 [V08,T09] ( 4, 2 ) ref -> lr "field V03.Cert (fldOffset=0x0)" P-INDEP ; V09 tmp4 [V09,T10] ( 4, 2 ) ref -> [sp+0x00] "field V03.Key (fldOffset=0x4)" P-INDEP ; V10 tmp5 [V10,T05] ( 3, 3 ) byref -> r3 single-def "BlockOp address local"
-; V11 tmp6 [V11,T07] ( 3, 3 ) int -> r0 "index expr"
+; V11 tmp6 [V11,T07] ( 3, 3 ) int -> r4 "index expr"
; V12 tmp7 [V12,T06] ( 3, 3 ) byref -> r3 single-def "BlockOp address local" ;* V13 tmp8 [V13,T13] ( 0, 0 ) int -> zero-ref "index expr" ; V14 cse0 [V14,T11] ( 3, 1.50) byref -> r0 "CSE - moderate" ; V15 cse1 [V15,T12] ( 3, 1.50) byref -> r0 "CSE - moderate"
-; V16 cse2 [V16,T04] ( 3, 2.50) int -> r0 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 2.50) int -> r4 "CSE - aggressive"
; V17 cse3 [V17,T08] ( 3, 3 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -50,58 +50,58 @@ G_M3164_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byr ldr r0, [r0+r3] ; gcrRegs -[r0] cmp r0, 0
- ble G_M3164_IG11 - subs r0, r0, 1 - mov r3, r0
+ ble SHORT G_M3164_IG11 + subs r4, r0, 1 + mov r3, r4
cmp r3, 0 blt SHORT G_M3164_IG06 cmp r2, 0 beq SHORT G_M3164_IG05
- ldr lr, [r2+0x04] - cmp lr, r3
+ ldr r0, [r2+0x04] + cmp r0, r3
ble SHORT G_M3164_IG05
- ;; size=54 bbWeight=1 PerfScore 21.00
+ ;; size=50 bbWeight=1 PerfScore 21.00
G_M3164_IG03: ; bbWeight=3.96, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG03
- ;; size=26 bbWeight=3.96 PerfScore 35.64 -G_M3164_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz - ; gcrRegs -[lr]
+ ;; size=18 bbWeight=3.96 PerfScore 35.64 +G_M3164_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz + ; gcrRegs -[r0]
b SHORT G_M3164_IG06
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3164_IG05: ; bbWeight=0.04, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ldr lr, [r2+0x04] - cmp r3, lr
+ ldr r0, [r2+0x04] + cmp r3, r0
bhs SHORT G_M3164_IG10
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG05
- ;; size=34 bbWeight=0.04 PerfScore 0.48
+ ;; size=24 bbWeight=0.04 PerfScore 0.48
G_M3164_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[lr] - ldr r3, [r2+0x04] - cmp r0, r3
+ ; gcrRegs -[r0] + ldr r0, [r2+0x04] + cmp r4, r0
bhs SHORT G_M3164_IG10
- lsls r0, r0, 3
+ lsls r0, r4, 3
adds r0, 8 adds r0, r2, r0 ; byrRegs +[r0] @@ -253,7 +253,7 @@ G_M3164_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=68 bbWeight=0 PerfScore 0.00
-; Total bytes of code 370, prolog size 10, PerfScore 92.12, instruction count 139, allocated bytes for code 370 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
+; Total bytes of code 348, prolog size 10, PerfScore 91.62, instruction count 139, allocated bytes for code 348 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
; ============================================================ Unwind Info: @@ -265,7 +265,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 185 (0x000b9) Actual length = 370 (0x000172)
+ Function Length : 174 (0x000ae) Actual length = 348 (0x00015c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-4.68%) : 161105.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

@@ -12,32 +12,33 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder> ; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Reflection.MethodBase> ; V02 arg2 [V02,T12] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Reflection.MethodBase>
-; V03 loc0 [V03,T15] ( 3, 2 ) ubyte -> r0 -; V04 loc1 [V04,T08] ( 13, 6.66) ref -> r6 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T16] ( 3, 2 ) ubyte -> r0 +; V04 loc1 [V04,T10] ( 9, 5.58) ref -> r6 class-hnd single-def <<unknown class>>
; V05 loc2 [V05,T06] ( 13, 9.62) ref -> r5 class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T00] ( 36, 52.20) int -> r7 -; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [sp+0x04] class-hnd <<unknown class>> -; V08 loc5 [V08,T02] ( 10, 16 ) ref -> r10 class-hnd <<unknown class>>
+; V06 loc3 [V06,T00] ( 31, 55.66) int -> r7 +; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [sp+0x0C] class-hnd <<unknown class>> +; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [sp+0x08] class-hnd <<unknown class>>
; V09 loc6 [V09,T05] ( 8, 9 ) int -> r8 single-def
-;* V10 loc7 [V10,T19] ( 0, 0 ) int -> zero-ref single-def -; V11 loc8 [V11,T09] ( 6, 6 ) int -> r5 single-def -; V12 loc9 [V12,T10] ( 6, 6 ) int -> r6 single-def
+;* V10 loc7 [V10,T20] ( 0, 0 ) int -> zero-ref single-def +; V11 loc8 [V11,T13] ( 3, 5 ) int -> registers single-def +; V12 loc9 [V12,T09] ( 6, 6 ) int -> r8 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T13] ( 3, 5 ) int -> r7 "non-inline candidate call" -; V15 tmp2 [V15,T17] ( 2, 2 ) int -> r7 "non-inline candidate call" -; V16 tmp3 [V16,T18] ( 2, 2 ) int -> r7 "non-inline candidate call" -; V17 tmp4 [V17,T16] ( 3, 2 ) int -> r8 "Inline return value spill temp" -; V18 tmp5 [V18,T14] ( 3, 5 ) int -> r0 "Inlining Arg" -; V19 cse0 [V19,T07] ( 8, 9.58) byref -> r9 hoist multi-def "CSE - aggressive" -; V20 cse1 [V20,T04] ( 3, 11.88) int -> r10 "CSE - aggressive" -; V21 cse2 [V21,T03] ( 8, 12.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V14 tmp1 [V14,T14] ( 3, 5 ) int -> r7 "non-inline candidate call" +; V15 tmp2 [V15,T18] ( 2, 2 ) int -> r7 "non-inline candidate call" +; V16 tmp3 [V16,T19] ( 2, 2 ) int -> r7 "non-inline candidate call" +; V17 tmp4 [V17,T17] ( 3, 2 ) int -> r8 "Inline return value spill temp" +; V18 tmp5 [V18,T15] ( 3, 5 ) int -> r0 "Inlining Arg" +; V19 cse0 [V19,T07] ( 6, 9.54) byref -> [sp+0x04] hoist multi-def "CSE - aggressive" +; V20 cse1 [V20,T08] ( 8, 7.58) int -> r9 multi-def "CSE - aggressive" +; V21 cse2 [V21,T04] ( 3, 11.88) int -> r9 "CSE - aggressive" +; V22 cse3 [V22,T03] ( 8, 12.54) byref -> registers hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M40132_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 12 - add r11, sp, 40
+ sub sp, 20 + add r11, sp, 48
mov r5, r2 ; gcrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 @@ -98,18 +99,18 @@ G_M40132_IG05: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r7, 0 cmp r8, 0 blt G_M40132_IG17
- ldr r0, [r6+0x04] - cmp r0, r8
+ ldr r9, [r6+0x04] + cmp r9, r8
ble SHORT G_M40132_IG12 ldr r0, [r5+0x04] cmp r0, r8 ble SHORT G_M40132_IG12
- add r9, r6, 8 - ; byrRegs +[r9] - ;; size=26 bbWeight=1 PerfScore 10.00 -G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - lsl r10, r7, 2 - ldr r0, [r9+r10]
+ add r10, r6, 8 + ; byrRegs +[r10] + ;; size=28 bbWeight=1 PerfScore 10.00 +G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, byref, isz + lsl r9, r7, 2 + ldr r0, [r10+r9]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -119,7 +120,7 @@ G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r blx r3 // <unknown method> mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x04]
+ str r3, [sp+0x0C]
; GC ptr vars +{V07} mov r0, r3 movw r4, LOW RELOC 0xD1FFAB1E @@ -132,8 +133,8 @@ G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r cmp r0, 0 beq SHORT G_M40132_IG08 ;; size=50 bbWeight=3.96 PerfScore 75.24
-G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref - ldr r0, [sp+0x04] // [V07 loc4]
+G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, byref + ldr r0, [sp+0x0C] // [V07 loc4]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -141,14 +142,14 @@ G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r ldr r3, [r4] ; GC ptr vars -{V07} blx r3 // <unknown method>
- str r0, [sp+0x04] // [V07 loc4]
+ str r0, [sp+0x0C] // [V07 loc4]
; GC ptr vars +{V07} ;; size=18 bbWeight=1.98 PerfScore 13.86
-G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
+G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, gcvars, byref, isz
; gcrRegs -[r0] add r2, r5, 8 ; byrRegs +[r2]
- ldr r0, [r2+r10]
+ ldr r0, [r2+r9]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -157,9 +158,9 @@ G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 ldr r2, [r4] ; byrRegs -[r2] blx r2 // <unknown method>
- mov r10, r0 - ; gcrRegs +[r10] - mov r0, r10
+ mov r9, r0 + ; gcrRegs +[r9] + mov r0, r9
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -170,43 +171,43 @@ G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 cmp r0, 0 beq SHORT G_M40132_IG10 ;; size=48 bbWeight=3.96 PerfScore 71.28
-G_M40132_IG09: ; bbWeight=1.98, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=0200 {r9}, byref - mov r0, r10
+G_M40132_IG09: ; bbWeight=1.98, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0400 {r10}, byref + mov r0, r9
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r10] - mov r10, r0 - ; gcrRegs +[r10]
+ ; gcrRegs -[r9] + mov r9, r0 + ; gcrRegs +[r9]
;; size=18 bbWeight=1.98 PerfScore 13.86
-G_M40132_IG10: ; bbWeight=3.96, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=0200 {r9}, byref, isz
+G_M40132_IG10: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0400 {r10}, byref, isz
; gcrRegs -[r0]
- ldr r3, [sp+0x04] // [V07 loc4]
+ ldr r3, [sp+0x0C] // [V07 loc4]
; gcrRegs +[r3]
- cmp r3, r10
+ cmp r3, r9
bne SHORT G_M40132_IG18 adds r7, r7, 1 bvs G_M40132_IG29 cmp r7, r8 ble SHORT G_M40132_IG06 ;; size=16 bbWeight=3.96 PerfScore 27.72
-G_M40132_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r3 r10] - ; byrRegs -[r9]
+G_M40132_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r3 r9] + ; byrRegs -[r10]
; GC ptr vars -{V07} b SHORT G_M40132_IG17
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r6+0x04] - cmp r7, r0
+ ldr r9, [r6+0x04] + cmp r7, r9
bhs G_M40132_IG30
- add r9, r6, 8 - ; byrRegs +[r9]
+ add r10, r6, 8 + ; byrRegs +[r10]
lsls r0, r7, 2
- ldr r0, [r9+r0]
+ ldr r0, [r10+r0]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -214,7 +215,7 @@ G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ldr r2, [r0] ldr r3, [r4] blx r3 // <unknown method>
- ; byrRegs -[r9]
+ ; byrRegs -[r10]
mov r9, r0 ; gcrRegs +[r9] mov r0, r9 @@ -227,7 +228,7 @@ G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ; gcrRegs -[r0] cmp r0, 0 beq SHORT G_M40132_IG14
- ;; size=58 bbWeight=0.04 PerfScore 0.88
+ ;; size=60 bbWeight=0.04 PerfScore 0.88
G_M40132_IG13: ; bbWeight=0.02, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref mov r0, r9 ; gcrRegs +[r0] @@ -260,48 +261,53 @@ G_M40132_IG14: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 ldr r3, [r4] blx r3 // <unknown method> ; byrRegs -[r10]
- mov r10, r0 - ; gcrRegs +[r10] - mov r0, r10
+ mov r3, r0 + ; gcrRegs +[r3] + str r3, [sp+0x08] // [V08 loc5] + ; GC ptr vars +{V08} + mov r0, r3
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r2, [r0] - ldr r3, [r4] - blx r3 // <unknown method> - ; gcrRegs -[r0]
+ ldr r1, [r0] + ldr r2, [r4] + blx r2 // <unknown method> + ; gcrRegs -[r0 r3]
cmp r0, 0 beq SHORT G_M40132_IG16
- ;; size=60 bbWeight=0.04 PerfScore 0.92 -G_M40132_IG15: ; bbWeight=0.02, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref - mov r0, r10
+ ;; size=62 bbWeight=0.04 PerfScore 0.96 +G_M40132_IG15: ; bbWeight=0.02, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref + ldr r0, [sp+0x08] // [V08 loc5]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4]
+ ; GC ptr vars -{V08}
blx r3 // <unknown method>
- ; gcrRegs -[r10] - mov r10, r0
...

-32 (-3.21%) : 59521.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)

@@ -47,7 +47,6 @@ ; V35 tmp18 [V35,T00] ( 6, 95.04) ref -> r12 "arr expr" ; V36 cse0 [V36,T02] ( 3, 47.04) int -> r1 "CSE - aggressive" ; V37 cse1 [V37,T04] ( 5, 39.20) int -> [sp+0x24] multi-def "CSE - aggressive"
-; TEMP_01 int -> [r11-0x68]
; ; Lcl frame size = 84 @@ -92,7 +91,7 @@ G_M15813_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r str r3, [sp+0x48] // [V07 loc2] movs r2, 0 cmp r4, 0
- ble G_M15813_IG25
+ ble G_M15813_IG23
ldr r9, [sp+0x78] // [V04 arg4] ; gcrRegs +[r9] ldr r0, [r10+0x04] @@ -112,7 +111,7 @@ G_M15813_IG03: ; bbWeight=3.96, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs= ldr r0, [r0+r1] ldr r1, [r0+0x04] cmp r2, r1
- bhs G_M15813_IG26
+ bhs G_M15813_IG24
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -179,23 +178,26 @@ G_M15813_IG04: ; bbWeight=3.96, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs= mov r4, r1 ldr r3, [sp+0x40] // [V09 loc4] cmp r3, 0
- ble SHORT G_M15813_IG11
+ ble SHORT G_M15813_IG12
;; size=8 bbWeight=3.96 PerfScore 15.84 G_M15813_IG05: ; bbWeight=1.98, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz ldr r2, [sp+0x20] // [V10 loc5] ; gcrRegs +[r2] ldr r1, [r2+0x04] cmp r1, r3
- blt SHORT G_M15813_IG10
+ blt SHORT G_M15813_IG11
ldr lr, [sp+0x1C] // [V11 loc6] ; gcrRegs +[lr] ldr r1, [lr+0x04] cmp r1, r3
+ blt SHORT G_M15813_IG16 + ;; size=20 bbWeight=1.98 PerfScore 15.84 +G_M15813_IG06: ; bbWeight=0.99, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref + ; gcrRegs -[r2 lr]
str r9, [sp+0x78] // [V04 arg4]
- blt SHORT G_M15813_IG15 - ;; size=24 bbWeight=1.98 PerfScore 17.82 -G_M15813_IG06: ; bbWeight=15.68, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz - ; gcrRegs -[r2 r9 lr]
+ ;; size=4 bbWeight=0.99 PerfScore 0.99 +G_M15813_IG07: ; bbWeight=15.68, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz + ; gcrRegs -[r9]
ldr r12, [r5+0x04] ; gcrRegs +[r12] ldr r0, [sp+0x48] // [V07 loc2] @@ -203,14 +205,14 @@ G_M15813_IG06: ; bbWeight=15.68, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=01 adds r1, r0, r4 ldr r9, [r12+0x04] cmp r1, r9
- bhs G_M15813_IG26
+ bhs G_M15813_IG24
mov r9, 12 mul r1, r1, r9 adds r1, 8 add r1, r12 ; byrRegs +[r1] ;; size=32 bbWeight=15.68 PerfScore 172.50
-G_M15813_IG07: ; bbWeight=15.68, nogc, extend
+G_M15813_IG08: ; bbWeight=15.68, nogc, extend
ldr r12, [r1] ; gcrRegs -[r12] str r12, [sp+0x28] // [V16 loc11] @@ -219,7 +221,7 @@ G_M15813_IG07: ; bbWeight=15.68, nogc, extend ldr r12, [r1+0x08] str r12, [sp+0x30] // [V16 loc11+0x08] ;; size=24 bbWeight=15.68 PerfScore 94.09
-G_M15813_IG08: ; bbWeight=15.68, isz, extend
+G_M15813_IG09: ; bbWeight=15.68, isz, extend
movw r1, LOW RELOC 0xD1FFAB1E ; byrRegs -[r1] movt r1, HIGH RELOC 0xD1FFAB1E @@ -232,9 +234,9 @@ G_M15813_IG08: ; bbWeight=15.68, isz, extend ldr r12, [r4] blx r12 // <unknown method> cmp r0, 0
- beq SHORT G_M15813_IG12
+ beq SHORT G_M15813_IG13
;; size=34 bbWeight=15.68 PerfScore 188.18
-G_M15813_IG09: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M15813_IG10: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
add r1, sp, 60 // [V12 loc7] str r1, [sp] // [V17 OutArgs] ldr r1, [sp+0x28] // [V27 tmp10] @@ -266,17 +268,16 @@ G_M15813_IG09: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1 r4] ; byrRegs -[r0]
- b SHORT G_M15813_IG13
+ b SHORT G_M15813_IG14
;; size=64 bbWeight=7.84 PerfScore 180.34
-G_M15813_IG10: ; bbWeight=0.99, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M15813_IG11: ; bbWeight=0.99, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
; gcrRegs +[r9]
- str r9, [sp+0x78] // [V04 arg4] - b SHORT G_M15813_IG15 - ;; size=6 bbWeight=0.99 PerfScore 1.98 -G_M15813_IG11: ; bbWeight=1.98, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+ b SHORT G_M15813_IG16 + ;; size=2 bbWeight=0.99 PerfScore 0.99 +G_M15813_IG12: ; bbWeight=1.98, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
b SHORT G_M15813_IG22 ;; size=2 bbWeight=1.98 PerfScore 1.98
-G_M15813_IG12: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref
+G_M15813_IG13: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref
; gcrRegs -[r9] ldr r3, [sp+0x20] // [V10 loc5] ; gcrRegs +[r3] @@ -311,51 +312,48 @@ G_M15813_IG12: ; bbWeight=7.84, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 add r12, pc ldr r12, [r12] blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] ;; size=64 bbWeight=7.84 PerfScore 172.50
-G_M15813_IG13: ; bbWeight=15.68, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M15813_IG14: ; bbWeight=15.68, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz + ; gcrRegs -[r4]
add r9, r9, 1 ldr r3, [sp+0x40] // [V09 loc4] cmp r9, r3 mov r4, r9
- blt SHORT G_M15813_IG06
+ blt SHORT G_M15813_IG07
;; size=12 bbWeight=15.68 PerfScore 78.41
-G_M15813_IG14: ; bbWeight=1.98, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M15813_IG15: ; bbWeight=3.96, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r9, [sp+0x78] // [V04 arg4] ; gcrRegs +[r9] b SHORT G_M15813_IG22
- ;; size=6 bbWeight=1.98 PerfScore 3.96 -G_M15813_IG15: ; bbWeight=0.16, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz - ; gcrRegs -[r9]
+ ;; size=6 bbWeight=3.96 PerfScore 7.92 +G_M15813_IG16: ; bbWeight=0.16, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r12, [r5+0x04] ; gcrRegs +[r12]
- ldr r0, [sp+0x48] // [V07 loc2] - adds r1, r0, r4 - str r1, [sp+0x08] // [TEMP_01] - ldr r1, [r12+0x04] - ldr r9, [sp+0x08] // [TEMP_01] - cmp r9, r1 - bhs G_M15813_IG26 - str r0, [sp+0x48] // [V07 loc2]
+ ldr lr, [sp+0x48] // [V07 loc2] + add r1, lr, r4 + ldr r0, [r12+0x04] + cmp r1, r0 + bhs G_M15813_IG24 + str lr, [sp+0x48] // [V07 loc2]
str r4, [sp+0x34] // [V15 loc10]
- adds r1, r0, r4 - mov r9, 12 - mul r1, r1, r9
+ add r1, lr, r4 + movs r0, 12 + mul r1, r1, r0
adds r1, 8 add r1, r12 ; byrRegs +[r1]
- ;; size=42 bbWeight=0.16 PerfScore 2.38 -G_M15813_IG16: ; bbWeight=0.16, nogc, extend - ldr r12, [r1] - ; gcrRegs -[r12] - str r12, [sp+0x28] // [V16 loc11] - ldr r12, [r1+0x04] - str r12, [sp+0x2C] // [V16 loc11+0x04] - ldr r12, [r1+0x08] - str r12, [sp+0x30] // [V16 loc11+0x08] - ;; size=24 bbWeight=0.16 PerfScore 0.95 -G_M15813_IG17: ; bbWeight=0.16, isz, extend
+ ;; size=42 bbWeight=0.16 PerfScore 2.06 +G_M15813_IG17: ; bbWeight=0.16, nogc, extend + ldr r0, [r1] + str r0, [sp+0x28] // [V16 loc11] + ldr r0, [r1+0x04] + str r0, [sp+0x2C] // [V16 loc11+0x04] + ldr r0, [r1+0x08] + str r0, [sp+0x30] // [V16 loc11+0x08] + ;; size=12 bbWeight=0.16 PerfScore 0.95 +G_M15813_IG18: ; bbWeight=0.16, isz, extend
movw r1, LOW RELOC 0xD1FFAB1E ; byrRegs -[r1] movt r1, HIGH RELOC 0xD1FFAB1E @@ -366,11 +364,12 @@ G_M15813_IG17: ; bbWeight=0.16, isz, extend movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r12, [r4]
+ ; gcrRegs -[r12]
blx r12 // <unknown method> cmp r0, 0
- beq SHORT G_M15813_IG19
+ beq SHORT G_M15813_IG20
;; size=34 bbWeight=0.16 PerfScore 1.90
-G_M15813_IG18: ; bbWeight=0.08, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M15813_IG19: ; bbWeight=0.08, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
add r1, sp, 60 // [V12 loc7] str r1, [sp] // [V17 OutArgs] ldr r1, [sp+0x28] // [V27 tmp10] @@ -391,12 +390,12 @@ G_M15813_IG18: ; bbWeight=0.08, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 ; gcrRegs +[r4] ldr r0, [r4+0x04] ; gcrRegs -[r0]
- ldr r9, [sp+0x34] // [V15 loc10] - cmp r9, r0 - bhs G_M15813_IG26
+ ldr r2, [sp+0x34] // [V15 loc10] + cmp r2, r0 + bhs G_M15813_IG24
add r0, r4, 8 ; byrRegs +[r0]
- lsl r3, r9, 2
+ lsls r3, r2, 2
adds r0, r0, r3 movw r12, LOW RELOC 0xD1FFAB1E movt r12, HIGH RELOC 0xD1FFAB1E @@ -405,18 +404,19 @@ G_M15813_IG18: ; bbWeight=0.08, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1 r4] ; byrRegs -[r0]
- b SHORT G_M15813_IG20 - ;; size=72 bbWeight=0.08 PerfScore 2.06 -G_M15813_IG19: ; bbWeight=0.08, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
+ b SHORT G_M15813_IG21 + ;; size=68 bbWeight=0.08 PerfScore 2.06 +G_M15813_IG20: ; bbWeight=0.08, gcrefRegs=06C0 {r6 r7 r9 r10}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r3, [sp+0x20] // [V10 loc5] ; gcrRegs +[r3] ldr r0, [r3+0x04]
- ldr r9, [sp+0x34] // [V15 loc10] - cmp r9, r0 - bhs G_M15813_IG26
+ ldr r2, [sp+0x34] // [V15 loc10] + cmp r2, r0 + bhs G_M15813_IG24
...

+20 (+5.35%) : 21267.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)

@@ -20,13 +20,13 @@ ; V08 loc1 [V08,T10] ( 8, 3.08) ref -> r2 class-hnd exact single-def <System.Object[]> ; V09 loc2 [V09,T00] ( 11, 16.58) int -> r4 ; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> r3 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> lr class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T16] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo> ;* V14 tmp4 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V15 tmp5 [V15,T17] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V16 cse0 [V16,T03] ( 8, 7 ) int -> r10 "CSE - aggressive" -; V17 cse1 [V17,T09] ( 4, 4.54) byref -> [sp+0x0C] hoist multi-def "CSE - aggressive"
+; V16 cse0 [V16,T03] ( 8, 7 ) int -> [sp+0x0C] spill-single-def "CSE - aggressive" +; V17 cse1 [V17,T09] ( 4, 4.54) byref -> [sp+0x08] hoist multi-def "CSE - aggressive"
; V18 cse2 [V18,T04] ( 6, 5.54) byref -> registers hoist multi-def "CSE - aggressive" ; V19 cse3 [V19,T02] ( 3, 11.88) int -> r0 "CSE - aggressive" ; @@ -76,17 +76,17 @@ G_M50642_IG05: ; bbWeight=1, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 mov r5, r0 ; gcrRegs +[r5] cmp r5, 0
- beq SHORT G_M50642_IG15
+ beq G_M50642_IG16
cmp r9, 0 bne SHORT G_M50642_IG08
- ;; size=12 bbWeight=1 PerfScore 5.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M50642_IG06: ; bbWeight=0.50, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[r5 r9] str r7, [sp] ; gcr arg write
- ldr r5, [sp+0x40] // [V06 arg6] - ; gcrRegs +[r5] - str r5, [sp+0x04] // [V10 OutArgs+0x04]
+ ldr r10, [sp+0x40] // [V06 arg6] + ; gcrRegs +[r10] + str r10, [sp+0x04] // [V10 OutArgs+0x04]
; gcr arg write mov r1, r6 ; gcrRegs +[r1] @@ -98,17 +98,18 @@ G_M50642_IG06: ; bbWeight=0.50, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 add r4, pc ldr lr, [r4] blx lr // System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this
- ; gcrRegs -[r0-r1 r3 r5-r7]
+ ; gcrRegs -[r0-r1 r3 r6-r7 r10]
; gcr arg pop 0
- ;; size=28 bbWeight=0.50 PerfScore 5.50
+ ;; size=32 bbWeight=0.50 PerfScore 5.50
G_M50642_IG07: ; bbWeight=0.50, epilog, nogc, extend add sp, 20 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00 G_M50642_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r5-r7 r9]
- ldr r10, [r9+0x04] - add r0, r10, 1
+ ldr r4, [r9+0x04] + str r4, [sp+0x0C] // [V16 cse0] + adds r0, r4, 1
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -119,27 +120,28 @@ G_M50642_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=02E0 {r5 r6 mov r2, r0 ; gcrRegs +[r2] movs r4, 0
- cmp r10, 0
+ ldr r3, [sp+0x0C] // [V16 cse0] + cmp r3, 0
ble SHORT G_M50642_IG12 ldr r1, [r2+0x04]
- cmp r1, r10
+ cmp r1, r3
blt SHORT G_M50642_IG11 add r1, r9, 8 ; byrRegs +[r1] add r9, r2, 8 ; gcrRegs -[r9] ; byrRegs +[r9]
- ;; size=46 bbWeight=0.50 PerfScore 8.00
+ ;; size=46 bbWeight=0.50 PerfScore 9.00
G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0202 {r1 r9}, byref, isz ; gcrRegs -[r0] lsls r0, r4, 2
- str r1, [sp+0x0C] // [V17 cse1]
+ str r1, [sp+0x08] // [V17 cse1]
; GC ptr vars +{V17}
- ldr r3, [r1+r0] - ; gcrRegs +[r3]
+ ldr lr, [r1+r0] + ; gcrRegs +[lr]
add r0, r9 ; byrRegs +[r0]
- mov r1, r3
+ mov r1, lr
; gcrRegs +[r1] ; byrRegs -[r1] movw r12, LOW RELOC 0xD1FFAB1E @@ -147,36 +149,38 @@ G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0 add r12, pc ldr r12, [r12] blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1 lr]
; byrRegs -[r0] adds r4, r4, 1
- cmp r10, r4 - ldr r1, [sp+0x0C] // [V17 cse1]
+ ldr r3, [sp+0x0C] // [V16 cse0] + cmp r3, r4 + ldr r1, [sp+0x08] // [V17 cse1]
; byrRegs +[r1] bgt SHORT G_M50642_IG09
- ;; size=34 bbWeight=3.96 PerfScore 55.44
+ ;; size=38 bbWeight=3.96 PerfScore 59.40
G_M50642_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; byrRegs -[r1 r9] ; GC ptr vars -{V17}
+ ldr r3, [sp+0x0C] // [V16 cse0]
b SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=02E4 {r2 r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r9] add r1, r9, 8 ; byrRegs +[r1] lsls r0, r4, 2
- ldr r3, [r1+r0] - ; gcrRegs +[r3]
+ ldr lr, [r1+r0] + ; gcrRegs +[lr]
ldr r1, [r2+0x04] ; byrRegs -[r1] cmp r4, r1
- bhs SHORT G_M50642_IG14
+ bhs SHORT G_M50642_IG15
add r1, r2, 8 ; byrRegs +[r1] lsls r0, r4, 2 adds r0, r1, r0 ; byrRegs +[r0]
- mov r1, r3
+ mov r1, lr
; gcrRegs +[r1] ; byrRegs -[r1] movw r12, LOW RELOC 0xD1FFAB1E @@ -184,18 +188,19 @@ G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=02E4 {r2 r5 r6 r7 r9}, byrefReg add r12, pc ldr r12, [r12] blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r3]
+ ; gcrRegs -[r1 lr]
; byrRegs -[r0] adds r4, r4, 1
- cmp r10, r4 - bgt SHORT G_M50642_IG11 - ;; size=46 bbWeight=0.04 PerfScore 0.72
+ ldr r3, [sp+0x0C] // [V16 cse0] + cmp r3, r4 + bgt SHORT G_M50642_IG14 + ;; size=50 bbWeight=0.04 PerfScore 0.76
G_M50642_IG12: ; bbWeight=0.50, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r9] ldr r1, [r2+0x04]
- cmp r10, r1 - bhs SHORT G_M50642_IG14 - lsl r1, r10, 2
+ cmp r3, r1 + bhs SHORT G_M50642_IG15 + lsls r1, r3, 2
add r0, r2, 8 ; byrRegs +[r0] adds r0, r0, r1 @@ -210,9 +215,9 @@ G_M50642_IG12: ; bbWeight=0.50, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0 ; byrRegs -[r0] str r2, [sp] // [V10 OutArgs] ; gcr arg write
- ldr r4, [sp+0x40] // [V06 arg6] - ; gcrRegs +[r4] - str r4, [sp+0x04] // [V10 OutArgs+0x04]
+ ldr r10, [sp+0x40] // [V06 arg6] + ; gcrRegs +[r10] + str r10, [sp+0x04] // [V10 OutArgs+0x04]
; gcr arg write mov r0, r5 ; gcrRegs +[r0] @@ -223,20 +228,23 @@ G_M50642_IG12: ; bbWeight=0.50, gcrefRegs=00E4 {r2 r5 r6 r7}, byrefRegs=0 ldr r3, [sp+0x38] // [V04 arg4] ; gcrRegs +[r3] movw r4, LOW RELOC 0xD1FFAB1E
- ; gcrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr lr, [r4] blx lr // <unknown method>
- ; gcrRegs -[r1 r3 r5-r6]
+ ; gcrRegs -[r1 r3 r5-r6 r10]
; gcr arg pop 0
- ;; size=64 bbWeight=0.50 PerfScore 12.00
+ ;; size=66 bbWeight=0.50 PerfScore 12.00
G_M50642_IG13: ; bbWeight=0.50, epilog, nogc, extend add sp, 20 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0]
+G_M50642_IG14: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=02E4 {r2 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] +[r2 r5-r7 r9] + b SHORT G_M50642_IG11 + ;; size=2 bbWeight=0.02 PerfScore 0.02 +G_M50642_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r2 r5-r7 r9]
movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E add r3, pc @@ -244,7 +252,7 @@ G_M50642_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M50642_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50642_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -282,7 +290,7 @@ G_M50642_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=66 bbWeight=0 PerfScore 0.00
-; Total bytes of code 374, prolog size 22, PerfScore 107.66, instruction count 143, allocated bytes for code 374 (MethodHash=cb793a2d) for method System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
+; Total bytes of code 394, prolog size 22, PerfScore 113.18, instruction count 149, allocated bytes for code 394 (MethodHash=cb793a2d) for method System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
; ============================================================ Unwind Info: @@ -294,7 +302,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 187 (0x000bb) Actual length = 374 (0x000176)
+ Function Length : 197 (0x000c5) Actual length = 394 (0x00018a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+22 (+6.15%) : 28865.dasm - System.Data.SqlTypes.SqlString:CompareBinary(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int (FullOpts)

@@ -16,7 +16,7 @@ ; V05 loc3 [V05,T08] ( 7, 7.50) int -> lr ; V06 loc4 [V06,T07] ( 7, 8.50) int -> r12 ; V07 loc5 [V07,T00] ( 34, 56.66) int -> r4
-; V08 loc6 [V08,T02] ( 8, 13 ) int -> registers
+; V08 loc6 [V08,T02] ( 8, 13 ) int -> r12
;* V09 loc7 [V09,T21] ( 0, 0 ) int -> zero-ref ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T19] ( 3, 2 ) int -> r12 @@ -32,7 +32,7 @@ ; V21 cse7 [V21,T09] ( 7, 7.08) int -> r1 "CSE - aggressive" ; V22 cse8 [V22,T10] ( 6, 7.04) int -> r3 "CSE - aggressive" ; V23 cse9 [V23,T05] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V24 cse10 [V24,T12] ( 3, 6 ) int -> r0 "CSE - aggressive"
+; V24 cse10 [V24,T12] ( 3, 6 ) int -> r12 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -116,10 +116,10 @@ G_M16969_IG06: ; bbWeight=3.96, gcrefRegs=0041 {r0 r6}, byrefRegs=00A0 {r cmp r4, r12 blt SHORT G_M16969_IG06 ;; size=22 bbWeight=3.96 PerfScore 35.64
-G_M16969_IG07: ; bbWeight=1, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
+G_M16969_IG07: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r5 r7] b SHORT G_M16969_IG09
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M16969_IG08: ; bbWeight=0.04, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz cmp r4, r3 bhs SHORT G_M16969_IG24 @@ -161,21 +161,21 @@ G_M16969_IG10: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b ldrb r3, [r7+r4] add r0, r3, 8 and r0, r0, 31
- lsl r3, r2, r0 - cmp r3, 32
+ lsl r12, r2, r0 + cmp r12, 32
bne SHORT G_M16969_IG14 adds r4, r4, 2 cmp r4, lr blt SHORT G_M16969_IG10
- ;; size=32 bbWeight=3.96 PerfScore 51.48
+ ;; size=34 bbWeight=3.96 PerfScore 51.48
G_M16969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r7] b SHORT G_M16969_IG17 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M16969_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- adds r3, r4, 1 - cmp r3, r1
+ add r12, r4, 1 + cmp r12, r1
bhs SHORT G_M16969_IG24 add r7, r0, 8 ; byrRegs +[r7] @@ -186,41 +186,41 @@ G_M16969_IG12: ; bbWeight=0.04, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b ldrb r2, [r7+r4] adds r2, 8 and r2, r2, 31
- lsls r3, r2 - cmp r3, 32
+ lsl r12, r3, r2 + cmp r12, 32
bne SHORT G_M16969_IG14 adds r4, r4, 2 cmp r4, lr blt SHORT G_M16969_IG12
- ;; size=38 bbWeight=0.04 PerfScore 0.68
+ ;; size=44 bbWeight=0.04 PerfScore 0.68
G_M16969_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r7] b SHORT G_M16969_IG17 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M16969_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r3, 32
+ cmp r12, 32
blt SHORT G_M16969_IG22 b SHORT G_M16969_IG20
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M16969_IG15: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6]
- adds r0, r4, 1 - cmp r0, r3
+ add r12, r4, 1 + cmp r12, r3
bhs SHORT G_M16969_IG24 add r5, r6, 8 ; byrRegs +[r5]
- ldrb r0, [r5+r0]
+ ldrb r0, [r5+r12]
cmp r4, r3 bhs SHORT G_M16969_IG24 ldrb r1, [r5+r4]
- adds r1, 8 - and r1, r1, 31 - lsls r0, r1 - cmp r0, 32
+ add lr, r1, 8 + and r1, lr, 31 + lsl r12, r0, r1 + cmp r12, 32
bne SHORT G_M16969_IG19 adds r4, r4, 2
- ;; size=32 bbWeight=2 PerfScore 28.00
+ ;; size=42 bbWeight=2 PerfScore 28.00
G_M16969_IG16: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r5] cmp r4, r2 @@ -236,9 +236,9 @@ G_M16969_IG18: ; bbWeight=0.50, epilog, nogc, extend bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 G_M16969_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp r0, 32
+ cmp r12, 32
bgt SHORT G_M16969_IG22
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M16969_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -265,7 +265,7 @@ G_M16969_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 10, PerfScore 181.40, instruction count 148, allocated bytes for code 358 (MethodHash=d195bdb6) for method System.Data.SqlTypes.SqlString:CompareBinary(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int (FullOpts)
+; Total bytes of code 380, prolog size 10, PerfScore 180.90, instruction count 148, allocated bytes for code 380 (MethodHash=d195bdb6) for method System.Data.SqlTypes.SqlString:CompareBinary(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int (FullOpts)
; ============================================================ Unwind Info: @@ -277,7 +277,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 179 (0x000b3) Actual length = 358 (0x000166)
+ Function Length : 190 (0x000be) Actual length = 380 (0x00017c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+11.97%) : 178072.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextKey(System.String,int,byref):System.String (FullOpts)

@@ -12,23 +12,23 @@ ; V00 arg0 [V00,T07] ( 7, 12 ) ref -> r0 class-hnd single-def <System.String> ; V01 arg1 [V01,T00] ( 33, 83.50) int -> r1 ; V02 arg2 [V02,T10] ( 5, 3.50) byref -> r2 single-def
-; V03 loc0 [V03,T16] ( 3, 2 ) int -> lr -; V04 loc1 [V04,T17] ( 2, 1 ) int -> r12
+; V03 loc0 [V03,T16] ( 3, 2 ) int -> r3 +; V04 loc1 [V04,T17] ( 2, 1 ) int -> lr
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07,T03] ( 3, 24 ) ushort -> lr "Inlining Arg"
+; V07 tmp2 [V07,T03] ( 3, 24 ) ushort -> r3 "Inlining Arg"
;* V08 tmp3 [V08,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T04] ( 3, 24 ) ushort -> r4 "Inlining Arg"
+; V09 tmp4 [V09,T04] ( 3, 24 ) ushort -> lr "Inlining Arg"
;* V10 tmp5 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp6 [V11,T15] ( 3, 3 ) ushort -> r5 "Inlining Arg"
+; V11 tmp6 [V11,T15] ( 3, 3 ) ushort -> r12 "Inlining Arg"
;* V12 tmp7 [V12,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp8 [V13,T05] ( 3, 24 ) ushort -> r5 "Inlining Arg"
+; V13 tmp8 [V13,T05] ( 3, 24 ) ushort -> r12 "Inlining Arg"
;* V14 tmp9 [V14,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V15 tmp10 [V15,T06] ( 3, 24 ) ushort -> r6 "Inlining Arg" -; V16 cse0 [V16,T09] ( 3, 12 ) int -> r5 "CSE - aggressive"
+; V15 tmp10 [V15,T06] ( 3, 24 ) ushort -> r4 "Inlining Arg" +; V16 cse0 [V16,T09] ( 3, 12 ) int -> r12 "CSE - aggressive"
; V17 cse1 [V17,T08] ( 5, 13 ) int -> registers multi-def "CSE - aggressive"
-; V18 cse2 [V18,T01] ( 13, 46.50) int -> r3 hoist "CSE - aggressive" -; V19 cse3 [V19,T02] ( 9, 25.50) byref -> registers multi-def "CSE - aggressive"
+; V18 cse2 [V18,T01] ( 13, 46.50) int -> r5 hoist "CSE - aggressive" +; V19 cse3 [V19,T02] ( 9, 25.50) byref -> r6 multi-def "CSE - aggressive"
; ; Lcl frame size = 4 @@ -39,57 +39,57 @@ G_M63854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M63854_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r2]
- ldr r3, [r0+0x04]
+ ldr r5, [r0+0x04]
b SHORT G_M63854_IG04 ;; size=4 bbWeight=1 PerfScore 2.00 G_M63854_IG03: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref adds r1, r1, 1 ;; size=2 bbWeight=2 PerfScore 2.00 G_M63854_IG04: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- cmp r3, r1
+ cmp r5, r1
ble SHORT G_M63854_IG06 ;; size=4 bbWeight=8 PerfScore 16.00 G_M63854_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M63854_IG23
- add lr, r0, 8 - ; byrRegs +[lr] - lsl r12, r1, 1 - ldrh lr, [lr+r12] - ; byrRegs -[lr] - cmp lr, 32
+ add r6, r0, 8 + ; byrRegs +[r6] + lsls r3, r1, 1 + ldrh r3, [r6+r3] + cmp r3, 32
beq SHORT G_M63854_IG03
- cmp lr, 9
+ cmp r3, 9
beq SHORT G_M63854_IG03
- ;; size=28 bbWeight=4 PerfScore 36.00
+ ;; size=20 bbWeight=4 PerfScore 36.00
G_M63854_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- mov lr, r1
+ ; byrRegs -[r6] + mov r3, r1
b SHORT G_M63854_IG08 ;; size=4 bbWeight=1 PerfScore 2.00 G_M63854_IG07: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref adds r1, r1, 1 ;; size=2 bbWeight=2 PerfScore 2.00 G_M63854_IG08: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- cmp r3, r1
+ cmp r5, r1
ble SHORT G_M63854_IG10 ;; size=4 bbWeight=8 PerfScore 16.00 G_M63854_IG09: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M63854_IG23
- add r12, r0, 8 - ; byrRegs +[r12] - lsls r4, r1, 1 - ldrh r4, [r12+r4] - cmp r4, 61
+ add r6, r0, 8 + ; byrRegs +[r6] + lsl lr, r1, 1 + ldrh lr, [r6+lr] + cmp lr, 61
beq SHORT G_M63854_IG10
- cmp r4, 32
+ cmp lr, 32
beq SHORT G_M63854_IG10
- cmp r4, 9
+ cmp lr, 9
bne SHORT G_M63854_IG07
- ;; size=26 bbWeight=4 PerfScore 44.00
+ ;; size=34 bbWeight=4 PerfScore 44.00
G_M63854_IG10: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref, isz
- ; byrRegs -[r12] - cmp r3, r1
+ ; byrRegs -[r6] + cmp r5, r1
bne SHORT G_M63854_IG13 ;; size=4 bbWeight=4 PerfScore 8.00 G_M63854_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref @@ -102,47 +102,47 @@ G_M63854_IG12: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M63854_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, gcvars, byref, isz
- sub r12, r1, lr - cmp r1, r3
+ sub lr, r1, r3 + cmp r1, r5
bhs SHORT G_M63854_IG23
- add r4, r0, 8 - ; byrRegs +[r4] - lsls r5, r1, 1 - ldrh r5, [r4+r5] - cmp r5, 32
+ add r6, r0, 8 + ; byrRegs +[r6] + lsl r12, r1, 1 + ldrh r12, [r6+r12] + cmp r12, 32
beq SHORT G_M63854_IG15
- cmp r5, 9
+ cmp r12, 9
bne SHORT G_M63854_IG20 b SHORT G_M63854_IG15
- ;; size=26 bbWeight=0.50 PerfScore 5.50 -G_M63854_IG14: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0014 {r2 r4}, byref
+ ;; size=34 bbWeight=0.50 PerfScore 5.50 +G_M63854_IG14: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0044 {r2 r6}, byref
adds r1, r1, 1 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M63854_IG15: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0014 {r2 r4}, byref, isz - cmp r3, r1
+G_M63854_IG15: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0044 {r2 r6}, byref, isz + cmp r5, r1
ble SHORT G_M63854_IG16
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M63854_IG23
- lsls r5, r1, 1 - ldrh r5, [r4+r5] - cmp r5, 32
+ lsl r12, r1, 1 + ldrh r12, [r6+r12] + cmp r12, 32
beq SHORT G_M63854_IG14
- cmp r5, 9
+ cmp r12, 9
beq SHORT G_M63854_IG14
- ;; size=20 bbWeight=4 PerfScore 40.00 -G_M63854_IG16: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0014 {r2 r4}, byref, isz - cmp r3, r1
+ ;; size=28 bbWeight=4 PerfScore 40.00 +G_M63854_IG16: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0044 {r2 r6}, byref, isz + cmp r5, r1
beq SHORT G_M63854_IG17
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M63854_IG23
- lsls r5, r1, 1 - ldrh r5, [r4+r5] - cmp r5, 61
+ lsl r12, r1, 1 + ldrh r12, [r6+r12] + cmp r12, 61
beq SHORT G_M63854_IG20
- ;; size=16 bbWeight=0.50 PerfScore 4.00
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M63854_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref ; gcrRegs -[r0]
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
str r1, [r2] movs r0, 0 ; gcrRegs +[r0] @@ -150,31 +150,31 @@ G_M63854_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, b G_M63854_IG18: ; bbWeight=0.50, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M63854_IG19: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0014 {r2 r4}, gcvars, byref - ; byrRegs +[r4]
+G_M63854_IG19: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0044 {r2 r6}, gcvars, byref + ; byrRegs +[r6]
adds r1, r1, 1 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M63854_IG20: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0014 {r2 r4}, byref, isz - cmp r3, r1
+G_M63854_IG20: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0044 {r2 r6}, byref, isz + cmp r5, r1
ble SHORT G_M63854_IG21
- cmp r1, r3
+ cmp r1, r5
bhs SHORT G_M63854_IG23
- lsls r5, r1, 1 - ldrh r5, [r4+r5] - mov r6, r5 - cmp r6, 32
+ lsl r12, r1, 1 + ldrh r12, [r6+r12] + mov r4, r12 + cmp r4, 32
beq SHORT G_M63854_IG19
- cmp r6, 9
+ cmp r4, 9
beq SHORT G_M63854_IG19
- cmp r5, 61
+ cmp r12, 61
beq SHORT G_M63854_IG19
- ;; size=26 bbWeight=4 PerfScore 52.00
+ ;; size=32 bbWeight=4 PerfScore 52.00
G_M63854_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref
- ; byrRegs -[r4]
+ ; byrRegs -[r6]
str r1, [r2]
- mov r2, r12
+ mov r2, lr
; byrRegs -[r2]
- mov r1, lr
+ mov r1, r3
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -196,7 +196,7 @@ G_M63854_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 234, prolog size 8, PerfScore 243.00, instruction count 99, allocated bytes for code 234 (MethodHash=532b0691) for method System.Net.Http.AuthenticationHelper+DigestResponse:GetNextKey(System.String,int,byref):System.String (FullOpts)
+; Total bytes of code 262, prolog size 8, PerfScore 243.00, instruction count 99, allocated bytes for code 262 (MethodHash=532b0691) for method System.Net.Http.AuthenticationHelper+DigestResponse:GetNextKey(System.String,int,byref):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -208,7 +208,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0 ...

libraries.pmi.linux.arm.checked.mch

-36 (-9.42%) : 152193.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-20 (-6.45%) : 20910.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)

@@ -17,13 +17,13 @@ ; V07 tmp2 [V07,T09] ( 4, 2 ) ref -> lr "field V03.Cert (fldOffset=0x0)" P-INDEP ; V08 tmp3 [V08,T10] ( 4, 2 ) ref -> [sp+0x00] "field V03.Key (fldOffset=0x4)" P-INDEP ; V09 tmp4 [V09,T05] ( 3, 3 ) byref -> r3 single-def "BlockOp address local"
-; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r0 "index expr"
+; V10 tmp5 [V10,T07] ( 3, 3 ) int -> r4 "index expr"
; V11 tmp6 [V11,T06] ( 3, 3 ) byref -> r3 single-def "BlockOp address local" ;* V12 tmp7 [V12,T13] ( 0, 0 ) int -> zero-ref "index expr" ; V13 tmp8 [V13,T15] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V14 cse0 [V14,T11] ( 3, 1.50) byref -> r0 "CSE - moderate" ; V15 cse1 [V15,T12] ( 3, 1.50) byref -> r0 "CSE - moderate"
-; V16 cse2 [V16,T04] ( 3, 2.50) int -> r0 "CSE - aggressive"
+; V16 cse2 [V16,T04] ( 3, 2.50) int -> r4 "CSE - aggressive"
; V17 cse3 [V17,T08] ( 3, 3 ) int -> r0 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -42,57 +42,57 @@ G_M3164_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byr ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M3164_IG11
- subs r0, r0, 1 - mov r3, r0
+ subs r4, r0, 1 + mov r3, r4
cmp r3, 0 blt SHORT G_M3164_IG06 cmp r2, 0 beq SHORT G_M3164_IG05
- ldr lr, [r2+0x04] - cmp lr, r3
+ ldr r0, [r2+0x04] + cmp r0, r3
ble SHORT G_M3164_IG05
- ;; size=28 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 13.00
G_M3164_IG03: ; bbWeight=3.96, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG03
- ;; size=26 bbWeight=3.96 PerfScore 35.64 -G_M3164_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz - ; gcrRegs -[lr]
+ ;; size=18 bbWeight=3.96 PerfScore 35.64 +G_M3164_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz + ; gcrRegs -[r0]
b SHORT G_M3164_IG06
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M3164_IG05: ; bbWeight=0.04, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ldr lr, [r2+0x04] - cmp r3, lr
+ ldr r0, [r2+0x04] + cmp r3, r0
bhs SHORT G_M3164_IG10
- lsl lr, r3, 3 - add lr, lr, 8 - add lr, r2 - ; byrRegs +[lr] - ldr lr, [lr+0x04] - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ lsls r0, r3, 3 + adds r0, 8 + adds r0, r2, r0 + ; byrRegs +[r0] + ldr r0, [r0+0x04] + ; gcrRegs +[r0] + ; byrRegs -[r0] + cmp r0, 0
bne SHORT G_M3164_IG08 subs r3, r3, 1 cmp r3, 0 bge SHORT G_M3164_IG05
- ;; size=34 bbWeight=0.04 PerfScore 0.48
+ ;; size=24 bbWeight=0.04 PerfScore 0.48
G_M3164_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[lr] - ldr r3, [r2+0x04] - cmp r0, r3
+ ; gcrRegs -[r0] + ldr r0, [r2+0x04] + cmp r4, r0
bhs SHORT G_M3164_IG10
- lsls r0, r0, 3
+ lsls r0, r4, 3
adds r0, 8 adds r0, r2, r0 ; byrRegs +[r0] @@ -228,7 +228,7 @@ G_M3164_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 10, PerfScore 80.12, instruction count 116, allocated bytes for code 310 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
+; Total bytes of code 290, prolog size 10, PerfScore 79.62, instruction count 116, allocated bytes for code 290 (MethodHash=f732f3a3) for method System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +240,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 155 (0x0009b) Actual length = 310 (0x000136)
+ Function Length : 145 (0x00091) Actual length = 290 (0x000122)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.15%) : 152405.dasm - Microsoft.CodeAnalysis.RealParser:ConvertBigIntegerToFloatingPointBits(ubyte[],uint,ubyte,Microsoft.CodeAnalysis.RealParser+FloatingPointType,byref):int (FullOpts)

@@ -13,20 +13,20 @@ ; V02 arg2 [V02,T10] ( 3, 3 ) ubyte -> r2 single-def ; V03 arg3 [V03,T08] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.RealParser+FloatingPointType> ; V04 arg4 [V04,T16] ( 1, 1 ) byref -> [sp+0x30] single-def
-; V05 loc0 [V05,T14] ( 2, 2 ) int -> r0 single-def
+; V05 loc0 [V05,T14] ( 2, 2 ) int -> r8 single-def
;* V06 loc1 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc2 [V07,T03] ( 4, 12 ) ubyte -> r6 ; V08 loc3 [V08,T13] ( 3, 3 ) int -> r7 single-def
-; V09 loc4 [V09,T07] ( 7, 9 ) int -> r2 single-def
+; V09 loc4 [V09,T07] ( 7, 9 ) int -> r1 single-def
; V10 loc5 [V10,T00] ( 13, 20.04) int -> r7
-; V11 loc6 [V11,T02] ( 6, 13 ) int -> r2
+; V11 loc6 [V11,T02] ( 6, 13 ) int -> r0
; V12 OutArgs [V12 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 2, 4 ) int -> r0 "impAppendStmt"
-; V14 tmp2 [V14,T15] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V15 tmp3 [V15,T11] ( 3, 4.20) int -> r2 "Inlining Arg" -; V16 cse0 [V16,T06] ( 6, 9.04) byref -> lr hoist multi-def "CSE - aggressive" -; V17 rat0 [V17,T01] ( 8, 14 ) int -> r3 "field V06.lo (fldOffset=0x0)" P-INDEP -; V18 rat1 [V18,T05] ( 6, 10 ) int -> r1 "field V06.hi (fldOffset=0x4)" P-INDEP
+; V14 tmp2 [V14,T15] ( 3, 1.50) int -> r1 "Inline return value spill temp" +; V15 tmp3 [V15,T11] ( 3, 4.20) int -> r1 "Inlining Arg" +; V16 cse0 [V16,T06] ( 6, 9.04) byref -> registers hoist multi-def "CSE - aggressive" +; V17 rat0 [V17,T01] ( 8, 14 ) int -> r2 "field V06.lo (fldOffset=0x0)" P-INDEP +; V18 rat1 [V18,T05] ( 6, 10 ) int -> r3 "field V06.hi (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 20 @@ -65,115 +65,113 @@ G_M50203_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- subs r2, r7, 7 - cmp r2, 0
+ subs r1, r7, 7 + cmp r1, 0
bgt SHORT G_M50203_IG09 ;; size=32 bbWeight=1 PerfScore 14.00 G_M50203_IG05: ; bbWeight=0.40, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- movs r2, 0
+ movs r1, 0
;; size=2 bbWeight=0.40 PerfScore 0.40 G_M50203_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- lsls r3, r2, 3 - adds r0, r0, r3
+ lsls r2, r1, 3 + add r8, r0, r2 + movs r2, 0
movs r3, 0
- movs r1, 0 - cmp r7, r2
+ cmp r7, r1
blt SHORT G_M50203_IG11 cmp r4, 0 beq SHORT G_M50203_IG10
- orrs lr, r7, r2 - cmp lr, 0
+ orrs r0, r7, r1 + cmp r0, 0
blt SHORT G_M50203_IG10
- ldr lr, [r4+0x04] - cmp lr, r7
+ ldr r0, [r4+0x04] + cmp r0, r7
ble SHORT G_M50203_IG10
- add lr, r4, 8 - ; byrRegs +[lr] - ;; size=38 bbWeight=1 PerfScore 15.00 -G_M50203_IG07: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=4000 {lr}, byref, isz - ldrb r12, [lr+r7] - uxtb r12, r12 - lsl r8, r3, 8 - lsls r1, r1, 8 - orr r1, r1, r3 LSR 24 - orr r3, r12, r8 - orr r1, r1, 0
+ add r0, r4, 8 + ; byrRegs +[r0] + ;; size=36 bbWeight=1 PerfScore 15.00 +G_M50203_IG07: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0001 {r0}, byref, isz + ldrb lr, [r0+r7] + uxtb lr, lr + lsl r12, r2, 8 + lsls r3, r3, 8 + orr r3, r3, r2 LSR 24 + orr r2, lr, r12 + orr r3, r3, 0
subs r7, r7, 1
- cmp r7, r2
+ cmp r7, r1
bge SHORT G_M50203_IG07 ;; size=32 bbWeight=3.96 PerfScore 39.60 G_M50203_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[lr]
+ ; byrRegs -[r0]
b SHORT G_M50203_IG11 ;; size=2 bbWeight=1 PerfScore 1.00 G_M50203_IG09: ; bbWeight=0.10, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz b SHORT G_M50203_IG06 ;; size=2 bbWeight=0.10 PerfScore 0.10 G_M50203_IG10: ; bbWeight=0.04, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r4+0x04] - cmp r7, lr
+ ldr r0, [r4+0x04] + cmp r7, r0
bhs SHORT G_M50203_IG18
- add lr, r4, 8 - ; byrRegs +[lr] - ldrb lr, [lr+r7] - ; byrRegs -[lr] - uxtb lr, lr - lsl r12, r3, 8 - lsls r1, r1, 8 - orr r1, r1, r3 LSR 24 - orr r3, lr, r12 - orr r1, r1, 0
+ add r0, r4, 8 + ; byrRegs +[r0] + ldrb r0, [r0+r7] + ; byrRegs -[r0] + uxtb r0, r0 + lsl lr, r2, 8 + lsls r3, r3, 8 + orr r3, r3, r2 LSR 24 + orr r2, r0, lr + orr r3, r3, 0
subs r7, r7, 1
- cmp r7, r2
+ cmp r7, r1
bge SHORT G_M50203_IG10
- ;; size=44 bbWeight=0.04 PerfScore 0.56
+ ;; size=38 bbWeight=0.04 PerfScore 0.56
G_M50203_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- subs r2, r2, 1
+ subs r0, r1, 1
b SHORT G_M50203_IG14 ;; size=4 bbWeight=1 PerfScore 2.00 G_M50203_IG12: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr lr, [r4+0x04] - cmp r2, lr
+ ldr r1, [r4+0x04] + cmp r0, r1
bhs SHORT G_M50203_IG18
- add lr, r4, 8 - ; byrRegs +[lr] - ldrb lr, [lr+r2] - ; byrRegs -[lr] - cmp lr, 0
+ add r1, r4, 8 + ; byrRegs +[r1] + ldrb r1, [r1+r0] + ; byrRegs -[r1] + cmp r1, 0
beq SHORT G_M50203_IG13 movs r6, 0
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=18 bbWeight=2 PerfScore 16.00
G_M50203_IG13: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- subs r2, r2, 1
+ subs r0, r0, 1
;; size=2 bbWeight=2 PerfScore 2.00 G_M50203_IG14: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r6, 0 beq SHORT G_M50203_IG16 ;; size=4 bbWeight=8 PerfScore 16.00 G_M50203_IG15: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- cmp r2, 0
+ cmp r0, 0
bge SHORT G_M50203_IG12 ;; size=4 bbWeight=4 PerfScore 8.00 G_M50203_IG16: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
- str r0, [sp]
+ str r8, [sp]
str r6, [sp+0x04]
- ldr r4, [sp+0x30] // [V04 arg4] - ; byrRegs +[r4] - str r4, [sp+0x08] // [V12 OutArgs+0x08]
+ ldr r7, [sp+0x30] // [V04 arg4] + ; byrRegs +[r7] + str r7, [sp+0x08] // [V12 OutArgs+0x08]
; byr arg write mov r0, r5 ; gcrRegs +[r0]
- mov r2, r3 - mov r3, r1
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] blx r1 // <unknown method> ; gcrRegs -[r0 r5]
- ; byrRegs -[r4]
+ ; byrRegs -[r7]
; gcr arg pop 0
- ;; size=26 bbWeight=1 PerfScore 11.00
+ ;; size=24 bbWeight=1 PerfScore 9.00
G_M50203_IG17: ; bbWeight=1, epilog, nogc, extend add sp, 20 pop {r4,r5,r6,r7,r8,r11,pc} @@ -186,7 +184,7 @@ G_M50203_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 14, PerfScore 138.66, instruction count 99, allocated bytes for code 260 (MethodHash=28d53be4) for method Microsoft.CodeAnalysis.RealParser:ConvertBigIntegerToFloatingPointBits(ubyte[],uint,ubyte,Microsoft.CodeAnalysis.RealParser+FloatingPointType,byref):int (FullOpts)
+; Total bytes of code 244, prolog size 14, PerfScore 136.66, instruction count 97, allocated bytes for code 244 (MethodHash=28d53be4) for method Microsoft.CodeAnalysis.RealParser:ConvertBigIntegerToFloatingPointBits(ubyte[],uint,ubyte,Microsoft.CodeAnalysis.RealParser+FloatingPointType,byref):int (FullOpts)
; ============================================================ Unwind Info: @@ -198,7 +196,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 130 (0x00082) Actual length = 260 (0x000104)
+ Function Length : 122 (0x0007a) Actual length = 244 (0x0000f4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+66.67%) : 164211.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder+ValueCollection[System.__Canon,System.Nullable1[int]]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._dictionary (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V06 rat1 [V06,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -27,13 +27,17 @@ G_M38784_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M38784_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x14] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M38784_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=22b5687f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=22b5687f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,7 +49,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+8 (+66.67%) : 244247.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder+KeyCollection[System.__Canon,System.Nullable1[int]]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._dictionary (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V06 rat1 [V06,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -27,13 +27,17 @@ G_M7872_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M7872_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x10] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M7872_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=9d20e13f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=9d20e13f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,7 +49,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+8 (+66.67%) : 244248.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder+ValueCollection[System.__Canon,System.Nullable1[int]]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "field V02._dictionary (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V06 rat1 [V06,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -27,13 +27,17 @@ G_M38784_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M38784_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x14] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M38784_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=22b5687f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=22b5687f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,7 +49,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries_tests.run.linux.arm.Release.mch

-36 (-9.42%) : 153401.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-36 (-9.42%) : 11974.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-36 (-9.42%) : 139978.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

+20 (+50.00%) : 29068.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (Tier1)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r0 single-def "V02.[000..004)" -;* V09 cse0 [V09,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r3 single-def "V02.[000..004)" +; V09 cse0 [V09,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V10 rat0 [V10,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V11 rat1 [V11,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -36,19 +36,31 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M20412_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x18] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ldr r3, [sp+0x18] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x10]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M20412_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -56,7 +68,7 @@ G_M20412_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+66.67%) : 14301.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Instrumented Tier1)

@@ -15,9 +15,9 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.m_task (fldOffset=0x0)" P-INDEP
-;* V07 rat0 [V07,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V08 rat1 [V08,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -29,13 +29,17 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9200_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x30] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -47,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+8 (+66.67%) : 30891.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Tier1)

@@ -15,9 +15,9 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.m_task (fldOffset=0x0)" P-INDEP
-;* V07 rat0 [V07,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V08 rat1 [V08,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -29,13 +29,17 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9200_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x30] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -47,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-36 (-9.42%) : 5134.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-36 (-9.42%) : 43646.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-36 (-9.42%) : 49344.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

+20 (+50.00%) : 2408.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.Text.TextSpan]]:<.cctor>b107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary2+HashBucket[System.Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]):this (FullOpts)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r0 single-def "V02.[000..004)" -;* V09 cse0 [V09,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T06] ( 3, 2.50) ref -> r3 single-def "V02.[000..004)" +; V09 cse0 [V09,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V10 rat0 [V10,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V11 rat1 [V11,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -36,19 +36,31 @@ G_M18716_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M18716_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x18] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ldr r3, [sp+0x18] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x10]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M18716_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M18716_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M18716_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M18716_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -56,7 +68,7 @@ G_M18716_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=7db8b6e3) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=7db8b6e3) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]):this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+50.00%) : 2860.dasm - System.Collections.Immutable.ImmutableHashSet1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)

@@ -17,13 +17,13 @@ ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V02._firstValue (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r0 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP -;* V10 cse0 [V10,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V11 rat0 [V11,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r3 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP +; V10 cse0 [V10,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V11 rat0 [V11,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V14 rat3 [V14,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V15 rat4 [V15,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -37,19 +37,31 @@ G_M10050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M10050_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x1C] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x08] + cmp r3, 0 + ldr r3, [sp+0x1C] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x0C]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M10050_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -57,7 +69,7 @@ G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+66.67%) : 3467.dasm - System.Threading.Tasks.Task1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:this (FullOpts)

@@ -15,9 +15,9 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.m_task (fldOffset=0x0)" P-INDEP
-;* V07 rat0 [V07,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V08 rat1 [V08,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -29,13 +29,17 @@ G_M19920_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M19920_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x0C] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M19920_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=89c1b22f) for method System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=89c1b22f) for method System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

realworld.run.linux.arm.checked.mch

-36 (-9.42%) : 23068.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T12] ( 5, 3.50) byref -> r4 single-def ; V03 loc0 [V03,T00] ( 26, 69 ) int -> r5 ; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> r8
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> r3 single-def
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> lr single-def
; V06 loc3 [V06,T16] ( 7, 3.50) int -> r2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> lr -; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r12 -; V09 loc6 [V09,T06] ( 7, 17 ) int -> r2 -; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r12
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> r9 +; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> r3 +; V09 loc6 [V09,T06] ( 7, 17 ) int -> r10 +; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> r3
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T18] ( 2, 2 ) int -> r5 "impSpillLclRefs" ;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -28,21 +28,21 @@ ;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r12 "Inlining Arg"
+; V20 tmp9 [V20,T01] ( 5, 40 ) ushort -> r2 "Inlining Arg"
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value" ; V24 cse0 [V24,T09] ( 4, 9 ) int -> r8 "CSE - aggressive" ; V25 cse1 [V25,T02] ( 10, 32 ) int -> r6 hoist "CSE - aggressive" ; V26 cse2 [V26,T05] ( 5, 18 ) byref -> r7 "CSE - aggressive"
-; TEMP_01 ref -> [r11-0x1C]
+; TEMP_01 ref -> [r11-0x24]
; ; Lcl frame size = 12 G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
- add r11, sp, 32
+ add r11, sp, 40
movs r3, 0 str r3, [sp+0x04] mov r4, r2 @@ -56,8 +56,8 @@ G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, ;; size=4 bbWeight=1 PerfScore 2.00 G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r6, r5
- beq G_M24207_IG29 - ;; size=6 bbWeight=8 PerfScore 16.00
+ beq SHORT G_M24207_IG29 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz cmp r5, r6 bhs G_M24207_IG35 @@ -99,37 +99,37 @@ G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r adds r5, r5, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- mov r3, r5
+ mov lr, r5
mov r2, r6
- mov lr, 0
+ mov r9, 0
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r6, r5 ble SHORT G_M24207_IG17 cmp r5, r6
- bhs G_M24207_IG35 - lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 92
+ bhs SHORT G_M24207_IG35 + lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 92
bne SHORT G_M24207_IG12
- mov lr, 1
+ mov r9, 1
adds r5, r5, 2 b SHORT G_M24207_IG11
- ;; size=32 bbWeight=4 PerfScore 44.00
+ ;; size=24 bbWeight=4 PerfScore 44.00
G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG15 ;; size=6 bbWeight=4 PerfScore 8.00 G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG19
- cmp r12, 44
+ cmp r3, 44
beq SHORT G_M24207_IG19
- cmp r12, 34
+ cmp r3, 34
beq SHORT G_M24207_IG29
- cmp r12, 39
+ cmp r3, 39
bne SHORT G_M24207_IG16
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=16 bbWeight=2 PerfScore 16.00
G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ; byrRegs -[r1 r7] @@ -138,7 +138,7 @@ G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; gcrRegs +[r0] ; byrRegs +[r1 r7]
- cmp r12, r8
+ cmp r3, r8
beq SHORT G_M24207_IG18 ;; size=4 bbWeight=2 PerfScore 4.00 G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz @@ -156,48 +156,48 @@ G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz cmp r8, 0 bne SHORT G_M24207_IG25
- subs r2, r5, 1
+ add r10, r5, -1
b SHORT G_M24207_IG21
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref
- subs r2, r2, 1 - ;; size=2 bbWeight=2 PerfScore 2.00
+ add r10, r10, -1 + ;; size=4 bbWeight=2 PerfScore 2.00
G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz
- cmp r2, r3
+ cmp r10, lr
blt SHORT G_M24207_IG22
- cmp r2, r6
+ cmp r10, r6
bhs SHORT G_M24207_IG35
- lsl r12, r2, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsl r2, r10, 1 + ldrh r2, [r7+r2] + cmp r2, 32
beq SHORT G_M24207_IG20
- cmp r12, 9
+ cmp r2, 9
beq SHORT G_M24207_IG20
- cmp r12, 13
+ cmp r2, 13
beq SHORT G_M24207_IG20
- cmp r12, 10
+ cmp r2, 10
beq SHORT G_M24207_IG20
- ;; size=40 bbWeight=4 PerfScore 56.00
+ ;; size=30 bbWeight=4 PerfScore 56.00
G_M24207_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz ; byrRegs -[r7]
- adds r2, r2, 1
+ add r2, r10, 1
b SHORT G_M24207_IG28
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M24207_IG23: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref, isz ; byrRegs +[r7] cmp r5, r6 bhs SHORT G_M24207_IG35
- lsl r12, r5, 1 - ldrh r12, [r7+r12] - cmp r12, 32
+ lsls r3, r5, 1 + ldrh r3, [r7+r3] + cmp r3, 32
beq SHORT G_M24207_IG24
- cmp r12, 9
+ cmp r3, 9
beq SHORT G_M24207_IG24
- cmp r12, 13
+ cmp r3, 13
beq SHORT G_M24207_IG24
- cmp r12, 10
+ cmp r3, 10
bne SHORT G_M24207_IG27
- ;; size=36 bbWeight=2 PerfScore 24.00
+ ;; size=24 bbWeight=2 PerfScore 24.00
G_M24207_IG24: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0092 {r1 r4 r7}, byref adds r5, r5, 1 ;; size=2 bbWeight=2 PerfScore 2.00 @@ -210,14 +210,14 @@ G_M24207_IG26: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r b SHORT G_M24207_IG28 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M24207_IG27: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz
- cmp r12, 61
+ cmp r3, 61
beq SHORT G_M24207_IG28
- cmp r12, 44
+ cmp r3, 44
bne SHORT G_M24207_IG29
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M24207_IG28: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0012 {r1 r4}, byref, isz str r5, [r1]
- cmp r2, r3
+ cmp r2, lr
bne SHORT G_M24207_IG31 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref @@ -229,15 +229,15 @@ G_M24207_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b G_M24207_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r4] add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs +[r0] ; byrRegs +[r4]
- cmp lr, 0
+ cmp r9, 0
bne SHORT G_M24207_IG33
- subs r2, r2, r3 - mov r1, r3
+ sub r2, r2, lr + mov r1, lr
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -255,15 +255,15 @@ G_M24207_IG31: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ; gcrRegs -[r1] ; byrRegs -[r0 r4] movs r0, 1
- ;; size=40 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M24207_IG32: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00 G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r0] ; byrRegs +[r4]
- mov r1, r3
+ mov r1, lr
mov r3, r4 ; byrRegs +[r3] movw lr, 0xd1ff @@ -272,7 +272,7 @@ G_M24207_IG33: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M24207_IG34: ; bbWeight=0.50, epilog, nogc, extend add sp, 12
- pop {r4,r5,r6,r7,r8,r11,lr}
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...

-40 (-4.11%) : 36710.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)

@@ -46,11 +46,11 @@ ;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ;* V36 tmp23 [V36 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ; V37 tmp24 [V37,T03] ( 6, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V38 tmp25 [V38,T29] ( 3, 0 ) ref -> r8 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V38 tmp25 [V38,T29] ( 3, 0 ) ref -> r9 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V39 tmp26 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle> ;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-; V41 tmp28 [V41,T04] ( 6, 12 ) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V42 tmp29 [V42,T30] ( 3, 0 ) ref -> r9 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V41 tmp28 [V41,T04] ( 6, 12 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.RuntimeType> +; V42 tmp29 [V42,T30] ( 3, 0 ) ref -> r8 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V43 FramesRoot [V43,T12] ( 5, 4 ) int -> r5 "Pinvoke FrameListRoot" ; V44 PInvokeFrame [V44 ] ( 6, 4.50) struct (36) [sp+0x04] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" ; V45 tmp32 [V45 ] ( 10, 17 ) ref -> [sp+0x4C] do-not-enreg[X] addr-exposed "field V09.m_type (fldOffset=0x0)" P-DEP @@ -109,7 +109,7 @@ G_M20848_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M20848_IG30
+ bne G_M20848_IG26
mov r0, r8 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -144,7 +144,7 @@ G_M20848_IG05: ; bbWeight=0.25, gcrefRegs=0191 {r0 r4 r7 r8}, byrefRegs=0 ; GC ptr vars +{V01} str r4, [sp+0x30] // [V03 loc0] ; GC ptr vars +{V03}
- bne G_M20848_IG31
+ bne G_M20848_IG27
;; size=20 bbWeight=0.25 PerfScore 1.75 G_M20848_IG06: ; bbWeight=0.50, gcVars=0000000000002440 {V01 V02 V03}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r4 r7] @@ -226,20 +226,16 @@ G_M20848_IG12: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs= G_M20848_IG13: ; bbWeight=0.50, gcVars=0000000000002400 {V02 V03}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[r6] ; GC ptr vars -{V01}
- str r8, [sp+0x3C] // [V00 arg0] - ; GC ptr vars +{V00}
ldr r1, [r8+0x1C] ; gcrRegs +[r1]
- ldr r8, [sp+0x3C] // [V00 arg0] - ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M20848_IG14: ; bbWeight=0.50, gcrefRegs=01D2 {r1 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V00}
mov r0, r1 ; gcrRegs +[r0] cmp r0, 0 ldr r3, [sp+0x30] // [V03 loc0] ; gcrRegs +[r3]
- beq SHORT G_M20848_IG23
+ beq SHORT G_M20848_IG21
;; size=8 bbWeight=0.50 PerfScore 2.00 G_M20848_IG15: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=01D3 {r0 r1 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r3] @@ -248,7 +244,7 @@ G_M20848_IG15: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs= movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M20848_IG32
+ bne G_M20848_IG28
;; size=16 bbWeight=0.25 PerfScore 1.25 G_M20848_IG16: ; bbWeight=0.50, gcrefRegs=01D1 {r0 r4 r6 r7 r8}, byrefRegs=0000 {}, byref ; gcrRegs -[r1] @@ -275,12 +271,12 @@ G_M20848_IG17: ; bbWeight=1, gcVars=0000000000002040 {V01 V02}, gcrefRegs ldr r12, [r7+0x04] str r12, [sp+0x40] // [V55 cse0] cmp r12, 0
- ble SHORT G_M20848_IG25
+ ble SHORT G_M20848_IG23
cmp r4, 0
- beq SHORT G_M20848_IG24
+ beq SHORT G_M20848_IG22
ldr r0, [r4+0x04] cmp r0, r12
- blt SHORT G_M20848_IG22
+ blt SHORT G_M20848_IG20
;; size=30 bbWeight=1 PerfScore 11.00 G_M20848_IG18: ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V01} @@ -301,72 +297,55 @@ G_M20848_IG18: ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs= ldr r0, [sp+0x4C] // [V45 tmp32] ; gcrRegs +[r0] cmp r0, 0
- str r8, [sp+0x3C] // [V00 arg0] - ; GC ptr vars +{V00} - beq G_M20848_IG33 - ldrsb r8, [r2] - ; gcrRegs -[r8]
+ beq SHORT G_M20848_IG29 + ldrsb r9, [r2]
str r2, [sp+0x2C] // [V11 loc8] ; GC ptr vars +{V11} str r2, [sp+0x4C] // [V45 tmp32]
- ldr r8, [sp+0x4C] // [V45 tmp32] - ; gcrRegs +[r8] - cmp r8, 0 - beq G_M20848_IG34
+ ldr r9, [sp+0x4C] // [V45 tmp32] + ; gcrRegs +[r9] + cmp r9, 0 + beq G_M20848_IG30
str r3, [sp+0x30] // [V03 loc0] ; GC ptr vars +{V03} mov r1, r3 mov r2, r6
- mov r3, r8 - movw r8, 0xd1ff - ; gcrRegs -[r8] - movt r8, 0xd1ff - ldr r8, [r8] - blx r8 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+ mov r3, r9 + movw r9, 0xd1ff + ; gcrRegs -[r9] + movt r9, 0xd1ff + ldr r9, [r9] + blx r9 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
; gcrRegs -[r0-r3] cmp r0, 0
- beq SHORT G_M20848_IG21 - ldr r8, [sp+0x48] // [V10 loc7] - add r8, r8, 1
+ beq G_M20848_IG31 + ldr r9, [sp+0x48] // [V10 loc7] + add r9, r9, 1
ldr lr, [sp+0x40] // [V55 cse0]
- cmp lr, r8
+ cmp lr, r9 + mov lr, r9
ldr r3, [sp+0x30] // [V03 loc0] ; gcrRegs +[r3]
- bgt SHORT G_M20848_IG20 - ;; size=104 bbWeight=3.96 PerfScore 138.60
+ bgt SHORT G_M20848_IG18 + ;; size=102 bbWeight=3.96 PerfScore 138.60
G_M20848_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3-r4 r6-r7] - ; GC ptr vars -{V00 V02 V03 V11 V12} - b SHORT G_M20848_IG25 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M20848_IG20: ; bbWeight=1.98, gcVars=0000000000002080 {V00 V02}, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r3-r4 r6-r7] - ; GC ptr vars +{V00 V02} - mov lr, r8 - ldr r8, [sp+0x3C] // [V00 arg0] - ; gcrRegs +[r8] - b SHORT G_M20848_IG18 - ;; size=8 bbWeight=1.98 PerfScore 5.94 -G_M20848_IG21: ; bbWeight=1.98, gcVars=0000000000002086 {V00 V02 V11 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r3-r4 r6-r8]
- ; GC ptr vars +{V01 V11 V12} - ldr r9, [sp+0x34] // [V02 arg2] - ; gcrRegs +[r9] - b SHORT G_M20848_IG35 - ;; size=6 bbWeight=1.98 PerfScore 3.96 -G_M20848_IG22: ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r9] +[r3-r4 r6-r8] - ; GC ptr vars -{V00 V01 V02 V11 V12}
+ ; GC ptr vars -{V02 V03 V11 V12} + b SHORT G_M20848_IG23 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M20848_IG20: ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r3-r4 r6-r8] + ; GC ptr vars +{V02}
ldr r12, [sp+0x40] // [V55 cse0]
- b SHORT G_M20848_IG24
+ b SHORT G_M20848_IG22
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M20848_IG23: ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M20848_IG21: ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
str r7, [sp+0x38] // [V01 arg1] ; GC ptr vars +{V01} b SHORT G_M20848_IG17 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; GC ptr vars -{V01} +{V02}
+G_M20848_IG22: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ; GC ptr vars -{V01}
add r0, r7, 8 ; byrRegs +[r0] lsl r1, lr, 2 @@ -375,7 +354,7 @@ G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg ldr r0, [r4+0x04] ; byrRegs -[r0] cmp lr, r0
- bhs SHORT G_M20848_IG29
+ bhs SHORT G_M20848_IG25
add r0, r4, 8 ; byrRegs +[r0] str lr, [sp+0x48] // [V10 loc7] @@ -390,75 +369,56 @@ G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg ldr r0, [sp+0x4C] // [V45 tmp32] ; gcrRegs +[r0] cmp r0, 0
- str r8, [sp+0x3C] // [V00 arg0] - ; GC ptr vars +{V00} - beq SHORT G_M20848_IG33 - ldrsb r8, [r2] - ; gcrRegs -[r8]
+ beq SHORT G_M20848_IG29 + ldrsb r9, [r2]
str r2, [sp+0x2C] // [V11 loc8] ; GC ptr vars +{V11} str r2, [sp+0x4C] // [V45 tmp32]
- ldr r8, [sp+0x4C] // [V45 tmp32] - ; gcrRegs +[r8] - cmp r8, 0 - beq SHORT G_M20848_IG34
+ ldr r9, [sp+0x4C] // [V45 tmp32] + ; gcrRegs +[r9] + cmp r9, 0 + beq SHORT G_M20848_IG30
str r3, [sp+0x30] // [V03 loc0] ; GC ptr vars +{V03} mov r1, r3 mov r2, r6
- mov r3, r8 - movw r8, 0xd1ff - ; gcrRegs -[r8] - movt r8, 0xd1ff - ldr r8, [r8] - blx r8 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+ mov r3, r9 + movw r9, 0xd1ff + ; gcrRegs -[r9] + movt r9, 0xd1ff + ldr r9, [r9] + blx r9 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
; gcrRegs -[r0-r3] cmp r0, 0
- beq SHORT G_M20848_IG28 - ldr r8, [sp+0x48] // [V10 loc7] - add r8, r8, 1
+ beq SHORT G_M20848_IG31 + ldr r9, [sp+0x48] // [V10 loc7] + add r9, r9, 1
ldr r0, [sp+0x40] // [V55 cse0]
- cmp r0, r8
+ cmp r0, r9
mov r12, r0
- mov lr, r8
+ mov lr, r9
ldr r3, [sp+0x30] // [V03 loc0] ; gcrRegs +[r3]
- bgt SHORT G_M20848_IG27 - ;; size=112 bbWeight=0.04 PerfScore 1.64 -G_M20848_IG25: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r3-r4 r6-r7]
...

-22 (-3.27%) : 30739.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)

@@ -8,35 +8,35 @@ ; 0 inlinees with PGO data; 31 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 6, 7 ) ref -> [sp+0x34] this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNavigator>
+; V00 this [V00,T07] ( 6, 7 ) ref -> r6 this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNavigator>
; V01 RetBuf [V01,T05] ( 16, 9 ) byref -> r5 single-def
-; V02 arg1 [V02,T01] ( 10, 12.50) byref -> [sp+0x30] single-def -; V03 arg2 [V03,T08] ( 6, 7 ) ref -> [sp+0x2C] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]> -; V04 arg3 [V04,T48] ( 1, 0.50) ubyte -> [sp+0xE0] single-def -; V05 arg4 [V05,T25] ( 4, 5 ) ref -> [sp+0xE4] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]>
+; V02 arg1 [V02,T01] ( 10, 12.50) byref -> r4 single-def +; V03 arg2 [V03,T08] ( 6, 7 ) ref -> r7 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]> +; V04 arg3 [V04,T48] ( 1, 0.50) ubyte -> [sp+0xD8] single-def +; V05 arg4 [V05,T25] ( 4, 5 ) ref -> r8 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]>
; V06 loc0 [V06,T26] ( 3, 4.50) ubyte -> r9
-; V07 loc1 [V07 ] ( 6, 3 ) struct (16) [sp+0xA8] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V07 loc1 [V07 ] ( 6, 3 ) struct (16) [sp+0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
;* V08 loc2 [V08 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator> ;* V09 loc3 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.ChildSyntaxList>
-; V10 loc4 [V10 ] ( 15, 30 ) struct (16) [sp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxNodeOrToken> -; V11 loc5 [V11 ] ( 6, 6 ) struct (16) [sp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken> -; V12 loc6 [V12 ] ( 6, 6 ) struct (16) [sp+0x78] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+; V10 loc4 [V10 ] ( 15, 30 ) struct (16) [sp+0x90] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxNodeOrToken> +; V11 loc5 [V11 ] ( 6, 6 ) struct (16) [sp+0x80] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken> +; V12 loc6 [V12 ] ( 6, 6 ) struct (16) [sp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
;* V13 loc7 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken> ; V14 OutArgs [V14 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V15 tmp1 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxToken> ;* V16 tmp2 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V17 tmp3 [V17,T39] ( 2, 2 ) struct (28) [sp+0x5C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxTriviaList>
+; V17 tmp3 [V17,T39] ( 2, 2 ) struct (28) [sp+0x54] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxTriviaList>
; V18 tmp4 [V18,T41] ( 2, 1 ) int -> r1 "Inline return value spill temp" ; V19 tmp5 [V19,T36] ( 3, 3 ) ref -> r1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.GreenNode> ;* V20 tmp6 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
-; V21 tmp7 [V21,T37] ( 3, 3 ) ref -> [sp+0x28] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
+; V21 tmp7 [V21,T37] ( 3, 3 ) ref -> [sp+0x2C] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.ChildSyntaxList> ;* V23 tmp9 [V23 ] ( 0, 0 ) struct (12) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator> ;* V24 tmp10 [V24 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator> ;* V25 tmp11 [V25 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.ChildSyntaxList+Enumerator> ;* V26 tmp12 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> ;* V27 tmp13 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V28 tmp14 [V28,T00] ( 9, 18 ) struct (16) [sp+0x4C] do-not-enreg[SA] multireg-arg must-init "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken>
+; V28 tmp14 [V28,T00] ( 9, 18 ) struct (16) [sp+0x44] do-not-enreg[SA] multireg-arg must-init "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken>
;* V29 tmp15 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V30 tmp16 [V30,T09] ( 2, 8 ) ref -> r3 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> ; V31 tmp17 [V31,T10] ( 2, 8 ) ref -> r2 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode> @@ -47,15 +47,15 @@ ; V36 tmp22 [V36,T02] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.GreenNode> ;* V37 tmp23 [V37 ] ( 0, 0 ) ref -> zero-ref ; V38 tmp24 [V38,T18] ( 3, 6 ) ref -> r2 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V39 tmp25 [V39,T22] ( 2, 4 ) int -> r1 "Inline return value spill temp" -; V40 tmp26 [V40,T03] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.GreenNode>
+; V39 tmp25 [V39,T22] ( 2, 4 ) int -> r2 "Inline return value spill temp" +; V40 tmp26 [V40,T03] ( 3, 12 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.GreenNode>
;* V41 tmp27 [V41 ] ( 0, 0 ) ref -> zero-ref ;* V42 tmp28 [V42 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V43 tmp29 [V43 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken>
-; V44 tmp30 [V44,T11] ( 2, 8 ) ref -> r1 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
+; V44 tmp30 [V44,T11] ( 2, 8 ) ref -> r2 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
; V45 tmp31 [V45,T12] ( 2, 8 ) ref -> r0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode> ;* V46 tmp32 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxToken>
-; V47 tmp33 [V47,T15] ( 2, 8 ) int -> r2 "Inlining Arg"
+; V47 tmp33 [V47,T15] ( 2, 8 ) int -> r1 "Inlining Arg"
; V48 tmp34 [V48,T16] ( 2, 8 ) int -> r3 "Inlining Arg" ;* V49 tmp35 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxToken> ;* V50 tmp36 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxToken> @@ -67,27 +67,27 @@ ;* V56 tmp42 [V56 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V57 tmp43 [V57,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V58 tmp44 [V58,T04] ( 3, 12 ) int -> r12 "Inline stloc first use temp"
-; V59 tmp45 [V59 ] ( 2, 1 ) ref -> [sp+0xA8] do-not-enreg[X] addr-exposed "field V07.<Parent>k__BackingField (fldOffset=0x0)" P-DEP -; V60 tmp46 [V60 ] ( 3, 1.50) ref -> [sp+0xAC] do-not-enreg[X] addr-exposed "field V07.<Node>k__BackingField (fldOffset=0x4)" P-DEP -; V61 tmp47 [V61 ] ( 2, 1 ) int -> [sp+0xB0] do-not-enreg[X] addr-exposed "field V07.<Index>k__BackingField (fldOffset=0x8)" P-DEP -; V62 tmp48 [V62 ] ( 2, 1 ) int -> [sp+0xB4] do-not-enreg[X] addr-exposed "field V07.<Position>k__BackingField (fldOffset=0xc)" P-DEP -; V63 tmp49 [V63,T38] ( 2, 2.50) ref -> [sp+0x24] spill-single-def "field V08._node (fldOffset=0x0)" P-INDEP -; V64 tmp50 [V64,T27] ( 2, 4.50) int -> [sp+0x48] spill-single-def "field V08._count (fldOffset=0x4)" P-INDEP -; V65 tmp51 [V65,T06] ( 4, 10.50) int -> [sp+0x44] "field V08._childIndex (fldOffset=0x8)" P-INDEP
+; V59 tmp45 [V59 ] ( 2, 1 ) ref -> [sp+0xA0] do-not-enreg[X] addr-exposed "field V07.<Parent>k__BackingField (fldOffset=0x0)" P-DEP +; V60 tmp46 [V60 ] ( 3, 1.50) ref -> [sp+0xA4] do-not-enreg[X] addr-exposed "field V07.<Node>k__BackingField (fldOffset=0x4)" P-DEP +; V61 tmp47 [V61 ] ( 2, 1 ) int -> [sp+0xA8] do-not-enreg[X] addr-exposed "field V07.<Index>k__BackingField (fldOffset=0x8)" P-DEP +; V62 tmp48 [V62 ] ( 2, 1 ) int -> [sp+0xAC] do-not-enreg[X] addr-exposed "field V07.<Position>k__BackingField (fldOffset=0xc)" P-DEP +; V63 tmp49 [V63,T38] ( 2, 2.50) ref -> [sp+0x28] spill-single-def "field V08._node (fldOffset=0x0)" P-INDEP +; V64 tmp50 [V64,T27] ( 2, 4.50) int -> [sp+0x40] spill-single-def "field V08._count (fldOffset=0x4)" P-INDEP +; V65 tmp51 [V65,T06] ( 4, 10.50) int -> [sp+0x3C] "field V08._childIndex (fldOffset=0x8)" P-INDEP
;* V66 tmp52 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._node (fldOffset=0x0)" P-INDEP ;* V67 tmp53 [V67 ] ( 0, 0 ) int -> zero-ref single-def "field V09._count (fldOffset=0x4)" P-INDEP
-; V68 tmp54 [V68 ] ( 4, 8 ) ref -> [sp+0x98] do-not-enreg[X] addr-exposed "field V10._nodeOrParent (fldOffset=0x0)" P-DEP -; V69 tmp55 [V69 ] ( 6, 12 ) ref -> [sp+0x9C] do-not-enreg[X] addr-exposed "field V10._token (fldOffset=0x4)" P-DEP -; V70 tmp56 [V70 ] ( 3, 6 ) int -> [sp+0xA0] do-not-enreg[X] addr-exposed "field V10._position (fldOffset=0x8)" P-DEP -; V71 tmp57 [V71 ] ( 5, 10 ) int -> [sp+0xA4] do-not-enreg[X] addr-exposed "field V10._tokenIndex (fldOffset=0xc)" P-DEP -; V72 tmp58 [V72 ] ( 2, 2.50) ref -> [sp+0x88] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP -; V73 tmp59 [V73 ] ( 3, 4.50) ref -> [sp+0x8C] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x4)" P-DEP -; V74 tmp60 [V74 ] ( 2, 2.50) int -> [sp+0x90] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x8)" P-DEP -; V75 tmp61 [V75 ] ( 2, 2.50) int -> [sp+0x94] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0xc)" P-DEP -; V76 tmp62 [V76 ] ( 2, 2.50) ref -> [sp+0x78] do-not-enreg[X] addr-exposed "field V12.<Parent>k__BackingField (fldOffset=0x0)" P-DEP -; V77 tmp63 [V77 ] ( 3, 4.50) ref -> [sp+0x7C] do-not-enreg[X] addr-exposed "field V12.<Node>k__BackingField (fldOffset=0x4)" P-DEP -; V78 tmp64 [V78 ] ( 2, 2.50) int -> [sp+0x80] do-not-enreg[X] addr-exposed "field V12.<Index>k__BackingField (fldOffset=0x8)" P-DEP -; V79 tmp65 [V79 ] ( 2, 2.50) int -> [sp+0x84] do-not-enreg[X] addr-exposed "field V12.<Position>k__BackingField (fldOffset=0xc)" P-DEP
+; V68 tmp54 [V68 ] ( 4, 8 ) ref -> [sp+0x90] do-not-enreg[X] addr-exposed "field V10._nodeOrParent (fldOffset=0x0)" P-DEP +; V69 tmp55 [V69 ] ( 6, 12 ) ref -> [sp+0x94] do-not-enreg[X] addr-exposed "field V10._token (fldOffset=0x4)" P-DEP +; V70 tmp56 [V70 ] ( 3, 6 ) int -> [sp+0x98] do-not-enreg[X] addr-exposed "field V10._position (fldOffset=0x8)" P-DEP +; V71 tmp57 [V71 ] ( 5, 10 ) int -> [sp+0x9C] do-not-enreg[X] addr-exposed "field V10._tokenIndex (fldOffset=0xc)" P-DEP +; V72 tmp58 [V72 ] ( 2, 2.50) ref -> [sp+0x80] do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP +; V73 tmp59 [V73 ] ( 3, 4.50) ref -> [sp+0x84] do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x4)" P-DEP +; V74 tmp60 [V74 ] ( 2, 2.50) int -> [sp+0x88] do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x8)" P-DEP +; V75 tmp61 [V75 ] ( 2, 2.50) int -> [sp+0x8C] do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0xc)" P-DEP +; V76 tmp62 [V76 ] ( 2, 2.50) ref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V12.<Parent>k__BackingField (fldOffset=0x0)" P-DEP +; V77 tmp63 [V77 ] ( 3, 4.50) ref -> [sp+0x74] do-not-enreg[X] addr-exposed "field V12.<Node>k__BackingField (fldOffset=0x4)" P-DEP +; V78 tmp64 [V78 ] ( 2, 2.50) int -> [sp+0x78] do-not-enreg[X] addr-exposed "field V12.<Index>k__BackingField (fldOffset=0x8)" P-DEP +; V79 tmp65 [V79 ] ( 2, 2.50) int -> [sp+0x7C] do-not-enreg[X] addr-exposed "field V12.<Position>k__BackingField (fldOffset=0xc)" P-DEP
;* V80 tmp66 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._node (fldOffset=0x0)" P-INDEP ; V81 tmp67 [V81,T44] ( 2, 1 ) int -> r0 single-def "field V22._count (fldOffset=0x4)" P-INDEP ; V82 tmp68 [V82,T42] ( 2, 1 ) ref -> r3 "field V23._node (fldOffset=0x0)" P-INDEP @@ -111,25 +111,25 @@ ;* V100 tmp86 [V100 ] ( 0, 0 ) ref -> zero-ref "field V49.<Node>k__BackingField (fldOffset=0x4)" P-INDEP ;* V101 tmp87 [V101 ] ( 0, 0 ) int -> zero-ref "field V49.<Index>k__BackingField (fldOffset=0x8)" P-INDEP ;* V102 tmp88 [V102 ] ( 0, 0 ) int -> zero-ref "field V49.<Position>k__BackingField (fldOffset=0xc)" P-INDEP
-; V103 tmp89 [V103,T30] ( 2, 4 ) ref -> r6 "field V52.<Parent>k__BackingField (fldOffset=0x0)" P-INDEP
+; V103 tmp89 [V103,T30] ( 2, 4 ) ref -> [sp+0x24] spill-single-def "field V52.<Parent>k__BackingField (fldOffset=0x0)" P-INDEP
; V104 tmp90 [V104,T31] ( 2, 4 ) ref -> [sp+0x20] "field V52.<Node>k__BackingField (fldOffset=0x4)" P-INDEP
-; V105 tmp91 [V105,T34] ( 2, 4 ) int -> [sp+0x40] "field V52.<Index>k__BackingField (fldOffset=0x8)" P-INDEP -; V106 tmp92 [V106,T35] ( 2, 4 ) int -> [sp+0x3C] "field V52.<Position>k__BackingField (fldOffset=0xc)" P-INDEP -; V107 tmp93 [V107,T19] ( 3, 6 ) ref -> r1 "V42.[000..004)"
+; V105 tmp91 [V105,T34] ( 2, 4 ) int -> [sp+0x38] "field V52.<Index>k__BackingField (fldOffset=0x8)" P-INDEP +; V106 tmp92 [V106,T35] ( 2, 4 ) int -> [sp+0x34] "field V52.<Position>k__BackingField (fldOffset=0xc)" P-INDEP +; V107 tmp93 [V107,T19] ( 3, 6 ) ref -> r2 "V42.[000..004)"
; V108 tmp94 [V108,T20] ( 3, 6 ) ref -> r0 "V42.[004..008)"
-; V109 tmp95 [V109,T23] ( 3, 6 ) int -> [sp+0x38] "V42.[008..012)"
+; V109 tmp95 [V109,T23] ( 3, 6 ) int -> [sp+0x30] "V42.[008..012)"
; V110 tmp96 [V110,T24] ( 3, 6 ) int -> registers "V42.[012..016)" ;* V111 tmp97 [V111 ] ( 0, 0 ) ref -> zero-ref "V43.[000..004)" ;* V112 tmp98 [V112 ] ( 0, 0 ) ref -> zero-ref "V43.[004..008)" ;* V113 tmp99 [V113 ] ( 0, 0 ) int -> zero-ref "V43.[008..012)" ;* V114 tmp100 [V114 ] ( 0, 0 ) int -> zero-ref "V43.[012..016)" ;
-; Lcl frame size = 188
+; Lcl frame size = 180
G_M12762_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 188 - add r11, sp, 216
+ sub sp, 180 + add r11, sp, 208
sub r6, r11, 140 movs r7, 13 movs r4, 0 @@ -146,7 +146,7 @@ G_M12762_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r4] mov r7, r3 ; gcrRegs +[r7]
- ldr r8, [sp+0xE4] // [V05 arg4]
+ ldr r8, [sp+0xDC] // [V05 arg4]
; gcrRegs +[r8] ;; size=40 bbWeight=1 PerfScore 16.00 G_M12762_IG02: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 {r4 r5}, byref, isz @@ -157,10 +157,10 @@ G_M12762_IG02: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 {r ;; size=8 bbWeight=1 PerfScore 3.00 G_M12762_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 {r4 r5}, byref, isz ; gcrRegs -[r1]
- ldrb r1, [sp+0xE0]
+ ldrb r1, [sp+0xD8]
cmp r1, 0 beq SHORT G_M12762_IG04
- add r1, sp, 92
+ add r1, sp, 84
mov r0, r4 ; byrRegs +[r0] movw r3, 0xd1ff @@ -170,22 +170,22 @@ G_M12762_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 ; byrRegs -[r0] str r7, [sp+0x14] str r8, [sp+0x18]
- ldr r2, [sp+0x64]
+ ldr r2, [sp+0x5C]
str r2, [sp]
- ldr r2, [sp+0x68]
+ ldr r2, [sp+0x60]
; gcrRegs +[r2] str r2, [sp+0x04]
- ldr r2, [sp+0x6C]
+ ldr r2, [sp+0x64]
str r2, [sp+0x08]
- ldr r2, [sp+0x70]
+ ldr r2, [sp+0x68]
; gcrRegs -[r2] str r2, [sp+0x0C]
- ldr r2, [sp+0x74]
+ ldr r2, [sp+0x6C]
str r2, [sp+0x10]
- ldr r2, [sp+0x5C]
+ ldr r2, [sp+0x54]
; gcrRegs +[r2]
- ldr r3, [sp+0x60] - add r1, sp, 168
+ ldr r3, [sp+0x58] + add r1, sp, 160
mov r0, r6 ; gcrRegs +[r0] movw lr, 0xd1ff @@ -193,7 +193,7 @@ G_M12762_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 ldr lr, [lr] blx lr // Microsoft.CodeAnalysis.SyntaxNavigator:GetFirstToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this ; gcrRegs -[r0 r2]
- ldr r1, [sp+0xAC]
+ ldr r1, [sp+0xA4]
; gcrRegs +[r1] cmp r1, 0 beq SHORT G_M12762_IG04 @@ -201,7 +201,7 @@ G_M12762_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 ; gcrRegs -[r1] cmp r1, 0 beq SHORT G_M12762_IG04
- ldr r1, [sp+0xA8]
+ ldr r1, [sp+0xA0]
; gcrRegs +[r1] mov r0, r5 ; byrRegs +[r0] @@ -212,16 +212,16 @@ G_M12762_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 ; byrRegs -[r0 r4] adds r0, r5, 4 ; byrRegs +[r0]
- ldr r1, [sp+0xAC]
+ ldr r1, [sp+0xA4]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [sp+0xB0]
+ ldr r0, [sp+0xA8]
str r0, [r5+0x08]
- ldr r0, [sp+0xB4]
+ ldr r0, [sp+0xAC]
str r0, [r5+0x0C] b SHORT G_M12762_IG23 ;; size=122 bbWeight=0.50 PerfScore 25.00 @@ -231,7 +231,7 @@ G_M12762_IG04: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 mov r9, 0 ldr r3, [r4] ; gcrRegs +[r3]
- str r3, [sp+0x28]
+ str r3, [sp+0x2C]
; GC ptr vars +{V21} ldr r0, [r3+0x0C] ; gcrRegs +[r0] @@ -240,21 +240,21 @@ G_M12762_IG04: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 ...

+20 (+50.00%) : 20716.dasm - System.Collections.Immutable.ImmutableHashSet1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)

@@ -17,13 +17,13 @@ ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V02._firstValue (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r0 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP -;* V10 cse0 [V10,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V11 rat0 [V11,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V09 tmp6 [V09,T06] ( 3, 2.50) ref -> r3 single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP +; V10 cse0 [V10,T05] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V11 rat0 [V11,T04] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T00] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
;* V14 rat3 [V14,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V15 rat4 [V15,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T01] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -37,19 +37,31 @@ G_M10050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 5.00 G_M10050_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4]
- ldr r0, [sp+0x1C] - ; gcrRegs +[r0]
+ mov r3, r0 + ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x08] + cmp r3, 0 + ldr r3, [sp+0x1C] + ; gcrRegs +[r3] + ldr r0, [r0+0x24] + ldr r0, [r0] + ldr r0, [r0+0x0C]
cmp r0, 0
+ cmp r3, 0
beq SHORT G_M10050_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=1 PerfScore 13.00 +G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref + mov r0, r3 + ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:Freeze():this ; gcrRegs -[r0] ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc add sp, 12 pop {r4,lr} @@ -57,7 +69,7 @@ G_M10050_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 40, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 40 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 24.50, instruction count 27, allocated bytes for code 60 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+18 (+50.00%) : 37044.dasm - System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[int,System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[int,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) int -> r1 single-def ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -23,21 +23,28 @@ ; V12 tmp9 [V12,T05] ( 2, 2 ) int -> r2 "field V06.key (fldOffset=0x4)" P-INDEP ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref "field V10.value (fldOffset=0x0)" P-INDEP ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V10.key (fldOffset=0x4)" P-INDEP
-;* V15 rat0 [V15,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V15 rat0 [V15,T03] ( 2, 4 ) int -> r2 "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V17 rat2 [V17,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V17 rat2 [V17,T01] ( 2, 4 ) int -> r2 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M53116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8
+ push {r4,r11,lr} + sub sp, 12 + add r11, sp, 16 + str r0, [r11-0x0C]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M53116_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r0, [r4+0x0C] ; gcrRegs +[r0]
+ ldr r2, [r4] + ldr r2, [r2+0x24] + ldr r2, [r2] + ldr r2, [r2+0x0C] + cmp r2, 0
mov r2, r1 movs r1, 0 movw r3, 0xd1ff @@ -46,12 +53,13 @@ G_M53116_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr lr, [r0] blx r3 // <unknown method> ; gcrRegs -[r0]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 13.00
G_M53116_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12 + pop {r4,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=a8373083) for method System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
+; Total bytes of code 54, prolog size 14, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=a8373083) for method System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -63,11 +71,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32 - FF end
+ 03 add sp, sp, #12 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
FF end

+8 (+66.67%) : 19054.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (FullOpts)

@@ -15,9 +15,9 @@ ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.m_task (fldOffset=0x0)" P-INDEP
-;* V07 rat0 [V07,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 4 ) int -> r3 "Spilling to split statement for tree"
;* V08 rat1 [V08,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 4 ) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 12 @@ -29,13 +29,17 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M9200_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ldr r3, [r3+0x24] + ldr r3, [r3] + ldr r3, [r3+0x10] + cmp r3, 0 + ;; size=10 bbWeight=1 PerfScore 5.00
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 12 pop {pc} ;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 12, prolog size 6, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 20, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 20 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -47,7 +51,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 430 60 296 74 -562 +3,748
benchmarks.run_pgo.linux.arm.checked.mch 823 95 626 102 -722 +6,836
benchmarks.run_tiered.linux.arm.checked.mch 404 58 268 78 -474 +3,462
coreclr_tests.run.linux.arm.checked.mch 2,492 296 1,567 629 -2,904 +21,368
libraries.crossgen2.linux.arm.checked.mch 724 140 236 348 -1,238 +1,844
libraries.pmi.linux.arm.checked.mch 1,964 221 1,314 429 -1,886 +14,598
libraries_tests.run.linux.arm.Release.mch 10,041 1,952 5,438 2,651 -24,428 +71,004
librariestestsnotieredcompilation.run.linux.arm.Release.mch 2,267 323 1,422 522 -3,252 +16,282
realworld.run.linux.arm.checked.mch 523 74 340 109 -804 +4,168
19,668 3,219 11,507 4,942 -36,270 +143,310

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,977 5,279 40,698 1,423 (3.00%) 1,423 (3.00%)
benchmarks.run_pgo.linux.arm.checked.mch 159,274 58,093 101,181 3,553 (2.18%) 3,553 (2.18%)
benchmarks.run_tiered.linux.arm.checked.mch 71,355 38,077 33,278 1,124 (1.55%) 1,124 (1.55%)
coreclr_tests.run.linux.arm.checked.mch 471,423 259,093 212,330 7,618 (1.59%) 7,618 (1.59%)
libraries.crossgen2.linux.arm.checked.mch 195,441 14 195,427 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 269,967 6 269,961 9,462 (3.39%) 9,462 (3.39%)
libraries_tests.run.linux.arm.Release.mch 708,260 442,850 265,410 17,521 (2.41%) 17,521 (2.41%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 272,764 21,565 251,199 35,091 (11.40%) 35,091 (11.40%)
realworld.run.linux.arm.checked.mch 36,070 153 35,917 1,734 (4.59%) 1,734 (4.59%)
2,230,531 825,130 1,405,401 77,526 (3.36%) 77,526 (3.36%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15058218 (overridden on cmd)
Total bytes of diff: 15061404 (overridden on cmd)
Total bytes of delta: 3186 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         188 : 24666.dasm (3.01 % of base)
         108 : 18542.dasm (7.01 % of base)
          50 : 13384.dasm (17.12 % of base)
          50 : 24752.dasm (4.71 % of base)
          50 : 17745.dasm (28.09 % of base)
          48 : 24860.dasm (2.59 % of base)
          46 : 17964.dasm (2.82 % of base)
          40 : 24903.dasm (3.81 % of base)
          36 : 14110.dasm (4.97 % of base)
          36 : 46979.dasm (7.41 % of base)
          36 : 8701.dasm (14.29 % of base)
          34 : 41023.dasm (13.49 % of base)
          32 : 7537.dasm (13.33 % of base)
          30 : 26769.dasm (1.83 % of base)
          30 : 3455.dasm (3.07 % of base)
          30 : 46888.dasm (2.12 % of base)
          30 : 5265.dasm (3.31 % of base)
          30 : 6202.dasm (5.26 % of base)
          28 : 15080.dasm (0.37 % of base)
          28 : 17412.dasm (0.55 % of base)

Top file improvements (bytes):
         -76 : 39258.dasm (-1.58 % of base)
         -30 : 3423.dasm (-5.77 % of base)
         -28 : 14509.dasm (-2.22 % of base)
         -26 : 4278.dasm (-1.59 % of base)
         -26 : 22196.dasm (-2.30 % of base)
         -24 : 24904.dasm (-1.06 % of base)
         -20 : 7118.dasm (-6.45 % of base)
         -18 : 7145.dasm (-0.62 % of base)
         -18 : 41801.dasm (-4.46 % of base)
         -16 : 6703.dasm (-1.24 % of base)
         -16 : 24954.dasm (-0.86 % of base)
         -14 : 40126.dasm (-4.24 % of base)
         -12 : 34065.dasm (-4.62 % of base)
         -12 : 19228.dasm (-0.36 % of base)
         -12 : 7095.dasm (-0.55 % of base)
         -12 : 15628.dasm (-0.64 % of base)
         -10 : 22198.dasm (-1.08 % of base)
         -10 : 25278.dasm (-1.44 % of base)
          -8 : 46554.dasm (-0.75 % of base)
          -8 : 14134.dasm (-0.56 % of base)

74 total files with Code Size differences (27 improved, 47 regressed), 20 unchanged.

Top method regressions (bytes):
         188 (3.01 % of base) : 24666.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)
         108 (7.01 % of base) : 18542.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
          50 (4.71 % of base) : 24752.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          50 (17.12 % of base) : 13384.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (FullOpts)
          50 (28.09 % of base) : 17745.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (FullOpts)
          48 (2.59 % of base) : 24860.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
          46 (2.82 % of base) : 17964.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          40 (3.81 % of base) : 24903.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
          36 (4.97 % of base) : 14110.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (FullOpts)
          36 (14.29 % of base) : 8701.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:EnqueueDequeue(System.__Canon,System.__Canon):System.__Canon:this (FullOpts)
          36 (7.41 % of base) : 46979.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (FullOpts)
          34 (13.49 % of base) : 41023.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:RemoveAt(int):this (FullOpts)
          32 (13.33 % of base) : 7537.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:TryGetValue(int,byref):ubyte:this (FullOpts)
          30 (1.83 % of base) : 26769.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          30 (2.12 % of base) : 46888.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
          30 (5.26 % of base) : 6202.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (FullOpts)
          30 (3.07 % of base) : 3455.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (FullOpts)
          30 (3.31 % of base) : 5265.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
          28 (0.37 % of base) : 15080.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
          28 (26.92 % of base) : 10188.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (FullOpts)

Top method improvements (bytes):
         -76 (-1.58 % of base) : 39258.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int) (FullOpts)
         -30 (-5.77 % of base) : 3423.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -28 (-2.22 % of base) : 14509.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
         -26 (-2.30 % of base) : 22196.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -26 (-1.59 % of base) : 4278.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -24 (-1.06 % of base) : 24904.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 (FullOpts)
         -20 (-6.45 % of base) : 7118.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -18 (-4.46 % of base) : 41801.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (FullOpts)
         -18 (-0.62 % of base) : 7145.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
         -16 (-0.86 % of base) : 24954.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)
         -16 (-1.24 % of base) : 6703.dasm - System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonPolymorphismOptions,System.Type,ubyte):this (FullOpts)
         -14 (-4.24 % of base) : 40126.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (FullOpts)
         -12 (-4.62 % of base) : 34065.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (FullOpts)
         -12 (-0.64 % of base) : 15628.dasm - System.Enum:FormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint):System.String (FullOpts)
         -12 (-0.36 % of base) : 19228.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
         -12 (-0.55 % of base) : 7095.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 (FullOpts)
         -10 (-1.08 % of base) : 22198.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
         -10 (-1.44 % of base) : 25278.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (FullOpts)
          -8 (-0.75 % of base) : 46554.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
          -8 (-0.56 % of base) : 14134.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)

Top method regressions (percentages):
          24 (54.55 % of base) : 13586.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          20 (50.00 % of base) : 3408.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
          20 (50.00 % of base) : 16768.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          16 (47.06 % of base) : 24763.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
          24 (40.00 % of base) : 40259.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:Clear():this (FullOpts)
          14 (33.33 % of base) : 11192.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (FullOpts)
           8 (33.33 % of base) : 24682.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          50 (28.09 % of base) : 17745.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (FullOpts)
          28 (26.92 % of base) : 10188.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (FullOpts)
          18 (24.32 % of base) : 13203.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          24 (22.22 % of base) : 8699.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Enqueue(System.__Canon,System.__Canon):this (FullOpts)
          12 (22.22 % of base) : 1915.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (FullOpts)
          18 (21.95 % of base) : 13072.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (FullOpts)
          18 (21.43 % of base) : 18402.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (FullOpts)
          12 (21.43 % of base) : 2457.dasm - System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this (FullOpts)
           8 (21.05 % of base) : 25010.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,uint]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
           8 (21.05 % of base) : 41929.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (FullOpts)
           8 (21.05 % of base) : 31204.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableQueue`1+Enumerator[System.__Canon]:this (FullOpts)
          20 (20.83 % of base) : 24325.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (FullOpts)
           8 (20.00 % of base) : 1723.dasm - System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
         -20 (-6.45 % of base) : 7118.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -30 (-5.77 % of base) : 3423.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -12 (-4.62 % of base) : 34065.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (FullOpts)
         -18 (-4.46 % of base) : 41801.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (FullOpts)
         -14 (-4.24 % of base) : 40126.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (FullOpts)
          -4 (-2.67 % of base) : 7783.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddUniqueStatus(System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (FullOpts)
          -4 (-2.56 % of base) : 10541.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -26 (-2.30 % of base) : 22196.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -28 (-2.22 % of base) : 14509.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
         -26 (-1.59 % of base) : 4278.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -76 (-1.58 % of base) : 39258.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int) (FullOpts)
         -10 (-1.44 % of base) : 25278.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (FullOpts)
         -16 (-1.24 % of base) : 6703.dasm - System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonPolymorphismOptions,System.Type,ubyte):this (FullOpts)
          -6 (-1.21 % of base) : 6066.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -10 (-1.08 % of base) : 22198.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
         -24 (-1.06 % of base) : 24904.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 (FullOpts)
          -2 (-0.95 % of base) : 45733.dasm - System.SpanHelpers:NonPackedContainsValueType[int](byref,int,int):ubyte (FullOpts)
         -16 (-0.86 % of base) : 24954.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)
          -4 (-0.82 % of base) : 45901.dasm - Benchstone.BenchI.Array2:VerifyCopy(int[][][],int[][][]):ubyte (FullOpts)
          -8 (-0.75 % of base) : 46554.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63288040 (overridden on cmd)
Total bytes of diff: 63294154 (overridden on cmd)
Total bytes of delta: 6114 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         206 : 88201.dasm (3.22 % of base)
         108 : 64079.dasm (7.01 % of base)
         102 : 105568.dasm (2.54 % of base)
          50 : 36207.dasm (17.12 % of base)
          50 : 88381.dasm (4.71 % of base)
          48 : 90545.dasm (1.09 % of base)
          46 : 60102.dasm (2.82 % of base)
          40 : 88727.dasm (3.81 % of base)
          36 : 160516.dasm (7.41 % of base)
          36 : 45091.dasm (4.97 % of base)
          32 : 130140.dasm (9.36 % of base)
          32 : 26305.dasm (13.33 % of base)
          30 : 158661.dasm (2.12 % of base)
          30 : 19516.dasm (3.32 % of base)
          30 : 93763.dasm (1.83 % of base)
          30 : 98732.dasm (0.67 % of base)
          28 : 45747.dasm (26.42 % of base)
          28 : 66457.dasm (26.42 % of base)
          28 : 76097.dasm (26.42 % of base)
          28 : 134139.dasm (0.35 % of base)

Top file improvements (bytes):
         -30 : 13907.dasm (-5.77 % of base)
         -28 : 42150.dasm (-2.41 % of base)
         -26 : 85171.dasm (-2.30 % of base)
         -24 : 88731.dasm (-1.06 % of base)
         -22 : 88863.dasm (-1.15 % of base)
         -20 : 25326.dasm (-6.45 % of base)
         -18 : 139357.dasm (-4.46 % of base)
         -18 : 16764.dasm (-0.62 % of base)
         -18 : 98415.dasm (-0.51 % of base)
         -16 : 1011.dasm (-8.99 % of base)
         -16 : 107031.dasm (-2.00 % of base)
         -16 : 93282.dasm (-6.72 % of base)
         -16 : 45855.dasm (-0.84 % of base)
         -16 : 52592.dasm (-0.84 % of base)
         -16 : 88747.dasm (-0.82 % of base)
         -16 : 160238.dasm (-0.84 % of base)
         -16 : 89428.dasm (-2.00 % of base)
         -14 : 134734.dasm (-4.24 % of base)
         -14 : 46516.dasm (-0.92 % of base)
         -14 : 76895.dasm (-1.59 % of base)

79 total files with Code Size differences (32 improved, 47 regressed), 20 unchanged.

Top method regressions (bytes):
         206 (3.22 % of base) : 88201.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 (Tier0-FullOpts)
         108 (7.01 % of base) : 64079.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier0-FullOpts)
         102 (2.54 % of base) : 105568.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetOrAdd(int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]],ubyte,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
          50 (4.71 % of base) : 88381.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
          50 (17.12 % of base) : 36207.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier0-FullOpts)
          48 (1.09 % of base) : 90545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol,System.Reflection.Metadata.PropertyDefinitionHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):this (Tier1)
          46 (2.82 % of base) : 60102.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          40 (3.81 % of base) : 88727.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
          36 (4.97 % of base) : 45091.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (Tier0-FullOpts)
          36 (7.41 % of base) : 160516.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (Tier0-FullOpts)
          32 (13.33 % of base) : 26305.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:TryGetValue(int,byref):ubyte:this (Tier0-FullOpts)
          32 (9.36 % of base) : 130140.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Enqueue(System.__Canon,System.__Canon):this (Tier1)
          30 (1.83 % of base) : 93763.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          30 (2.12 % of base) : 158661.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
          30 (0.67 % of base) : 98732.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
          30 (3.32 % of base) : 19516.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          28 (0.37 % of base) : 46735.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (Tier0-FullOpts)
          28 (0.35 % of base) : 134139.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
          28 (26.42 % of base) : 45747.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)
          28 (26.42 % of base) : 66457.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)

Top method improvements (bytes):
         -30 (-5.77 % of base) : 13907.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -28 (-2.41 % of base) : 42150.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -26 (-2.30 % of base) : 85171.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
         -24 (-1.06 % of base) : 88731.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 (Tier0-FullOpts)
         -22 (-1.15 % of base) : 88863.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) (Tier0-FullOpts)
         -20 (-6.45 % of base) : 25326.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
         -18 (-4.46 % of base) : 139357.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (Tier0-FullOpts)
         -18 (-0.51 % of base) : 98415.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:<VisitCall>g__visitArgumentsAndFinishRewrite|145_0(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -18 (-0.62 % of base) : 16764.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
         -16 (-0.82 % of base) : 88747.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:BuildReferencedAssembliesAndModulesMaps(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],int,int,System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon],ubyte,byref,byref,byref,byref) (Tier0-FullOpts)
         -16 (-6.72 % of base) : 93282.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
         -16 (-2.00 % of base) : 107031.dasm - Roslyn.Utilities.StringTable:AddSharedUtf8(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
         -16 (-2.00 % of base) : 89428.dasm - Roslyn.Utilities.StringTable:AddSharedUtf8(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
         -16 (-8.99 % of base) : 1011.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
         -16 (-0.84 % of base) : 45855.dasm - System.Uri:CreateUri(System.Uri,System.String,ubyte):this (Tier1)
         -16 (-0.84 % of base) : 52592.dasm - System.Uri:CreateUri(System.Uri,System.String,ubyte):this (Tier1)
         -16 (-0.84 % of base) : 160238.dasm - System.Uri:CreateUri(System.Uri,System.String,ubyte):this (Tier1)
         -14 (-4.24 % of base) : 134734.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (Tier0-FullOpts)
         -14 (-1.59 % of base) : 76895.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
         -14 (-0.92 % of base) : 46516.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (Tier0-FullOpts)

Top method regressions (percentages):
          24 (54.55 % of base) : 29620.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
          20 (50.00 % of base) : 73597.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          16 (42.11 % of base) : 97492.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
           8 (33.33 % of base) : 89226.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
          18 (26.47 % of base) : 40003.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
          28 (26.42 % of base) : 45747.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)
          28 (26.42 % of base) : 66457.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)
          28 (26.42 % of base) : 76097.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)
           8 (23.53 % of base) : 50042.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.__Canon):this (Tier1)
          24 (23.08 % of base) : 13977.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
          12 (22.22 % of base) : 124344.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 151707.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 56535.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 63772.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 112291.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 72624.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 75300.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 97715.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 116316.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (22.22 % of base) : 45455.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)

Top method improvements (percentages):
         -16 (-8.99 % of base) : 1011.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
         -16 (-6.72 % of base) : 93282.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
         -20 (-6.45 % of base) : 25326.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
         -30 (-5.77 % of base) : 13907.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -12 (-4.62 % of base) : 121414.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (Tier0-FullOpts)
          -8 (-4.55 % of base) : 4847.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(uint,System.Object):System.Object (Tier1)
         -18 (-4.46 % of base) : 139357.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (Tier0-FullOpts)
          -8 (-4.40 % of base) : 151858.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 110816.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -14 (-4.24 % of base) : 134734.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (Tier0-FullOpts)
          -8 (-3.20 % of base) : 61004.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
          -6 (-2.86 % of base) : 360.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -4 (-2.67 % of base) : 26883.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddUniqueStatus(System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (Tier0-FullOpts)
         -28 (-2.41 % of base) : 42150.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -26 (-2.30 % of base) : 85171.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
         -16 (-2.00 % of base) : 107031.dasm - Roslyn.Utilities.StringTable:AddSharedUtf8(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
         -16 (-2.00 % of base) : 89428.dasm - Roslyn.Utilities.StringTable:AddSharedUtf8(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
         -14 (-1.59 % of base) : 76895.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
         -10 (-1.44 % of base) : 89697.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier0-FullOpts)
          -6 (-1.20 % of base) : 14613.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 17396558 (overridden on cmd)
Total bytes of diff: 17399546 (overridden on cmd)
Total bytes of delta: 2988 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         188 : 44601.dasm (3.01 % of base)
         108 : 34548.dasm (7.01 % of base)
          50 : 33361.dasm (28.09 % of base)
          50 : 26023.dasm (17.12 % of base)
          50 : 44769.dasm (4.71 % of base)
          48 : 44952.dasm (2.59 % of base)
          46 : 34611.dasm (2.82 % of base)
          40 : 45061.dasm (3.81 % of base)
          36 : 16516.dasm (14.29 % of base)
          36 : 71732.dasm (7.41 % of base)
          36 : 26357.dasm (4.97 % of base)
          34 : 64128.dasm (13.49 % of base)
          32 : 14290.dasm (13.33 % of base)
          30 : 20417.dasm (3.32 % of base)
          30 : 72029.dasm (2.12 % of base)
          30 : 11708.dasm (3.07 % of base)
          30 : 49322.dasm (1.83 % of base)
          28 : 27180.dasm (26.92 % of base)
          28 : 29323.dasm (0.37 % of base)
          28 : 62824.dasm (0.35 % of base)

Top file improvements (bytes):
         -30 : 10372.dasm (-5.77 % of base)
         -28 : 29254.dasm (-2.22 % of base)
         -26 : 9905.dasm (-1.59 % of base)
         -26 : 42019.dasm (-2.30 % of base)
         -24 : 45072.dasm (-1.06 % of base)
         -20 : 13085.dasm (-6.45 % of base)
         -18 : 11805.dasm (-0.62 % of base)
         -18 : 64842.dasm (-4.46 % of base)
         -16 : 45245.dasm (-0.86 % of base)
         -16 : 7816.dasm (-1.24 % of base)
         -14 : 62782.dasm (-4.24 % of base)
         -12 : 37598.dasm (-0.36 % of base)
         -12 : 59283.dasm (-4.62 % of base)
         -12 : 13058.dasm (-0.55 % of base)
         -10 : 45940.dasm (-1.44 % of base)
         -10 : 42021.dasm (-1.08 % of base)
          -8 : 24677.dasm (-0.24 % of base)
          -8 : 14430.dasm (-0.40 % of base)
          -8 : 70393.dasm (-0.75 % of base)
          -8 : 8749.dasm (-0.72 % of base)

73 total files with Code Size differences (27 improved, 46 regressed), 20 unchanged.

Top method regressions (bytes):
         188 (3.01 % of base) : 44601.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 (Tier0-FullOpts)
         108 (7.01 % of base) : 34548.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier0-FullOpts)
          50 (4.71 % of base) : 44769.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
          50 (17.12 % of base) : 26023.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier0-FullOpts)
          50 (28.09 % of base) : 33361.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (Tier1)
          48 (2.59 % of base) : 44952.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
          46 (2.82 % of base) : 34611.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          40 (3.81 % of base) : 45061.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
          36 (4.97 % of base) : 26357.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (Tier0-FullOpts)
          36 (14.29 % of base) : 16516.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:EnqueueDequeue(System.__Canon,System.__Canon):System.__Canon:this (Tier1)
          36 (7.41 % of base) : 71732.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (Tier0-FullOpts)
          34 (13.49 % of base) : 64128.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:RemoveAt(int):this (Tier1)
          32 (13.33 % of base) : 14290.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:TryGetValue(int,byref):ubyte:this (Tier0-FullOpts)
          30 (1.83 % of base) : 49322.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          30 (2.12 % of base) : 72029.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
          30 (3.07 % of base) : 11708.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier0-FullOpts)
          30 (3.32 % of base) : 20417.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          28 (0.37 % of base) : 29323.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (Tier0-FullOpts)
          28 (0.35 % of base) : 62824.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
          28 (26.92 % of base) : 27180.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)

Top method improvements (bytes):
         -30 (-5.77 % of base) : 10372.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -28 (-2.22 % of base) : 29254.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -26 (-2.30 % of base) : 42019.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
         -26 (-1.59 % of base) : 9905.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -24 (-1.06 % of base) : 45072.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 (Tier0-FullOpts)
         -20 (-6.45 % of base) : 13085.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
         -18 (-4.46 % of base) : 64842.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (Tier0-FullOpts)
         -18 (-0.62 % of base) : 11805.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
         -16 (-0.86 % of base) : 45245.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) (Tier0-FullOpts)
         -16 (-1.24 % of base) : 7816.dasm - System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonPolymorphismOptions,System.Type,ubyte):this (Tier0-FullOpts)
         -14 (-4.24 % of base) : 62782.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (Tier0-FullOpts)
         -12 (-4.62 % of base) : 59283.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (Tier0-FullOpts)
         -12 (-0.36 % of base) : 37598.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
         -12 (-0.55 % of base) : 13058.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 (Tier0-FullOpts)
         -10 (-1.08 % of base) : 42021.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier0-FullOpts)
         -10 (-1.44 % of base) : 45940.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier0-FullOpts)
          -8 (-0.75 % of base) : 70393.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
          -8 (-0.24 % of base) : 24677.dasm - Sigil.Emit`1[System.__Canon]:ValidateTryCatchFinallyBranches():this (Tier0-FullOpts)
          -8 (-0.40 % of base) : 14430.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          -8 (-0.72 % of base) : 8749.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (Tier0-FullOpts)

Top method regressions (percentages):
           8 (66.67 % of base) : 38903.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
          24 (54.55 % of base) : 23575.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
          20 (50.00 % of base) : 28372.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          20 (50.00 % of base) : 32701.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (Tier1)
          16 (44.44 % of base) : 50881.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          14 (33.33 % of base) : 26323.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (Tier1)
           8 (33.33 % of base) : 45152.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
          50 (28.09 % of base) : 33361.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (Tier1)
          28 (26.92 % of base) : 27180.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier1)
          18 (24.32 % of base) : 22697.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
           8 (23.53 % of base) : 29996.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.__Canon):this (Tier1)
          24 (22.22 % of base) : 16514.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Enqueue(System.__Canon,System.__Canon):this (Tier1)
          12 (22.22 % of base) : 5034.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          18 (21.95 % of base) : 22667.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (Tier1)
          18 (21.43 % of base) : 35040.dasm - System.Collections.Generic.SortedDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (Tier1)
          12 (21.43 % of base) : 7374.dasm - System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this (Tier1)
           8 (21.05 % of base) : 45389.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           8 (21.05 % of base) : 7164.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier1)
          20 (20.83 % of base) : 43856.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (Tier0-FullOpts)
           8 (20.00 % of base) : 3644.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor():this (Tier1)

Top method improvements (percentages):
         -20 (-6.45 % of base) : 13085.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (Tier0-FullOpts)
         -30 (-5.77 % of base) : 10372.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -12 (-4.62 % of base) : 59283.dasm - Benchstone.BenchI.XposMatrix:Test():ubyte:this (Tier0-FullOpts)
         -18 (-4.46 % of base) : 64842.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (Tier0-FullOpts)
         -14 (-4.24 % of base) : 62782.dasm - Benchstone.BenchF.SqMtx:Test():ubyte:this (Tier0-FullOpts)
          -4 (-2.67 % of base) : 14853.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddUniqueStatus(System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (Tier0-FullOpts)
          -4 (-2.56 % of base) : 22053.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
         -26 (-2.30 % of base) : 42019.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
         -28 (-2.22 % of base) : 29254.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -26 (-1.59 % of base) : 9905.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -10 (-1.44 % of base) : 45940.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier0-FullOpts)
         -16 (-1.24 % of base) : 7816.dasm - System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonPolymorphismOptions,System.Type,ubyte):this (Tier0-FullOpts)
          -6 (-1.21 % of base) : 8748.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)
         -10 (-1.08 % of base) : 42021.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier0-FullOpts)
         -24 (-1.06 % of base) : 45072.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 (Tier0-FullOpts)
          -2 (-0.95 % of base) : 65925.dasm - System.SpanHelpers:NonPackedContainsValueType[int](byref,int,int):ubyte (Tier0-FullOpts)
         -16 (-0.86 % of base) : 45245.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) (Tier0-FullOpts)
          -4 (-0.82 % of base) : 68224.dasm - Benchstone.BenchI.Array2:VerifyCopy(int[][][],int[][][]):ubyte (Tier0-FullOpts)
          -8 (-0.75 % of base) : 70393.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
          -4 (-0.74 % of base) : 28963.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (Tier0-FullOpts)


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321408536 (overridden on cmd)
Total bytes of diff: 321427000 (overridden on cmd)
Total bytes of delta: 18464 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         692 : 466071.dasm (4.97 % of base)
         634 : 474660.dasm (4.62 % of base)
         176 : 111361.dasm (2.81 % of base)
         176 : 323401.dasm (2.81 % of base)
         172 : 458943.dasm (12.78 % of base)
         172 : 226480.dasm (12.78 % of base)
         108 : 333131.dasm (7.01 % of base)
         108 : 114925.dasm (7.01 % of base)
          94 : 363777.dasm (5.35 % of base)
          94 : 157628.dasm (5.35 % of base)
          90 : 98170.dasm (36.00 % of base)
          90 : 98172.dasm (36.00 % of base)
          58 : 7502.dasm (25.22 % of base)
          58 : 7516.dasm (25.22 % of base)
          58 : 6940.dasm (25.66 % of base)
          58 : 7117.dasm (25.22 % of base)
          58 : 7131.dasm (25.22 % of base)
          58 : 7329.dasm (25.66 % of base)
          50 : 111478.dasm (4.71 % of base)
          50 : 323638.dasm (4.71 % of base)

Top file improvements (bytes):
         -58 : 360629.dasm (-1.89 % of base)
         -58 : 153234.dasm (-1.89 % of base)
         -58 : 155975.dasm (-13.55 % of base)
         -58 : 356042.dasm (-13.55 % of base)
         -54 : 256033.dasm (-8.57 % of base)
         -50 : 163232.dasm (-1.64 % of base)
         -50 : 371966.dasm (-1.64 % of base)
         -46 : 337114.dasm (-1.83 % of base)
         -44 : 325140.dasm (-6.96 % of base)
         -42 : 236751.dasm (-1.22 % of base)
         -40 : 381880.dasm (-6.47 % of base)
         -36 : 441875.dasm (-1.05 % of base)
         -34 : 470691.dasm (-1.49 % of base)
         -34 : 476310.dasm (-1.49 % of base)
         -32 : 397328.dasm (-0.93 % of base)
         -32 : 408473.dasm (-0.93 % of base)
         -32 : 413803.dasm (-0.93 % of base)
         -32 : 417653.dasm (-0.93 % of base)
         -32 : 419895.dasm (-0.93 % of base)
         -32 : 421559.dasm (-0.93 % of base)

84 total files with Code Size differences (40 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         692 (4.97 % of base) : 466071.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         634 (4.62 % of base) : 474660.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         176 (2.81 % of base) : 111361.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)
         176 (2.81 % of base) : 323401.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 (Tier0-FullOpts)
         172 (12.78 % of base) : 226480.dasm - AutoGen.Program:Func1(AutoGen.VType1,long,uint,AutoGen.VType2):AutoGen.VType1:this (FullOpts)
         172 (12.78 % of base) : 458943.dasm - AutoGen.Program:Func1(AutoGen.VType1,long,uint,AutoGen.VType2):AutoGen.VType1:this (Tier0-FullOpts)
         108 (7.01 % of base) : 114925.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         108 (7.01 % of base) : 333131.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier0-FullOpts)
          94 (5.35 % of base) : 157628.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
          94 (5.35 % of base) : 363777.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
          90 (36.00 % of base) : 98172.dasm - mainMethod:checkAsObjectCast(System.Object) (FullOpts)
          90 (36.00 % of base) : 98170.dasm - mainMethod:checkIsObjectCast(System.Object) (FullOpts)
          58 (25.66 % of base) : 6940.dasm - testout1:Sub_Funclet_228():int (FullOpts)
          58 (25.66 % of base) : 7329.dasm - testout1:Sub_Funclet_228():int (FullOpts)
          58 (25.22 % of base) : 7502.dasm - testout1:Sub_Funclet_420():int (FullOpts)
          58 (25.22 % of base) : 7117.dasm - testout1:Sub_Funclet_420():int (FullOpts)
          58 (25.22 % of base) : 7516.dasm - testout1:Sub_Funclet_436():int (FullOpts)
          58 (25.22 % of base) : 7131.dasm - testout1:Sub_Funclet_436():int (FullOpts)
          50 (4.71 % of base) : 111478.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          50 (4.71 % of base) : 323638.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (bytes):
         -58 (-13.55 % of base) : 155975.dasm - JitTest_lcs2_lcs_cs.LCS:buildLCS(int[][][][],ushort[],int[]):System.String (FullOpts)
         -58 (-13.55 % of base) : 356042.dasm - JitTest_lcs2_lcs_cs.LCS:buildLCS(int[][][][],ushort[],int[]):System.String (Tier0-FullOpts)
         -58 (-1.89 % of base) : 153234.dasm - structarr:gaussj(MatrixStruct,int,MatrixStruct,int) (FullOpts)
         -58 (-1.89 % of base) : 360629.dasm - structarr:gaussj(MatrixStruct,int,MatrixStruct,int) (Tier0-FullOpts)
         -54 (-8.57 % of base) : 256033.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -50 (-1.64 % of base) : 163232.dasm - Co1245GetBytes_double:runTest():ubyte:this (FullOpts)
         -50 (-1.64 % of base) : 371966.dasm - Co1245GetBytes_double:runTest():ubyte:this (Tier0-FullOpts)
         -46 (-1.83 % of base) : 337114.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -44 (-6.96 % of base) : 325140.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -42 (-1.22 % of base) : 236751.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -40 (-6.47 % of base) : 381880.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -36 (-1.05 % of base) : 441875.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -34 (-1.49 % of base) : 470691.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -34 (-1.49 % of base) : 476310.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -32 (-0.93 % of base) : 397328.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -32 (-0.93 % of base) : 408473.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -32 (-0.93 % of base) : 413803.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -32 (-0.93 % of base) : 417653.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -32 (-0.93 % of base) : 419895.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -32 (-0.93 % of base) : 421559.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)

Top method regressions (percentages):
          46 (766.67 % of base) : 171074.dasm - ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
          12 (100.00 % of base) : 104084.dasm - Program:Test[System.__Canon]():int (FullOpts)
          12 (66.67 % of base) : 227989.dasm - HelperILDllTests:CallGenMethodFromGenericType[System.__Canon]():System.String (FullOpts)
          12 (66.67 % of base) : 227983.dasm - HelperILDllTests:CallMethodFromGenericType[System.__Canon]():System.String (FullOpts)
          20 (50.00 % of base) : 111385.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,int]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,int]]):this (FullOpts)
          20 (50.00 % of base) : 111721.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          16 (47.06 % of base) : 111489.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
           8 (36.36 % of base) : 144134.dasm - Caller`4[MyStruct`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,System.__Canon]:CallGenInstMethodU(System.__Canon):System.String:this (FullOpts)
           8 (36.36 % of base) : 144135.dasm - Caller`4[MyStruct`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,System.__Canon]:CallVirtMethodU(System.__Canon):System.String:this (FullOpts)
          90 (36.00 % of base) : 98172.dasm - mainMethod:checkAsObjectCast(System.Object) (FullOpts)
          90 (36.00 % of base) : 98170.dasm - mainMethod:checkIsObjectCast(System.Object) (FullOpts)
          14 (33.33 % of base) : 473865.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (Tier1)
           8 (33.33 % of base) : 111378.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
           8 (33.33 % of base) : 324493.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
           8 (28.57 % of base) : 230108.dasm - Microsoft.Build.Collections.PropertyDictionary`1[System.__Canon]:Contains(System.String):ubyte:this (FullOpts)
           8 (28.57 % of base) : 470680.dasm - System.Collections.Generic.Dictionary`2+ValueCollection[int,System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (Instrumented Tier1)
          24 (27.27 % of base) : 6357.dasm - testout1:Sub_Funclet_442():int (FullOpts)
          24 (27.27 % of base) : 5947.dasm - testout1:Sub_Funclet_442():int (FullOpts)
          24 (27.27 % of base) : 6371.dasm - testout1:Sub_Funclet_456():int (FullOpts)
          24 (27.27 % of base) : 5961.dasm - testout1:Sub_Funclet_456():int (FullOpts)

Top method improvements (percentages):
         -58 (-13.55 % of base) : 155975.dasm - JitTest_lcs2_lcs_cs.LCS:buildLCS(int[][][][],ushort[],int[]):System.String (FullOpts)
         -58 (-13.55 % of base) : 356042.dasm - JitTest_lcs2_lcs_cs.LCS:buildLCS(int[][][][],ushort[],int[]):System.String (Tier0-FullOpts)
         -54 (-8.57 % of base) : 256033.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -26 (-7.83 % of base) : 117336.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
         -26 (-7.83 % of base) : 338554.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (Tier0-FullOpts)
         -44 (-6.96 % of base) : 325140.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -16 (-6.72 % of base) : 329409.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
         -40 (-6.47 % of base) : 381880.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -16 (-5.03 % of base) : 226487.dasm - RNG.Test:foo(int,int,int,int,int):int (FullOpts)
         -16 (-5.03 % of base) : 458951.dasm - RNG.Test:foo(int,int,int,int,int):int (Tier0-FullOpts)
          -4 (-5.00 % of base) : 473802.dasm - System.Enum:AreSorted[uint](uint[]):ubyte (Tier1)
         -10 (-5.00 % of base) : 259991.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
         -10 (-5.00 % of base) : 278534.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
         -12 (-4.65 % of base) : 117359.dasm - Benchstone.BenchI.XposMatrix:Bench(int[][]):ubyte (FullOpts)
         -12 (-4.65 % of base) : 338621.dasm - Benchstone.BenchI.XposMatrix:Bench(int[][]):ubyte (Tier0-FullOpts)
         -18 (-4.46 % of base) : 115031.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (FullOpts)
         -18 (-4.46 % of base) : 333251.dasm - Benchstone.BenchI.AddArray2:BenchInner1(int[][],byref) (Tier0-FullOpts)
         -22 (-3.85 % of base) : 152883.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
         -22 (-3.85 % of base) : 360190.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (Tier0-FullOpts)
         -24 (-3.75 % of base) : 465502.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36764136 (overridden on cmd)
Total bytes of diff: 36764742 (overridden on cmd)
Total bytes of delta: 606 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          94 : 146809.dasm (4.31 % of base)
          84 : 177160.dasm (8.12 % of base)
          78 : 36442.dasm (0.85 % of base)
          58 : 150523.dasm (3.31 % of base)
          56 : 127876.dasm (3.26 % of base)
          40 : 145110.dasm (1.67 % of base)
          40 : 29188.dasm (1.67 % of base)
          34 : 161104.dasm (1.13 % of base)
          32 : 163124.dasm (2.22 % of base)
          28 : 178072.dasm (11.97 % of base)
          24 : 38657.dasm (0.80 % of base)
          24 : 100311.dasm (0.75 % of base)
          24 : 98704.dasm (2.18 % of base)
          22 : 163274.dasm (1.69 % of base)
          22 : 5477.dasm (0.03 % of base)
          22 : 28865.dasm (6.15 % of base)
          20 : 29168.dasm (0.51 % of base)
          20 : 21267.dasm (5.35 % of base)
          20 : 160210.dasm (0.93 % of base)
          20 : 163275.dasm (1.69 % of base)

Top file improvements (bytes):
        -148 : 160407.dasm (-0.66 % of base)
         -76 : 28601.dasm (-1.53 % of base)
         -42 : 159726.dasm (-1.78 % of base)
         -42 : 125855.dasm (-2.12 % of base)
         -36 : 161105.dasm (-4.68 % of base)
         -32 : 59521.dasm (-3.21 % of base)
         -28 : 30456.dasm (-0.63 % of base)
         -24 : 145043.dasm (-1.23 % of base)
         -22 : 38286.dasm (-3.00 % of base)
         -22 : 164984.dasm (-0.78 % of base)
         -22 : 99474.dasm (-0.99 % of base)
         -22 : 3800.dasm (-5.95 % of base)
         -20 : 64363.dasm (-2.70 % of base)
         -20 : 87345.dasm (-1.70 % of base)
         -18 : 85018.dasm (-3.03 % of base)
         -18 : 11157.dasm (-3.18 % of base)
         -16 : 161375.dasm (-0.45 % of base)
         -16 : 180793.dasm (-0.52 % of base)
         -16 : 161108.dasm (-1.24 % of base)
         -14 : 28417.dasm (-1.43 % of base)

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

Top method regressions (bytes):
          94 (4.31 % of base) : 146809.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          84 (8.12 % of base) : 177160.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          78 (0.85 % of base) : 36442.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)
          58 (3.31 % of base) : 150523.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          56 (3.26 % of base) : 127876.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          40 (1.67 % of base) : 145110.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
          40 (1.67 % of base) : 29188.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
          34 (1.13 % of base) : 161104.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
          32 (2.22 % of base) : 163124.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (FullOpts)
          28 (11.97 % of base) : 178072.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextKey(System.String,int,byref):System.String (FullOpts)
          24 (0.80 % of base) : 38657.dasm - Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller:Spill(Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller+BoundSpillSequenceBuilder,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          24 (0.75 % of base) : 100311.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:GetArgumentForParameterDefaultValue(Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          24 (2.18 % of base) : 98704.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):this (FullOpts)
          22 (0.03 % of base) : 5477.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
          22 (6.15 % of base) : 28865.dasm - System.Data.SqlTypes.SqlString:CompareBinary(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int (FullOpts)
          22 (1.69 % of base) : 163274.dasm - System.Text.ISO2022Encoding:GetCharsCP5022xJP(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)
          20 (0.93 % of base) : 160210.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
          20 (0.51 % of base) : 29168.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
          20 (5.35 % of base) : 21267.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
          20 (1.69 % of base) : 163275.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)

Top method improvements (bytes):
        -148 (-0.66 % of base) : 160407.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)
         -76 (-1.53 % of base) : 28601.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
         -42 (-2.12 % of base) : 125855.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
         -42 (-1.78 % of base) : 159726.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 (FullOpts)
         -36 (-4.68 % of base) : 161105.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -32 (-3.21 % of base) : 59521.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)
         -28 (-0.63 % of base) : 30456.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -24 (-1.23 % of base) : 145043.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
         -22 (-3.00 % of base) : 38286.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
         -22 (-5.95 % of base) : 3800.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -22 (-0.78 % of base) : 164984.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
         -22 (-0.99 % of base) : 99474.dasm - System.Xml.Xsl.Xslt.XsltInput:GetAttributes(System.Xml.Xsl.Xslt.XsltInput+XsltAttribute[]):System.Xml.Xsl.Xslt.XsltInput+ContextInfo:this (FullOpts)
         -20 (-2.70 % of base) : 64363.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:FindGroupNameFromFrameName(System.String,byref):System.String:this (FullOpts)
         -20 (-1.70 % of base) : 87345.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
         -18 (-3.18 % of base) : 11157.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
         -18 (-3.03 % of base) : 85018.dasm - System.Xml.XmlDictionaryReader:ReadContentAs(System.Type,System.Xml.IXmlNamespaceResolver):System.Object:this (FullOpts)
         -16 (-1.24 % of base) : 161108.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
         -16 (-0.45 % of base) : 161375.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         -16 (-0.52 % of base) : 180793.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -14 (-1.43 % of base) : 28417.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)

Top method regressions (percentages):
          28 (11.97 % of base) : 178072.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextKey(System.String,int,byref):System.String (FullOpts)
          84 (8.12 % of base) : 177160.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          22 (6.15 % of base) : 28865.dasm - System.Data.SqlTypes.SqlString:CompareBinary(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):int (FullOpts)
          20 (5.35 % of base) : 21267.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
          10 (5.32 % of base) : 3021.dasm - System.Security.Cryptography.RSA:WritePkcs1PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts)
          10 (5.15 % of base) : 14978.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
           6 (4.55 % of base) : 18113.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
           6 (4.48 % of base) : 144756.dasm - System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte):System.Data.Odbc.OdbcDataReader:this (FullOpts)
          12 (4.44 % of base) : 189303.dasm - System.Threading.ReaderWriterLock+ThreadLocalLockEntry:GetOrCreateCurrentSlow(long,System.Threading.ReaderWriterLock+ThreadLocalLockEntry):System.Threading.ReaderWriterLock+ThreadLocalLockEntry (FullOpts)
          94 (4.31 % of base) : 146809.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          10 (4.13 % of base) : 99003.dasm - System.Xml.Xsl.XPathConvert+BigInteger:Subtract(System.Xml.Xsl.XPathConvert+BigInteger):this (FullOpts)
          10 (3.88 % of base) : 1176.dasm - System.Security.Cryptography.RSA:ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          10 (3.88 % of base) : 1177.dasm - System.Security.Cryptography.RSA:ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
           6 (3.49 % of base) : 14977.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          16 (3.40 % of base) : 28695.dasm - System.Data.DataKey:.ctor(System.Data.DataColumn[],ubyte):this (FullOpts)
          58 (3.31 % of base) : 150523.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
           4 (3.28 % of base) : 18118.dasm - System.Threading.Timer:Change(int,int):ubyte:this (FullOpts)
          56 (3.26 % of base) : 127876.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
           6 (2.97 % of base) : 177714.dasm - System.Net.Http.Headers.HttpHeaders:GetValueRefOrNullRef(System.Net.Http.Headers.HeaderDescriptor):byref:this (FullOpts)
           2 (2.94 % of base) : 36691.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)

Top method improvements (percentages):
         -22 (-5.95 % of base) : 3800.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -36 (-4.68 % of base) : 161105.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -32 (-3.21 % of base) : 59521.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)
         -18 (-3.18 % of base) : 11157.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
         -18 (-3.03 % of base) : 85018.dasm - System.Xml.XmlDictionaryReader:ReadContentAs(System.Type,System.Xml.IXmlNamespaceResolver):System.Object:this (FullOpts)
         -22 (-3.00 % of base) : 38286.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
         -10 (-2.72 % of base) : 193213.dasm - System.Text.RegularExpressions.Symbolic.BitVector:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BitVector]):System.Text.RegularExpressions.Symbolic.BitVector (FullOpts)
         -20 (-2.70 % of base) : 64363.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:FindGroupNameFromFrameName(System.String,byref):System.String:this (FullOpts)
         -10 (-2.69 % of base) : 195033.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.__Canon]:ComputeKeys(System.__Canon[],int):this (FullOpts)
          -8 (-2.47 % of base) : 132936.dasm - System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
         -10 (-2.44 % of base) : 192841.dasm - System.Diagnostics.Metrics.AggregatorStore`1[System.__Canon]:GetLabelValuesDictionary[System.Diagnostics.Metrics.StringSequence1,System.Diagnostics.Metrics.ObjectSequence1](byref):System.Collections.Concurrent.ConcurrentDictionary`2[System.Diagnostics.Metrics.ObjectSequence1,System.__Canon]:this (FullOpts)
         -42 (-2.12 % of base) : 125855.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
         -10 (-1.83 % of base) : 19019.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -42 (-1.78 % of base) : 159726.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 (FullOpts)
         -20 (-1.70 % of base) : 87345.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          -8 (-1.61 % of base) : 96811.dasm - System.Xml.XmlTextReaderImpl:EatWhitespaces(System.Text.StringBuilder):int:this (FullOpts)
          -8 (-1.53 % of base) : 182669.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -76 (-1.53 % of base) : 28601.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
         -14 (-1.43 % of base) : 28417.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
          -4 (-1.43 % of base) : 126794.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 48744412 (overridden on cmd)
Total bytes of diff: 48757124 (overridden on cmd)
Total bytes of delta: 12712 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         212 : 249055.dasm (16.72 % of base)
         210 : 249054.dasm (13.08 % of base)
         156 : 170407.dasm (16.22 % of base)
         156 : 170791.dasm (14.42 % of base)
          96 : 170379.dasm (15.34 % of base)
          96 : 170847.dasm (13.11 % of base)
          80 : 167540.dasm (14.55 % of base)
          74 : 162969.dasm (4.31 % of base)
          72 : 98122.dasm (0.36 % of base)
          62 : 91376.dasm (2.01 % of base)
          62 : 152826.dasm (3.50 % of base)
          60 : 219510.dasm (5.43 % of base)
          54 : 219511.dasm (5.00 % of base)
          52 : 167445.dasm (5.76 % of base)
          50 : 160879.dasm (4.71 % of base)
          50 : 86102.dasm (1.08 % of base)
          50 : 30916.dasm (16.67 % of base)
          48 : 53257.dasm (3.05 % of base)
          46 : 235319.dasm (5.61 % of base)
          46 : 263466.dasm (3.54 % of base)

Top file improvements (bytes):
        -316 : 195248.dasm (-1.39 % of base)
         -78 : 153624.dasm (-4.24 % of base)
         -36 : 152193.dasm (-9.42 % of base)
         -30 : 163730.dasm (-5.62 % of base)
         -30 : 153626.dasm (-4.25 % of base)
         -30 : 236642.dasm (-6.12 % of base)
         -26 : 258982.dasm (-0.91 % of base)
         -26 : 93664.dasm (-2.01 % of base)
         -24 : 195259.dasm (-2.09 % of base)
         -22 : 153629.dasm (-3.27 % of base)
         -22 : 231053.dasm (-0.74 % of base)
         -22 : 97944.dasm (-0.77 % of base)
         -20 : 20910.dasm (-6.45 % of base)
         -20 : 20921.dasm (-0.91 % of base)
         -18 : 121597.dasm (-2.34 % of base)
         -18 : 19916.dasm (-0.46 % of base)
         -18 : 227874.dasm (-1.65 % of base)
         -18 : 237975.dasm (-1.65 % of base)
         -18 : 63099.dasm (-2.34 % of base)
         -18 : 59590.dasm (-0.39 % of base)

84 total files with Code Size differences (31 improved, 53 regressed), 20 unchanged.

Top method regressions (bytes):
         212 (16.72 % of base) : 249055.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
         210 (13.08 % of base) : 249054.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:RetrievePostponedItemsNonGreedy(ubyte):this (FullOpts)
         156 (14.42 % of base) : 170791.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateStatement(System.CodeDom.CodeStatement):this (FullOpts)
         156 (16.22 % of base) : 170407.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateStatement(System.CodeDom.CodeStatement):this (FullOpts)
          96 (13.11 % of base) : 170847.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateTypeMember(System.CodeDom.CodeTypeMember,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          96 (15.34 % of base) : 170379.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateTypeMember(System.CodeDom.CodeTypeMember,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          80 (14.55 % of base) : 167540.dasm - System.Linq.Parallel.IntersectQueryOperator`1+OrderedIntersectQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:MoveNext(byref,byref):ubyte:this (FullOpts)
          74 (4.31 % of base) : 162969.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          72 (0.36 % of base) : 98122.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)
          62 (3.50 % of base) : 152826.dasm - Microsoft.CodeAnalysis.TransformNode`2[System.__Canon,System.Nullable`1[int]]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.Nullable`1[int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.Nullable`1[int]]:this (FullOpts)
          62 (2.01 % of base) : 91376.dasm - System.Data.XSDSchema:HandleDataSet(System.Xml.Schema.XmlSchemaElement,ubyte):this (FullOpts)
          60 (5.43 % of base) : 219510.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:EnqueueRange(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]]):this (FullOpts)
          54 (5.00 % of base) : 219511.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:EnqueueRange(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Nullable`1[int]):this (FullOpts)
          52 (5.76 % of base) : 167445.dasm - System.Linq.Parallel.ExceptQueryOperator`1+OrderedExceptQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:MoveNext(byref,byref):ubyte:this (FullOpts)
          50 (4.71 % of base) : 160879.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          50 (1.08 % of base) : 86102.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCondBranchCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,ubyte):this (FullOpts)
          50 (16.67 % of base) : 30916.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
          48 (3.05 % of base) : 53257.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          46 (5.61 % of base) : 235319.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:SetOrAdd(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],ubyte,byref,byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          46 (3.54 % of base) : 263466.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.Nullable`1[int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
        -316 (-1.39 % of base) : 195248.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)
         -78 (-4.24 % of base) : 153624.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -36 (-9.42 % of base) : 152193.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -30 (-5.62 % of base) : 163730.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
         -30 (-4.25 % of base) : 153626.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -30 (-6.12 % of base) : 236642.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -26 (-2.01 % of base) : 93664.dasm - System.Data.Select:CreateIndex():this (FullOpts)
         -26 (-0.91 % of base) : 258982.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
         -24 (-2.09 % of base) : 195259.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
         -22 (-3.27 % of base) : 153629.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -22 (-0.77 % of base) : 97944.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildDelegateRelaxationLambda(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundLambda:this (FullOpts)
         -22 (-0.74 % of base) : 231053.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -20 (-0.91 % of base) : 20921.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 (FullOpts)
         -20 (-6.45 % of base) : 20910.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -18 (-2.34 % of base) : 63099.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode:GetFirstDirective(System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:this (FullOpts)
         -18 (-0.39 % of base) : 59590.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
         -18 (-2.34 % of base) : 121597.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:GetFirstDirective(System.Func`2[Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax:this (FullOpts)
         -18 (-1.65 % of base) : 227874.dasm - System.Configuration.MgmtConfigurationRecord:RemoveConfigurationSectionGroup(System.String,System.String):this (FullOpts)
         -18 (-1.65 % of base) : 237975.dasm - System.Configuration.MgmtConfigurationRecord:RemoveConfigurationSectionGroup(System.String,System.String):this (FullOpts)
         -18 (-0.46 % of base) : 19916.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:LoadSigningRequest(System.ReadOnlySpan`1[ubyte],ubyte,System.Security.Cryptography.HashAlgorithmName,byref,int,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.CertificateRequest (FullOpts)

Top method regressions (percentages):
           8 (66.67 % of base) : 164210.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (66.67 % of base) : 244247.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (66.67 % of base) : 164211.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (66.67 % of base) : 244248.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (66.67 % of base) : 150466.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (66.67 % of base) : 150467.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.SmallDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
           8 (50.00 % of base) : 160977.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:get_Capacity():int:this (FullOpts)
           8 (50.00 % of base) : 243730.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:get_Capacity():int:this (FullOpts)
           8 (50.00 % of base) : 9925.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.__Canon]:Invoke(System.__Canon):System.__Canon:this (FullOpts)
           8 (50.00 % of base) : 2908.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
          20 (50.00 % of base) : 233734.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.Nullable`1[int]]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Nullable`1[int]]]):this (FullOpts)
          20 (50.00 % of base) : 232467.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          16 (47.06 % of base) : 164408.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
           8 (44.44 % of base) : 152711.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon]:get_Count():int:this (FullOpts)
           8 (44.44 % of base) : 165503.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection+EnumerableImpl[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.IEnumerator<K>.get_Current():System.__Canon:this (FullOpts)
           8 (44.44 % of base) : 165504.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection+EnumerableImpl[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerator.get_Current():System.Object:this (FullOpts)
           8 (44.44 % of base) : 168533.dasm - System.Linq.Parallel.GroupByGrouping`2[System.__Canon,System.Nullable`1[int]]:System.Linq.IGrouping<TGroupKey,TElement>.get_Key():System.__Canon:this (FullOpts)
          14 (43.75 % of base) : 164236.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
          14 (43.75 % of base) : 244273.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]][],int):this (FullOpts)
           8 (40.00 % of base) : 235420.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,System.Nullable`1[int]]:<get_Keys>b__30_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]):System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -36 (-9.42 % of base) : 152193.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -20 (-6.45 % of base) : 20910.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -16 (-6.15 % of base) : 152405.dasm - Microsoft.CodeAnalysis.RealParser:ConvertBigIntegerToFloatingPointBits(ubyte[],uint,ubyte,Microsoft.CodeAnalysis.RealParser+FloatingPointType,byref):int (FullOpts)
         -30 (-6.12 % of base) : 236642.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
          -4 (-5.71 % of base) : 62001.dasm - Microsoft.CodeAnalysis.CSharp.ObjectDisplay:ContainsNewLine(System.String):ubyte (FullOpts)
         -30 (-5.62 % of base) : 163730.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
         -14 (-5.60 % of base) : 144298.dasm - System.Xml.Xsl.Runtime.XmlStringSortKey:CompareTo(System.Object):int:this (FullOpts)
         -10 (-4.39 % of base) : 72017.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ConsumeRemainingContentThroughNewLine(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],int):int (FullOpts)
          -4 (-4.35 % of base) : 154172.dasm - Microsoft.CodeAnalysis.XmlCharType:IsPublicId(System.String):int (FullOpts)
         -30 (-4.25 % of base) : 153626.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -78 (-4.24 % of base) : 153624.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -22 (-3.27 % of base) : 153629.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
          -6 (-3.12 % of base) : 275680.dasm - Microsoft.Build.Shared.TypeLoader:IsPartialTypeNameMatch(System.String,System.String):ubyte (FullOpts)
          -2 (-3.12 % of base) : 58050.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
         -12 (-3.02 % of base) : 148141.dasm - Roslyn.Utilities.PathUtilities:GetWindowsRoot(System.String):System.String (FullOpts)
          -4 (-2.67 % of base) : 20835.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:AddUniqueStatus(System.Collections.Generic.List`1[System.Security.Cryptography.X509Certificates.X509ChainStatus],byref) (FullOpts)
         -18 (-2.34 % of base) : 63099.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode:GetFirstDirective(System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:this (FullOpts)
         -18 (-2.34 % of base) : 121597.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:GetFirstDirective(System.Func`2[Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax:this (FullOpts)
          -4 (-2.20 % of base) : 112247.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)
          -8 (-2.17 % of base) : 80599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 244971224 (overridden on cmd)
Total bytes of diff: 245017800 (overridden on cmd)
Total bytes of delta: 46576 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         886 : 164256.dasm (6.69 % of base)
         886 : 181276.dasm (6.69 % of base)
         886 : 170393.dasm (6.69 % of base)
         886 : 658086.dasm (6.69 % of base)
         886 : 109330.dasm (6.69 % of base)
         886 : 150255.dasm (6.69 % of base)
         762 : 322638.dasm (5.96 % of base)
         704 : 79526.dasm (5.24 % of base)
         592 : 388195.dasm (4.20 % of base)
         414 : 125630.dasm (4.16 % of base)
         288 : 533646.dasm (2.93 % of base)
         256 : 246588.dasm (2.53 % of base)
         246 : 378961.dasm (2.46 % of base)
         240 : 426116.dasm (2.38 % of base)
         212 : 577454.dasm (2.17 % of base)
         210 : 563272.dasm (2.15 % of base)
         204 : 407844.dasm (1.98 % of base)
         204 : 416861.dasm (1.98 % of base)
         196 : 328797.dasm (2.08 % of base)
         196 : 96346.dasm (2.19 % of base)

Top file improvements (bytes):
        -222 : 655069.dasm (-2.27 % of base)
        -206 : 572039.dasm (-3.57 % of base)
        -142 : 187975.dasm (-0.64 % of base)
        -130 : 176397.dasm (-2.20 % of base)
        -122 : 427266.dasm (-1.28 % of base)
        -120 : 82031.dasm (-5.57 % of base)
        -102 : 330897.dasm (-1.00 % of base)
        -102 : 164682.dasm (-0.83 % of base)
         -96 : 337156.dasm (-2.91 % of base)
         -90 : 126756.dasm (-0.72 % of base)
         -86 : 130444.dasm (-1.12 % of base)
         -86 : 268516.dasm (-1.12 % of base)
         -84 : 234551.dasm (-0.74 % of base)
         -84 : 372200.dasm (-5.23 % of base)
         -84 : 192878.dasm (-1.09 % of base)
         -80 : 113961.dasm (-0.62 % of base)
         -80 : 406314.dasm (-0.62 % of base)
         -80 : 193637.dasm (-0.62 % of base)
         -80 : 377665.dasm (-0.62 % of base)
         -80 : 219266.dasm (-0.74 % of base)

96 total files with Code Size differences (55 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         886 (6.69 % of base) : 164256.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         886 (6.69 % of base) : 181276.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         886 (6.69 % of base) : 170393.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         886 (6.69 % of base) : 658086.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         886 (6.69 % of base) : 109330.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         886 (6.69 % of base) : 150255.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         762 (5.96 % of base) : 322638.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         704 (5.24 % of base) : 79526.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         592 (4.20 % of base) : 388195.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         414 (4.16 % of base) : 125630.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         288 (2.93 % of base) : 533646.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         256 (2.53 % of base) : 246588.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         246 (2.46 % of base) : 378961.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         240 (2.38 % of base) : 426116.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         212 (2.17 % of base) : 577454.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         210 (2.15 % of base) : 563272.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         204 (1.98 % of base) : 407844.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         204 (1.98 % of base) : 416861.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         196 (2.08 % of base) : 328797.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         196 (2.19 % of base) : 96346.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):
        -222 (-2.27 % of base) : 655069.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -206 (-3.57 % of base) : 572039.dasm - System.Text.TranscodingStream+<<ReadAsync>g__ReadAsyncCore|41_0>d:MoveNext():this (Tier1)
        -142 (-0.64 % of base) : 187975.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
        -130 (-2.20 % of base) : 176397.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
        -122 (-1.28 % of base) : 427266.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -120 (-5.57 % of base) : 82031.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionVariableFinder:FindExpressionVariables(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Binder) (Tier1)
        -102 (-0.83 % of base) : 164682.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -102 (-1.00 % of base) : 330897.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -96 (-2.91 % of base) : 337156.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (Tier0-FullOpts)
         -90 (-0.72 % of base) : 126756.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -86 (-1.12 % of base) : 130444.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -86 (-1.12 % of base) : 268516.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -84 (-0.74 % of base) : 234551.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -84 (-1.09 % of base) : 192878.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -84 (-5.23 % of base) : 372200.dasm - System.Net.Http.Headers.MediaTypeHeaderValue:GetMediaTypeLength(System.String,int,System.Func`1[System.Net.Http.Headers.MediaTypeHeaderValue],byref):int (Tier1)
         -80 (-0.62 % of base) : 113961.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -80 (-0.62 % of base) : 406314.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -80 (-0.62 % of base) : 193637.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -80 (-0.62 % of base) : 377665.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -80 (-0.74 % of base) : 219266.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 regressions (percentages):
           8 (66.67 % of base) : 14301.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
           8 (66.67 % of base) : 30891.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
          20 (50.00 % of base) : 29068.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          20 (50.00 % of base) : 33194.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (Tier1)
          16 (44.44 % of base) : 159144.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (44.44 % of base) : 70011.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (44.44 % of base) : 166693.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (44.44 % of base) : 655513.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (44.44 % of base) : 80377.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (44.44 % of base) : 48062.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (Tier1)
           8 (44.44 % of base) : 40617.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.__Canon,int]]:get_Count():int:this (Tier1)
          12 (42.86 % of base) : 99876.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:IsDynamicallyTypedRuntimeProxy(System.Dynamic.DynamicMetaObject,Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo):ubyte (Tier1)
          16 (42.11 % of base) : 67339.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (42.11 % of base) : 42196.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          16 (42.11 % of base) : 107820.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          24 (40.00 % of base) : 224770.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:Clear():this (Tier1)
           8 (40.00 % of base) : 632380.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (Tier1)
          12 (37.50 % of base) : 227916.dasm - System.Collections.Generic.SortedDictionary`2+KeyCollection+<>c__DisplayClass5_0[System.__Canon,System.__Canon]:<CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (Tier1)
          12 (37.50 % of base) : 229923.dasm - System.Collections.Generic.SortedDictionary`2+KeyCollection+<>c__DisplayClass6_0[System.__Canon,System.__Canon]:<System.Collections.ICollection.CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (Tier1)
          12 (37.50 % of base) : 229896.dasm - System.Collections.Generic.SortedDictionary`2+ValueCollection+<>c__DisplayClass6_0[System.__Canon,System.__Canon]:<System.Collections.ICollection.CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (Tier1)

Top method improvements (percentages):
         -36 (-9.42 % of base) : 11974.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)
         -36 (-9.42 % of base) : 153401.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)
         -36 (-9.42 % of base) : 139978.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (Tier0-FullOpts)
         -54 (-8.57 % of base) : 396367.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 397141.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 180315.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 181715.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 390981.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 391203.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396108.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396218.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396302.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396497.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396921.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 397051.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 183349.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396702.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -54 (-8.54 % of base) : 396837.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-8.26 % of base) : 661299.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
         -20 (-8.26 % of base) : 81723.dasm - Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.BoundBlockInstrumentation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 93398640 (overridden on cmd)
Total bytes of diff: 93411670 (overridden on cmd)
Total bytes of delta: 13030 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         176 : 43420.dasm (2.82 % of base)
         176 : 49079.dasm (2.82 % of base)
         176 : 4577.dasm (2.86 % of base)
         168 : 62181.dasm (17.83 % of base)
         156 : 62627.dasm (14.42 % of base)
         122 : 120487.dasm (2.32 % of base)
          96 : 62587.dasm (13.11 % of base)
          96 : 62102.dasm (15.14 % of base)
          72 : 5031.dasm (6.01 % of base)
          70 : 306068.dasm (6.01 % of base)
          68 : 183774.dasm (7.04 % of base)
          64 : 77342.dasm (1.98 % of base)
          58 : 5434.dasm (2.63 % of base)
          56 : 192772.dasm (4.98 % of base)
          54 : 75350.dasm (13.64 % of base)
          54 : 52961.dasm (2.97 % of base)
          50 : 4742.dasm (4.71 % of base)
          50 : 9326.dasm (28.09 % of base)
          48 : 77331.dasm (2.97 % of base)
          48 : 194723.dasm (5.02 % of base)

Top file improvements (bytes):
        -310 : 59632.dasm (-1.36 % of base)
         -74 : 14548.dasm (-1.27 % of base)
         -72 : 282229.dasm (-1.87 % of base)
         -70 : 279059.dasm (-3.44 % of base)
         -64 : 279233.dasm (-3.85 % of base)
         -58 : 279375.dasm (-2.86 % of base)
         -48 : 44720.dasm (-0.93 % of base)
         -46 : 43623.dasm (-2.21 % of base)
         -46 : 49321.dasm (-2.21 % of base)
         -36 : 49344.dasm (-9.42 % of base)
         -36 : 5134.dasm (-9.42 % of base)
         -36 : 279040.dasm (-2.34 % of base)
         -36 : 43646.dasm (-9.42 % of base)
         -36 : 296223.dasm (-0.71 % of base)
         -34 : 295736.dasm (-2.66 % of base)
         -34 : 279037.dasm (-2.44 % of base)
         -34 : 279039.dasm (-2.44 % of base)
         -34 : 50567.dasm (-0.65 % of base)
         -30 : 67789.dasm (-6.12 % of base)
         -30 : 11187.dasm (-5.84 % of base)

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

Top method regressions (bytes):
         176 (2.82 % of base) : 43420.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)
         176 (2.82 % of base) : 49079.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)
         176 (2.86 % of base) : 4577.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)
         168 (17.83 % of base) : 62181.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateStatement(System.CodeDom.CodeStatement):this (FullOpts)
         156 (14.42 % of base) : 62627.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateStatement(System.CodeDom.CodeStatement):this (FullOpts)
         122 (2.32 % of base) : 120487.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          96 (13.11 % of base) : 62587.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateTypeMember(System.CodeDom.CodeTypeMember,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          96 (15.14 % of base) : 62102.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateTypeMember(System.CodeDom.CodeTypeMember,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          72 (6.01 % of base) : 5031.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:Bind(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],Microsoft.CodeAnalysis.MetadataReferenceResolver,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]:this (FullOpts)
          70 (6.01 % of base) : 306068.dasm - CoreXml.Test.XLinq.UndoManager:Changing(System.Object,System.Xml.Linq.XObjectChangeEventArgs):this (FullOpts)
          68 (7.04 % of base) : 183774.dasm - System.Reflection.Metadata.Tests.BlobContentIdTests:Equality():this (FullOpts)
          64 (1.98 % of base) : 77342.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[System.__Canon]:AddBefore_LLNode_LLNode():this (FullOpts)
          58 (2.63 % of base) : 5434.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
          56 (4.98 % of base) : 192772.dasm - System.Numerics.Tests.BigIntegerTests_GenericMath:SignTest() (FullOpts)
          54 (2.97 % of base) : 52961.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          54 (13.64 % of base) : 75350.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:DequeueEnqueue(System.__Canon,System.__Canon):System.__Canon:this (FullOpts)
          50 (4.71 % of base) : 4742.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          50 (28.09 % of base) : 9326.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (FullOpts)
          48 (5.02 % of base) : 194723.dasm - DataContractJsonSerializerTests:DCJS_DoubleAsRoot() (FullOpts)
          48 (2.97 % of base) : 77331.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[System.__Canon]:AddFirst_LinkedListNode():this (FullOpts)

Top method improvements (bytes):
        -310 (-1.36 % of base) : 59632.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)
         -74 (-1.27 % of base) : 14548.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -72 (-1.87 % of base) : 282229.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
         -70 (-3.44 % of base) : 279059.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4341_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -64 (-3.85 % of base) : 279233.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1647_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-2.86 % of base) : 279375.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4343_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -48 (-0.93 % of base) : 44720.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         -46 (-2.21 % of base) : 43623.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 (FullOpts)
         -46 (-2.21 % of base) : 49321.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 (FullOpts)
         -36 (-9.42 % of base) : 49344.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-9.42 % of base) : 5134.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-9.42 % of base) : 43646.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-2.34 % of base) : 279040.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4334_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -36 (-0.71 % of base) : 296223.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FE11ED309466AF57DE9D7AB55C09A60EE21567522F71D3843DB41A5B03BB97697__Match_InstanceMethods_DefaultTimeout_SourceGenerated_ThrowsImpl_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -34 (-0.65 % of base) : 50567.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         -34 (-2.66 % of base) : 295736.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33208_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -34 (-2.44 % of base) : 279037.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4332_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -34 (-2.44 % of base) : 279039.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4333_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -30 (-5.84 % of base) : 11187.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ushort]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
         -30 (-6.12 % of base) : 67789.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)

Top method regressions (percentages):
           8 (66.67 % of base) : 3467.dasm - System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
          20 (50.00 % of base) : 2408.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Text.TextSpan]]]):this (FullOpts)
          20 (50.00 % of base) : 2860.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          16 (47.06 % of base) : 4757.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
           8 (44.44 % of base) : 5516.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon]:get_Count():int:this (FullOpts)
          20 (41.67 % of base) : 75295.dasm - System.Collections.Generic.SortedDictionary`2+<>c__DisplayClass34_1[System.__Canon,System.__Canon]:<ContainsValue>b__1(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (FullOpts)
          24 (40.00 % of base) : 76976.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:Clear():this (FullOpts)
           8 (40.00 % of base) : 256585.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (FullOpts)
           8 (40.00 % of base) : 241426.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (FullOpts)
          10 (38.46 % of base) : 70612.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.__Canon]:ContainsKey(double):ubyte:this (FullOpts)
          12 (37.50 % of base) : 74966.dasm - System.Collections.Generic.SortedDictionary`2+KeyCollection+<>c__DisplayClass6_0[System.__Canon,System.__Canon]:<System.Collections.ICollection.CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (FullOpts)
          12 (37.50 % of base) : 75223.dasm - System.Collections.Generic.SortedDictionary`2+ValueCollection+<>c__DisplayClass5_0[System.__Canon,System.__Canon]:<CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (FullOpts)
          12 (37.50 % of base) : 74953.dasm - System.Collections.Generic.SortedDictionary`2+ValueCollection+<>c__DisplayClass6_0[System.__Canon,System.__Canon]:<System.Collections.ICollection.CopyTo>b__0(System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):ubyte:this (FullOpts)
          10 (35.71 % of base) : 14170.dasm - Microsoft.CodeAnalysis.AddImport.AbstractAddImportsService`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:HasExterns(Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
          10 (35.71 % of base) : 70433.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.__Canon]:ContainsKey(int):ubyte:this (FullOpts)
           8 (33.33 % of base) : 36502.dasm - Grace.Data.Immutable.ImmutableHashTree`2+<>c[System.__Canon,System.__Canon]:<get_Values>b__22_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
           8 (33.33 % of base) : 69179.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<LookupItems_AllItemsFoundAsExpected>b__33_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
           8 (33.33 % of base) : 69108.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<ToFrozenDictionary_KeySelector_ResultsAreUsed>b__30_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (33.33 % of base) : 70615.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.__Canon]:TryGetValue(double,byref):ubyte:this (FullOpts)
           8 (33.33 % of base) : 69686.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,System.__Canon]:<get_Keys>b__30_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -36 (-9.42 % of base) : 49344.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-9.42 % of base) : 5134.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-9.42 % of base) : 43646.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -20 (-6.45 % of base) : 152946.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:GetSingleCert():System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey:this (FullOpts)
         -16 (-6.15 % of base) : 31556.dasm - Microsoft.CodeAnalysis.RealParser:ConvertBigIntegerToFloatingPointBits(ubyte[],uint,ubyte,Microsoft.CodeAnalysis.RealParser+FloatingPointType,byref):int (FullOpts)
         -30 (-6.12 % of base) : 67789.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -30 (-5.84 % of base) : 11187.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ushort]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
         -14 (-5.60 % of base) : 171680.dasm - System.Xml.Xsl.Runtime.XmlStringSortKey:CompareTo(System.Object):int:this (FullOpts)
         -28 (-4.17 % of base) : 46502.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CanBePassedByReference(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)
         -64 (-3.85 % of base) : 279233.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1647_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -70 (-3.44 % of base) : 279059.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4341_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -14 (-3.32 % of base) : 210751.dasm - System.Tests.StringTests:StartsWithNoMatch_Char() (FullOpts)
         -22 (-3.27 % of base) : 8749.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
          -2 (-3.12 % of base) : 11220.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          -2 (-3.12 % of base) : 50788.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
         -10 (-2.91 % of base) : 143561.dasm - System.SpanTests.ReadOnlySpanTests:EndsWithNoMatch_Long() (FullOpts)
         -10 (-2.91 % of base) : 146011.dasm - System.SpanTests.SpanTests:EndsWithNoMatch_Long() (FullOpts)
         -58 (-2.86 % of base) : 279375.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4343_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -12 (-2.79 % of base) : 210948.dasm - System.Tests.StringTests:SequenceEqualNoMatch_Char() (FullOpts)
          -4 (-2.67 % of base) : 218930.dasm - Internal.Cryptography.PkcsHelpers:OctetStringToUnicode(ubyte[]):System.String (FullOpts)


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13306794 (overridden on cmd)
Total bytes of diff: 13310158 (overridden on cmd)
Total bytes of delta: 3364 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 22605.dasm (3.25 % of base)
          50 : 22716.dasm (4.71 % of base)
          50 : 37332.dasm (3.42 % of base)
          50 : 3931.dasm (0.58 % of base)
          48 : 22960.dasm (2.62 % of base)
          44 : 31333.dasm (1.01 % of base)
          44 : 12586.dasm (11.34 % of base)
          40 : 19954.dasm (4.65 % of base)
          40 : 23033.dasm (3.81 % of base)
          32 : 24106.dasm (2.18 % of base)
          32 : 1733.dasm (3.87 % of base)
          32 : 3996.dasm (13.33 % of base)
          30 : 18990.dasm (3.50 % of base)
          30 : 33107.dasm (1.83 % of base)
          30 : 36433.dasm (5.70 % of base)
          28 : 11167.dasm (6.64 % of base)
          28 : 11171.dasm (10.61 % of base)
          28 : 11670.dasm (24.14 % of base)
          28 : 12028.dasm (7.91 % of base)
          28 : 33269.dasm (26.92 % of base)

Top file improvements (bytes):
        -132 : 17174.dasm (-9.54 % of base)
         -78 : 7708.dasm (-0.86 % of base)
         -40 : 36710.dasm (-4.11 % of base)
         -38 : 18611.dasm (-2.46 % of base)
         -36 : 16974.dasm (-0.95 % of base)
         -36 : 23068.dasm (-9.42 % of base)
         -26 : 24256.dasm (-0.56 % of base)
         -24 : 23034.dasm (-1.06 % of base)
         -22 : 30739.dasm (-3.27 % of base)
         -20 : 5921.dasm (-0.42 % of base)
         -18 : 23080.dasm (-0.98 % of base)
         -18 : 18739.dasm (-0.62 % of base)
         -14 : 37666.dasm (-0.89 % of base)
         -12 : 18768.dasm (-0.87 % of base)
         -12 : 28917.dasm (-0.48 % of base)
         -12 : 29139.dasm (-0.29 % of base)
         -12 : 32830.dasm (-0.41 % of base)
         -12 : 34276.dasm (-0.46 % of base)
         -10 : 20754.dasm (-0.58 % of base)
         -10 : 23916.dasm (-1.44 % of base)

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

Top method regressions (bytes):
         196 (3.25 % of base) : 22605.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)
          50 (0.58 % of base) : 3931.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
          50 (3.42 % of base) : 37332.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalCube2`1[System.__Canon]:TryCreatePoint(System.String[],System.String):Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalPointResult`1[System.__Canon]:this (FullOpts)
          50 (4.71 % of base) : 22716.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          48 (2.62 % of base) : 22960.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
          44 (1.01 % of base) : 31333.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCondBranchCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,ubyte):this (FullOpts)
          44 (11.34 % of base) : 12586.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,FSharp.Compiler.Text.Range]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,FSharp.Compiler.Text.Range][],int):this (FullOpts)
          40 (3.81 % of base) : 23033.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
          40 (4.65 % of base) : 19954.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerable[System.__Canon]:GrabChunk_Buffered(System.Collections.Generic.KeyValuePair`2[long,System.__Canon][],int,byref):ubyte:this (FullOpts)
          32 (3.87 % of base) : 1733.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
          32 (2.18 % of base) : 24106.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArguments(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          32 (13.33 % of base) : 3996.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:TryGetValue(int,byref):ubyte:this (FullOpts)
          30 (1.83 % of base) : 33107.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          30 (3.50 % of base) : 18990.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
          30 (5.70 % of base) : 36433.dasm - System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (FullOpts)
          28 (7.91 % of base) : 12028.dasm - FSharp.Compiler.Infos+PropInfo:get_ApparentEnclosingType():FSharp.Compiler.TypedTree+TType:this (FullOpts)
          28 (10.61 % of base) : 11171.dasm - FSharp.Compiler.Infos+PropInfo:get_HasGetter():ubyte:this (FullOpts)
          28 (6.64 % of base) : 11167.dasm - FSharp.Compiler.Infos+PropInfo:get_IsStatic():ubyte:this (FullOpts)
          28 (7.49 % of base) : 10867.dasm - FSharp.Compiler.Infos+PropInfo:get_PropertyName():System.String:this (FullOpts)
          28 (24.14 % of base) : 11670.dasm - FSharp.Compiler.Infos+PropInfo:get_TcGlobals():FSharp.Compiler.TcGlobals+TcGlobals:this (FullOpts)

Top method improvements (bytes):
        -132 (-9.54 % of base) : 17174.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         -78 (-0.86 % of base) : 7708.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -40 (-4.11 % of base) : 36710.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
         -38 (-2.46 % of base) : 18611.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[][] (FullOpts)
         -36 (-9.42 % of base) : 23068.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -36 (-0.95 % of base) : 16974.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
         -26 (-0.56 % of base) : 24256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
         -24 (-1.06 % of base) : 23034.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 (FullOpts)
         -22 (-3.27 % of base) : 30739.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -20 (-0.42 % of base) : 5921.dasm - FSharp.Compiler.CompilerOptions:attempt@284(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,System.String,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption]):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
         -18 (-0.98 % of base) : 23080.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)
         -18 (-0.62 % of base) : 18739.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
         -14 (-0.89 % of base) : 37666.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
         -12 (-0.46 % of base) : 34276.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet:GetOptionsForSourcePath(System.String):Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult:this (FullOpts)
         -12 (-0.29 % of base) : 29139.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCatchBlock(Microsoft.CodeAnalysis.CSharp.Syntax.CatchClauseSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundCatchBlock],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCatchBlock:this (FullOpts)
         -12 (-0.41 % of base) : 32830.dasm - Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller:Spill(Microsoft.CodeAnalysis.CSharp.SpillSequenceSpiller+BoundSpillSequenceBuilder,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -12 (-0.48 % of base) : 28917.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -12 (-0.87 % of base) : 18768.dasm - Microsoft.ML.Internal.Utilities.ResourceManagerUtils:DownloadResource(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Runtime.IChannel,System.Net.WebClient,System.Uri,System.String,System.String,System.Threading.CancellationToken):System.Exception:this (FullOpts)
         -10 (-1.30 % of base) : 6039.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
         -10 (-0.29 % of base) : 24094.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)

Top method regressions (percentages):
           8 (66.67 % of base) : 19054.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
           8 (50.00 % of base) : 4382.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
          18 (50.00 % of base) : 37044.dasm - System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
          20 (50.00 % of base) : 20765.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,int]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,int]]):this (FullOpts)
          20 (50.00 % of base) : 20716.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          16 (47.06 % of base) : 22738.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
           8 (40.00 % of base) : 5648.dasm - Microsoft.FSharp.Collections.ListModule+groupByRefType@560-4[System.__Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]):System.__Canon:this (FullOpts)
           8 (33.33 % of base) : 22635.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):uint:this (FullOpts)
           8 (33.33 % of base) : 22637.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):System.__Canon:this (FullOpts)
          14 (33.33 % of base) : 16513.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (FullOpts)
           8 (33.33 % of base) : 20883.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          14 (31.82 % of base) : 9693.dasm - FSharp.Compiler.Syntax.SynTyparDecls:get_Constraints():Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]:this (FullOpts)
          28 (26.92 % of base) : 33269.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (FullOpts)
          14 (25.93 % of base) : 8337.dasm - FSharp.Compiler.CodeAnalysis.TextContainer:System.IDisposable.Dispose():this (FullOpts)
          10 (25.00 % of base) : 31027.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.__Canon]:TryGetValue(int,byref):ubyte:this (FullOpts)
          28 (24.14 % of base) : 11670.dasm - FSharp.Compiler.Infos+PropInfo:get_TcGlobals():FSharp.Compiler.TcGlobals+TcGlobals:this (FullOpts)
           8 (23.53 % of base) : 5645.dasm - Microsoft.FSharp.Collections.ListModule+groupByRefType@560-3[System.__Canon,System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
           8 (22.22 % of base) : 32257.dasm - Microsoft.CodeAnalysis.Collections.OrderedSet`1[System.__Canon]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts)
           8 (22.22 % of base) : 3894.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Length():int:this (FullOpts)
          12 (22.22 % of base) : 5522.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (FullOpts)

Top method improvements (percentages):
        -132 (-9.54 % of base) : 17174.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         -36 (-9.42 % of base) : 23068.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
         -40 (-4.11 % of base) : 36710.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
         -22 (-3.27 % of base) : 30739.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -38 (-2.46 % of base) : 18611.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[][] (FullOpts)
          -6 (-2.44 % of base) : 36593.dasm - System.Management.Automation.ScriptDebugger+<GetCallStack>d__105:MoveNext():ubyte:this (FullOpts)
          -8 (-1.81 % of base) : 20341.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
          -2 (-1.61 % of base) : 15010.dasm - System.Buffers.Latin1CharSearchValues:IndexOfAny[System.Buffers.IndexOfAnyAsciiSearcher+Negate](byref,int):int:this (FullOpts)
         -10 (-1.44 % of base) : 23916.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (FullOpts)
          -6 (-1.32 % of base) : 19680.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -10 (-1.30 % of base) : 6039.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
          -4 (-1.16 % of base) : 32634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
         -24 (-1.06 % of base) : 23034.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 (FullOpts)
          -2 (-1.01 % of base) : 24578.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstructedNamedTypeSymbol:TypeParametersMatchTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
         -18 (-0.98 % of base) : 23080.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)
          -6 (-0.97 % of base) : 9570.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
         -36 (-0.95 % of base) : 16974.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
         -14 (-0.89 % of base) : 37666.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
         -12 (-0.87 % of base) : 18768.dasm - Microsoft.ML.Internal.Utilities.ResourceManagerUtils:DownloadResource(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Runtime.IChannel,System.Net.WebClient,System.Uri,System.String,System.String,System.Threading.CancellationToken):System.Exception:this (FullOpts)
         -78 (-0.86 % of base) : 7708.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)



windows x86

Diffs are based on 2,291,575 contexts (840,452 MinOpts, 1,451,123 FullOpts).

MISSED contexts: base: 6,850 (0.30%), diff: 7,552 (0.33%)

Overall (+65,644 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 6,959,786 +3,190
benchmarks.run_pgo.windows.x86.checked.mch 45,633,676 +2,999
benchmarks.run_tiered.windows.x86.checked.mch 9,313,285 +2,380
coreclr_tests.run.windows.x86.checked.mch 308,728,365 -8,577
libraries.crossgen2.windows.x86.checked.mch 31,654,820 -1,036
libraries.pmi.windows.x86.checked.mch 47,961,722 +11,632
libraries_tests.run.windows.x86.Release.mch 186,473,129 +40,825
librariestestsnotieredcompilation.run.windows.x86.Release.mch 102,590,267 +12,190
realworld.run.windows.x86.checked.mch 10,958,137 +2,041

FullOpts (+65,644 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 6,959,507 +3,190
benchmarks.run_pgo.windows.x86.checked.mch 39,020,797 +2,999
benchmarks.run_tiered.windows.x86.checked.mch 5,045,846 +2,380
coreclr_tests.run.windows.x86.checked.mch 107,034,060 -8,577
libraries.crossgen2.windows.x86.checked.mch 31,653,763 -1,036
libraries.pmi.windows.x86.checked.mch 47,866,408 +11,632
libraries_tests.run.windows.x86.Release.mch 88,316,698 +40,825
librariestestsnotieredcompilation.run.windows.x86.Release.mch 93,920,559 +12,190
realworld.run.windows.x86.checked.mch 10,662,437 +2,041

Example diffs

benchmarks.run.windows.x86.checked.mch

-19 (-4.19%) : 4445.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x28] class-hnd single-def <System.String[]>
+; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x24] class-hnd single-def <System.String[]>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]> ; V02 arg2 [V02,T09] ( 2, 5 ) int -> [ebp+0x0C] single-def ; V03 arg3 [V03,T19] ( 1, 1 ) int -> [ebp+0x08] single-def ; V04 loc0 [V04,T11] ( 4, 3 ) int -> [ebp-0x10] spill-single-def ; V05 loc1 [V05,T10] ( 8, 4 ) int -> [ebp-0x14] spill-single-def
-; V06 loc2 [V06,T03] ( 13, 24.16) ref -> [ebp-0x2C] class-hnd spill-single-def <int[]>
+; V06 loc2 [V06,T03] ( 13, 24.16) ref -> [ebp-0x28] class-hnd spill-single-def <int[]>
; V07 loc3 [V07,T08] ( 4, 5 ) int -> [ebp-0x18] ; V08 loc4 [V08,T16] ( 3, 1.50) ref -> esi class-hnd single-def <int[]> ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]> ; V10 loc6 [V10,T05] ( 6, 18.50) int -> edx ;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V12 loc8 [V12,T04] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def
+; V12 loc8 [V12,T04] ( 6, 20 ) int -> ebx
; V13 loc9 [V13,T02] ( 7, 32 ) int -> eax ; V14 loc10 [V14,T00] ( 12, 74.16) int -> edi
-; V15 loc11 [V15,T01] ( 5, 34 ) byref -> registers
+; V15 loc11 [V15,T01] ( 5, 34 ) byref -> esi
;* V16 tmp0 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V17 tmp1 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp2 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <int[]> @@ -32,15 +32,15 @@ ; V21 tmp5 [V21,T12] ( 2, 2 ) ref -> eax single-def "Single return block return value" ;* V22 tmp6 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp7 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp8 [V24,T17] ( 3, 1.50) byref -> [ebp-0x30] "field V16._reference (fldOffset=0x0)" P-INDEP -; V25 tmp9 [V25,T18] ( 3, 1.50) int -> [ebp-0x20] "field V16._length (fldOffset=0x4)" P-INDEP
+; V24 tmp8 [V24,T17] ( 3, 1.50) byref -> [ebp-0x2C] "field V16._reference (fldOffset=0x0)" P-INDEP +; V25 tmp9 [V25,T18] ( 3, 1.50) int -> [ebp-0x1C] "field V16._length (fldOffset=0x4)" P-INDEP
; V26 tmp10 [V26,T13] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V27 tmp11 [V27,T14] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V28 tmp12 [V28,T15] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ;* V29 cse0 [V29,T20] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V30 cse1 [V30,T07] ( 4, 6.50) int -> [ebp-0x24] spill-single-def "CSE - moderate"
+; V30 cse1 [V30,T07] ( 4, 6.50) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 36
+; Lcl frame size = 32
G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -48,7 +48,7 @@ G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 36
+ sub esp, 32
vzeroupper mov esi, ecx ; gcrRegs +[esi] @@ -60,18 +60,18 @@ G_M57321_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 inc ebx mov dword ptr [ebp-0x10], ebx mov ecx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x24], ecx
+ mov dword ptr [ebp-0x20], ecx
mov eax, ecx cdq idiv edx:eax, ebx cmp eax, 5
- jg G_M57321_IG20
+ jg G_M57321_IG16
;; size=29 bbWeight=1 PerfScore 32.50 G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz lea eax, [ebx+4*ebx] mov dword ptr [ebp-0x14], eax cmp eax, 0xD1FFAB1E
- jg G_M57321_IG20
+ jg G_M57321_IG16
mov ecx, 0xD1FFAB1E mov edx, 54 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -81,20 +81,20 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V06} test eax, eax jne SHORT G_M57321_IG04 mov edx, dword ptr [ebp-0x14] test edx, edx
- jne G_M57321_IG26
+ jne G_M57321_IG21
xor ecx, ecx ; byrRegs +[ecx]
- mov bword ptr [ebp-0x30], ecx
+ mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V24} xor ecx, ecx ; byrRegs -[ecx]
- mov dword ptr [ebp-0x20], ecx
+ mov dword ptr [ebp-0x1C], ecx
jmp SHORT G_M57321_IG05 ;; size=79 bbWeight=0.50 PerfScore 11.12 G_M57321_IG04: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref @@ -102,31 +102,31 @@ G_M57321_IG04: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000041 mov ecx, dword ptr [eax+0x04] mov edx, dword ptr [ebp-0x14] cmp dword ptr [eax+0x04], edx
- jb G_M57321_IG26
+ jb G_M57321_IG21
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx]
- mov bword ptr [ebp-0x30], ecx
+ mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V24}
- mov dword ptr [ebp-0x20], edx
+ mov dword ptr [ebp-0x1C], edx
;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M57321_IG05: ; bbWeight=0.50, gcVars=00020008 {V06 V24}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M57321_IG05: ; bbWeight=0.50, gcVars=00020008 {V06 V24}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; byrRegs -[ecx] push -1
- mov ecx, bword ptr [ebp-0x30]
+ mov ecx, bword ptr [ebp-0x2C]
; byrRegs +[ecx]
- mov edx, dword ptr [ebp-0x20]
+ mov edx, dword ptr [ebp-0x1C]
; GC ptr vars -{V24} call [<unknown method>] ; byrRegs -[ecx] xor ecx, ecx mov dword ptr [ebp-0x18], ecx xor edx, edx
- cmp dword ptr [ebp-0x24], 0 - jle G_M57321_IG18 - ;; size=31 bbWeight=0.50 PerfScore 5.25
+ cmp dword ptr [ebp-0x20], 0 + jle SHORT G_M57321_IG14 + ;; size=27 bbWeight=0.50 PerfScore 5.25
G_M57321_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x28], esi
+ mov gword ptr [ebp-0x24], esi
; GC ptr vars +{V00} mov ebx, gword ptr [esi+4*edx+0x08] ; gcrRegs +[ebx] @@ -135,21 +135,20 @@ G_M57321_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp+0x0C], edi sub ebx, edi lea ebx, [ebx+4*ebx]
- mov dword ptr [ebp-0x1C], ebx
lea eax, [ebx+0x05] mov edi, ebx cmp ebx, eax
- jge SHORT G_M57321_IG17 - ;; size=30 bbWeight=4 PerfScore 39.00
+ jge SHORT G_M57321_IG13 + ;; size=27 bbWeight=4 PerfScore 35.00
G_M57321_IG07: ; bbWeight=2, gcVars=00000048 {V00 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]
- mov ecx, gword ptr [ebp-0x2C]
+ mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57321_IG12
+ je SHORT G_M57321_IG10
mov esi, ebx or esi, eax
- jl SHORT G_M57321_IG11
+ jl SHORT G_M57321_IG10
cmp dword ptr [ecx+0x04], eax jl SHORT G_M57321_IG10 ;; size=18 bbWeight=2 PerfScore 15.50 @@ -157,64 +156,51 @@ G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=00000002 {ecx}, byrefRegs=0000 lea esi, bword ptr [ecx+4*edi+0x08] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jl SHORT G_M57321_IG15
+ jl SHORT G_M57321_IG11
inc edi cmp edi, eax jl SHORT G_M57321_IG08 ;; size=14 bbWeight=15.84 PerfScore 102.96
-G_M57321_IG09: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG09: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[esi]
- jmp SHORT G_M57321_IG17 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57321_IG12 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M57321_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ;; size=0 bbWeight=1 PerfScore 0.00 -G_M57321_IG12: ; bbWeight=0.16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57321_IG13 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M57321_IG10: ; bbWeight=0.16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, dword ptr [ecx+0x04]
- jae G_M57321_IG25 - lea ebx, bword ptr [ecx+4*edi+0x08] - ; byrRegs +[ebx] - cmp dword ptr [ebx], 0 - mov esi, ebx
+ jae G_M57321_IG20 + lea esi, bword ptr [ecx+4*edi+0x08]
; byrRegs +[esi]
- jl SHORT G_M57321_IG14
+ cmp dword ptr [esi], 0 + jl SHORT G_M57321_IG11
inc edi cmp edi, eax
- jl SHORT G_M57321_IG12 - ;; size=25 bbWeight=0.16 PerfScore 1.72 -G_M57321_IG13: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ebx esi] - jmp SHORT G_M57321_IG17 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG14: ; bbWeight=0.08, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref - ; byrRegs +[esi] - mov ebx, dword ptr [ebp-0x1C] - ;; size=3 bbWeight=0.08 PerfScore 0.08 -G_M57321_IG15: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
+ jl SHORT G_M57321_IG10 + jmp SHORT G_M57321_IG13 + ;; size=25 bbWeight=0.16 PerfScore 2.00 +G_M57321_IG11: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
cmp edi, ebx
- jne SHORT G_M57321_IG16
+ jne SHORT G_M57321_IG12
mov ebx, dword ptr [ebp-0x18] inc ebx mov dword ptr [ebp-0x18], ebx ;; size=11 bbWeight=2 PerfScore 7.00
-G_M57321_IG16: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
+G_M57321_IG12: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
mov dword ptr [esi], edx ;; size=2 bbWeight=2 PerfScore 2.00
-G_M57321_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] ; byrRegs -[esi] cmp edi, eax
- je SHORT G_M57321_IG19
+ je SHORT G_M57321_IG15
inc edx
- mov edi, dword ptr [ebp-0x24] - cmp edi, edx - mov esi, gword ptr [ebp-0x28]
+ mov ebx, dword ptr [ebp-0x20] + cmp ebx, edx + mov esi, gword ptr [ebp-0x24]
...

-29 (-3.77%) : 18767.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 19 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 13, 8.50) ref -> [ebp-0x68] this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T07] ( 8, 8.50) ref -> [ebp-0x6C] ld-addr-op class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T00] ( 10, 29 ) byref -> [ebp-0x70]
+; V00 this [V00,T06] ( 13, 8.50) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T07] ( 8, 8.50) ref -> [ebp-0x68] ld-addr-op class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T00] ( 10, 29 ) byref -> [ebp-0x6C]
; V03 loc1 [V03,T36] ( 3, 2 ) byref -> eax
-; V04 loc2 [V04,T18] ( 4, 3.50) ref -> [ebp-0x74] class-hnd spill-single-def <<unknown class>>
+; V04 loc2 [V04,T18] ( 4, 3.50) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
; V05 loc3 [V05,T14] ( 3, 5 ) int -> [ebp-0x10] spill-single-def ; V06 loc4 [V06,T01] ( 6, 13.50) int -> [ebp-0x14] ; V07 loc5 [V07 ] ( 4, 12.50) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]> ; V08 loc6 [V08,T03] ( 4, 12.50) int -> esi
-; V09 loc7 [V09,T16] ( 3, 4.50) ref -> [ebp-0x78] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V09 loc7 [V09,T16] ( 3, 4.50) ref -> [ebp-0x74] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
; V10 loc8 [V10,T15] ( 3, 5 ) int -> [ebp-0x20] spill-single-def ; V11 loc9 [V11,T02] ( 6, 13.50) int -> [ebp-0x24] ; V12 loc10 [V12 ] ( 4, 12.50) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]> @@ -60,9 +60,9 @@ ; V49 tmp35 [V49 ] ( 4, 12.50) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP ; V50 tmp36 [V50 ] ( 2, 4.50) ref -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V12._items (fldOffset=0x0)" P-DEP ; V51 tmp37 [V51 ] ( 4, 12.50) int -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
-; V52 tmp38 [V52,T46] ( 2, 1 ) ref -> [ebp-0x7C] spill-single-def "field V28._items (fldOffset=0x0)" P-INDEP
+; V52 tmp38 [V52,T46] ( 2, 1 ) ref -> [ebp-0x78] spill-single-def "field V28._items (fldOffset=0x0)" P-INDEP
; V53 tmp39 [V53,T48] ( 2, 1 ) int -> [ebp-0x38] spill-single-def "field V28._length (fldOffset=0x4)" P-INDEP
-; V54 tmp40 [V54,T47] ( 2, 1 ) ref -> [ebp-0x80] spill-single-def "field V38._items (fldOffset=0x0)" P-INDEP
+; V54 tmp40 [V54,T47] ( 2, 1 ) ref -> [ebp-0x7C] spill-single-def "field V38._items (fldOffset=0x0)" P-INDEP
; V55 tmp41 [V55,T49] ( 2, 1 ) int -> [ebp-0x3C] spill-single-def "field V38._length (fldOffset=0x4)" P-INDEP ; V56 tmp42 [V56,T27] ( 3, 3 ) int -> eax "index expr" ; V57 tmp43 [V57,T28] ( 3, 3 ) int -> edx "index expr" @@ -71,20 +71,20 @@ ; V60 tmp46 [V60,T30] ( 3, 3 ) int -> edx "index expr" ; V61 tmp47 [V61,T11] ( 2, 8 ) ref -> edx "argument with side effect" ; V62 cse0 [V62,T08] ( 4, 9 ) int -> [ebp-0x40] hoist multi-def "CSE - aggressive"
-; V63 cse1 [V63,T12] ( 11, 5.80) int -> [ebp-0x44] spill-single-def "CSE - moderate" -;* V64 rat0 [V64,T17] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V63 cse1 [V63,T12] ( 13, 7.30) int -> [ebp-0x44] spill-single-def "CSE - moderate" +; V64 rat0 [V64,T17] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
;* V65 rat1 [V65,T41] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V66 rat2 [V66,T13] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V66 rat2 [V66,T13] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; V67 rat3 [V67,T38] ( 3, 2 ) int -> ecx "runtime lookup" ; V68 rat4 [V68,T31] ( 3, 2.80) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat5 [V69,T39] ( 3, 2 ) int -> edi "runtime lookup"
+; V69 rat5 [V69,T39] ( 3, 2 ) int -> registers "runtime lookup"
; V70 rat6 [V70,T32] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable" ; V71 rat7 [V71,T33] ( 3, 2.80) int -> ecx "fgMakeTemp is creating a new local variable" ; V72 rat8 [V72,T40] ( 3, 2 ) int -> eax "runtime lookup" ; V73 rat9 [V73,T34] ( 3, 2.80) int -> eax "fgMakeTemp is creating a new local variable" ; V74 rat10 [V74,T05] ( 3, 11.20) int -> ecx "fgMakeTemp is creating a new local variable" ;* V75 rat11 [V75,T50] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V76 rat12 [V76,T35] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V76 rat12 [V76,T35] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
; V77 rat13 [V77,T23] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable" ; V78 rat14 [V78 ] ( 1, 1 ) long -> [ebp-0x4C] multireg-ret "ReplaceWithLclVar is creating a new local variable" ; V79 rat15 [V79,T51] ( 1, 1 ) int -> eax "field V78.lo (fldOffset=0x0)" P-INDEP @@ -99,10 +99,8 @@ ; V88 rat24 [V88 ] ( 1, 1 ) long -> [ebp-0x64] multireg-ret "ReplaceWithLclVar is creating a new local variable" ; V89 rat25 [V89,T54] ( 1, 1 ) int -> eax "field V88.lo (fldOffset=0x0)" P-INDEP ; V90 rat26 [V90,T45] ( 2, 1.50) int -> edx "field V88.hi (fldOffset=0x4)" P-INDEP
-; TEMP_02 ref -> [ebp-0x84] -; TEMP_01 int -> [ebp-0x88]
;
-; Lcl frame size = 124
+; Lcl frame size = 112
G_M65447_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -110,59 +108,55 @@ G_M65447_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 124 - vxorps xmm4, xmm4, xmm4 - vmovdqu ymmword ptr [ebp-0x84], ymm4 - vmovdqu ymmword ptr [ebp-0x64], ymm4 - vmovdqu ymmword ptr [ebp-0x44], ymm4 - vmovdqu xmmword ptr [ebp-0x24], xmm4 - mov gword ptr [ebp-0x68], ecx - ; GC ptr vars +{V00}
+ sub esp, 112 + xor eax, eax + mov dword ptr [ebp-0x1C], eax + mov dword ptr [ebp-0x18], eax + mov dword ptr [ebp-0x2C], eax + mov dword ptr [ebp-0x28], eax + mov ebx, ecx + ; gcrRegs +[ebx]
mov esi, edx ; gcrRegs +[esi]
- ;; size=41 bbWeight=1 PerfScore 14.08 -G_M65447_IG02: ; bbWeight=1, gcVars=0000000000000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=27 bbWeight=1 PerfScore 9.25 +G_M65447_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M65447_IG30 - mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
+ je G_M65447_IG31
mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x44], eax - mov ebx, gword ptr [ebp-0x68]
+ mov edi, eax + mov dword ptr [ebp-0x44], edi + mov ecx, edi + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x0C] + test ecx, ecx
cmp dword ptr [ebx+0x2C], 0
- jle G_M65447_IG28 - ;; size=29 bbWeight=1 PerfScore 10.25 -G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] - mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
+ jle G_M65447_IG05 + ;; size=37 bbWeight=1 PerfScore 15.00 +G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [ebx+0x0C] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x74], eax
+ mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V04} test eax, eax
- jne G_M65447_IG13
+ jne G_M65447_IG14
mov ecx, esi ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x6C], esi
+ mov gword ptr [ebp-0x68], esi
; GC ptr vars +{V01} mov eax, dword ptr [esi] ; gcrRegs -[eax] mov eax, dword ptr [eax+0x2C] ; GC ptr vars -{V04} call [eax+0x0C]<unknown method>
- ; gcrRegs -[ecx ebx esi]
+ ; gcrRegs -[ecx esi]
mov dword ptr [ebp-0x10], eax
- mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
mov edx, gword ptr [ebx+0x28] ; gcrRegs +[edx]
- mov gword ptr [ebp-0x7C], edx
+ mov gword ptr [ebp-0x78], edx
; GC ptr vars +{V52}
- mov ebx, gword ptr [ebp-0x68]
mov ecx, dword ptr [ebx+0x2C] mov dword ptr [ebp-0x38], ecx
- mov ebx, gword ptr [ebp-0x68]
lea ecx, bword ptr [ebx+0x04] ; byrRegs +[ecx] mov edx, dword ptr [ecx] @@ -172,7 +166,6 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push 0 push eax call CORINFO_HELP_LMUL
- ; gcrRegs -[ebx]
; byrRegs -[ecx] xor eax, eax add edx, 1 @@ -182,20 +175,18 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push 0 push dword ptr [ebp-0x38] call CORINFO_HELP_LMUL
- mov ecx, gword ptr [ebp-0x7C]
+ mov ecx, gword ptr [ebp-0x78]
; gcrRegs +[ecx] mov eax, edx sar eax, 14 cmp eax, dword ptr [ecx+0x04]
- jae G_M65447_IG29
+ jae G_M65447_IG30
mov ecx, gword ptr [ecx+4*eax+0x08] and edx, 0x3FFF cmp edx, dword ptr [ecx+0x04]
- jae G_M65447_IG29
+ jae G_M65447_IG30
mov eax, dword ptr [ecx+4*edx+0x08] mov dword ptr [ebp-0x14], eax
- mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
lea esi, bword ptr [ebx+0x30] ; byrRegs +[esi] lea edi, bword ptr [ebp-0x1C] @@ -211,23 +202,28 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr [ecx] mov ecx, dword ptr [ecx+0x20] test ecx, ecx
- je SHORT G_M65447_IG05 - ;; size=162 bbWeight=0.50 PerfScore 32.75 -G_M65447_IG04: ; bbWeight=0.40, gcVars=00000000000000C0 {V00 V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx]
+ je SHORT G_M65447_IG06 + ;; size=147 bbWeight=0.50 PerfScore 30.25 +G_M65447_IG04: ; bbWeight=0.40, gcVars=0000000000000080 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V52}
- jmp SHORT G_M65447_IG06
+ jmp SHORT G_M65447_IG07
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M65447_IG05: ; bbWeight=0.10, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M65447_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V01} + mov edi, dword ptr [ebp-0x44] + jmp G_M65447_IG29 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M65447_IG06: ; bbWeight=0.10, gcVars=0000000000000080 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V01}
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov ecx, eax ;; size=14 bbWeight=0.10 PerfScore 0.18
-G_M65447_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M65447_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x78], eax
+ mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V09} mov ecx, dword ptr [ebp-0x14] dec ecx @@ -236,98 +232,95 @@ G_M65447_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov edx, dword ptr [edx] mov edx, dword ptr [edx+0x18] test edx, edx
- je SHORT G_M65447_IG08
+ je SHORT G_M65447_IG09
;; size=28 bbWeight=0.50 PerfScore 6.75
-G_M65447_IG07: ; bbWeight=0.40, gcVars=00000000000100C0 {V00 V01 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M65447_IG08: ; bbWeight=0.40, gcVars=0000000000010080 {V01 V09}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov edi, edx - jmp SHORT G_M65447_IG09 - ;; size=4 bbWeight=0.40 PerfScore 0.90 -G_M65447_IG08: ; bbWeight=0.10, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M65447_IG10 + ;; size=2 bbWeight=0.40 PerfScore 0.80 +G_M65447_IG09: ; bbWeight=0.10, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edi, eax - ;; size=14 bbWeight=0.10 PerfScore 0.18 -G_M65447_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
...

-21 (-3.08%) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)

@@ -210,21 +210,21 @@ G_M64904_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {} vpor xmm2, xmm2, xmm4 vpmovmskb ecx, xmm2 popcnt ecx, ecx
- vmovups xmm2, xmmword ptr [ebp-0x44] - vpaddw xmm4, xmm0, xmm2
+ vpaddw xmm4, xmm0, xmmword ptr [ebp-0x44]
vpcmpgtw xmm4, xmm3, xmm4 vpmovmskb eax, xmm4 cmp eax, 0xFFFF jne SHORT G_M64904_IG20
- ;; size=55 bbWeight=4 PerfScore 83.00
+ ;; size=51 bbWeight=4 PerfScore 77.67
G_M64904_IG18: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz add ebx, ecx mov eax, dword ptr [ebp-0x74] adc eax, 0 cmp esi, edi mov dword ptr [ebp-0x74], eax
+ mov edi, dword ptr [ebp-0x48]
jbe SHORT G_M64904_IG15
- ;; size=15 bbWeight=16 PerfScore 64.00
+ ;; size=18 bbWeight=16 PerfScore 80.00
G_M64904_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x14] jmp G_M64904_IG28 @@ -250,9 +250,7 @@ G_M64904_IG21: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov ecx, dword ptr [ebp-0x6C]
- vmovups xmm2, xmmword ptr [ebp-0x44] - vmovups xmm3, xmmword ptr [ebp-0x34] - ;; size=32 bbWeight=8 PerfScore 92.00
+ ;; size=22 bbWeight=8 PerfScore 44.00
G_M64904_IG22: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x70] mov edx, eax @@ -269,9 +267,7 @@ G_M64904_IG23: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov ecx, dword ptr [ebp-0x6C]
- vmovups xmm2, xmmword ptr [ebp-0x44] - vmovups xmm3, xmmword ptr [ebp-0x34] - ;; size=32 bbWeight=8 PerfScore 92.00
+ ;; size=22 bbWeight=8 PerfScore 44.00
G_M64904_IG24: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x70] shl eax, 2 @@ -292,9 +288,9 @@ G_M64904_IG26: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 { sub edi, eax add eax, eax sub ebx, eax
- mov eax, dword ptr [ebp-0x74] - sbb eax, 0 - mov dword ptr [ebp-0x74], eax
+ mov edx, dword ptr [ebp-0x74] + sbb edx, 0 + mov dword ptr [ebp-0x74], edx
mov dword ptr [ebp-0x10], edi mov edi, dword ptr [ebp-0x48] jmp G_M64904_IG18 @@ -385,6 +381,6 @@ RWD16 dq 7800780078007800h, 7800780078007800h RWD32 dq A000A000A000A000h, A000A000A000A000h
-; Total bytes of code 682, prolog size 16, PerfScore 1263.75, instruction count 214, allocated bytes for code 682 (MethodHash=96570277) for method System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
+; Total bytes of code 661, prolog size 16, PerfScore 1178.42, instruction count 210, allocated bytes for code 661 (MethodHash=96570277) for method System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
; ============================================================

+10 (+66.67%) : 17958.dasm - System.Collections.Immutable.ImmutableArray1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]> ; V04 tmp3 [V04,T03] ( 2, 2 ) ref -> eax single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
;* V06 rat1 [V06,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -25,18 +25,22 @@ G_M61652_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M61652_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- cmp dword ptr [esi], esi
+ mov ecx, dword ptr [esi] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x18] + test ecx, ecx
mov ecx, esi ; gcrRegs +[ecx] call [System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToArray():System.__Canon[]:this] ; gcrRegs -[ecx] +[eax] ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 6.25
+ ;; size=20 bbWeight=1 PerfScore 11.50
G_M61652_IG03: ; bbWeight=1, epilog, nogc, extend pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 15, prolog size 1, PerfScore 9.00, instruction count 7, allocated bytes for code 15 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 25, prolog size 1, PerfScore 14.25, instruction count 11, allocated bytes for code 25 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
; ============================================================

+24 (+104.35%) : 4434.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (FullOpts)

@@ -15,13 +15,13 @@ ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> ecx single-def "V02.[000..004)" -;* V08 cse0 [V08,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V09 rat0 [V09,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> eax single-def "V02.[000..004)" +; V08 cse0 [V08,T04] ( 3, 3 ) int -> ecx "CSE - aggressive" +; V09 rat0 [V09,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V10 rat1 [V10,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V11 rat2 [V11,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 rat2 [V11,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;* V12 rat3 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat4 [V13,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -31,22 +31,33 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M20412_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
- cmp dword ptr [esi], esi - mov ecx, gword ptr [esp+0x0C] - ; gcrRegs +[ecx]
+ mov ecx, dword ptr [esi] + mov eax, ecx + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax + mov eax, gword ptr [esp+0x0C] + ; gcrRegs +[eax] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
+ test eax, eax
je SHORT G_M20412_IG04
- ;; size=10 bbWeight=1 PerfScore 5.25 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 17.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, eax + ; gcrRegs +[ecx]
call [System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.62
G_M20412_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi ret 16 ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 23, prolog size 1, PerfScore 10.50, instruction count 9, allocated bytes for code 23 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
+; Total bytes of code 47, prolog size 1, PerfScore 22.38, instruction count 19, allocated bytes for code 47 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
; ============================================================

+24 (+104.35%) : 5450.dasm - System.Collections.Immutable.ImmutableHashSet1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)

@@ -16,13 +16,13 @@ ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref "field V02._firstValue (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 3, 2.50) ref -> ecx single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP -;* V09 cse0 [V09,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V10 rat0 [V10,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V08 tmp5 [V08,T05] ( 3, 2.50) ref -> eax single-def "field V02._additionalElements (fldOffset=0x4)" P-INDEP +; V09 cse0 [V09,T04] ( 3, 3 ) int -> ecx "CSE - aggressive" +; V10 rat0 [V10,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V11 rat1 [V11,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V12 rat2 [V12,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V12 rat2 [V12,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;* V13 rat3 [V13,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V14 rat4 [V14,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -32,22 +32,33 @@ G_M10050_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M10050_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
- cmp dword ptr [esi], esi - mov ecx, gword ptr [esp+0x10] - ; gcrRegs +[ecx]
+ mov ecx, dword ptr [esi] + mov eax, ecx + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x08] + test eax, eax + mov eax, gword ptr [esp+0x10] + ; gcrRegs +[eax] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x0C]
test ecx, ecx
+ test eax, eax
je SHORT G_M10050_IG04
- ;; size=10 bbWeight=1 PerfScore 5.25 -G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 17.00 +G_M10050_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, eax + ; gcrRegs +[ecx]
call [System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:Freeze():this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.62
G_M10050_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi ret 12 ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 23, prolog size 1, PerfScore 10.50, instruction count 9, allocated bytes for code 23 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
+; Total bytes of code 47, prolog size 1, PerfScore 22.38, instruction count 19, allocated bytes for code 47 (MethodHash=2c0dd8bd) for method System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
; ============================================================

benchmarks.run_pgo.windows.x86.checked.mch

-15 (-8.52%) : 8631.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)

@@ -13,7 +13,7 @@ ; V01 arg1 [V01,T02] ( 7, 4.89) ref -> edx class-hnd <System.Object> ; V02 loc0 [V02,T07] ( 4, 3.56) int -> [ebp-0x14] spill-single-def ;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 tmp0 [V04,T10] ( 4, 0.89) int -> ecx "Inline return value spill temp"
+; V04 tmp0 [V04,T10] ( 4, 0.89) int -> eax "Inline return value spill temp"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]> ; V06 tmp2 [V06,T06] ( 4, 4 ) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp" ; V07 tmp3 [V07,T05] ( 4, 5.56) int -> ebx "Inline stloc first use temp" @@ -21,7 +21,7 @@ ; V09 tmp5 [V09,T03] ( 5, 6.44) byref -> esi "Inline stloc first use temp" ; V10 tmp6 [V10,T01] ( 5, 7.33) int -> edi "Inline stloc first use temp" ; V11 tmp7 [V11,T08] ( 2, 3.56) int -> eax "Inline stloc first use temp"
-; V12 tmp8 [V12,T09] ( 3, 2 ) int -> registers "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 3, 2 ) int -> eax "Inline stloc first use temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V15 tmp11 [V15,T11] ( 2, 0.44) ref -> edi single-def "Field obj" @@ -94,12 +94,12 @@ G_M9847_IG08: ; bbWeight=0.89, gcrefRegs=00000004 {edx}, byrefRegs=000000 mov eax, dword ptr [ebp-0x10] xor eax, dword ptr [esi+0x08] cmp eax, 1
- jbe SHORT G_M9847_IG12
+ jbe SHORT G_M9847_IG11
;; size=11 bbWeight=0.89 PerfScore 4.67 G_M9847_IG09: ; bbWeight=1.78, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz ; byrRegs -[esi] test edi, edi
- je SHORT G_M9847_IG11
+ je SHORT G_M9847_IG12
inc ecx add ebx, ecx mov edi, bword ptr [ebp-0x18] @@ -111,43 +111,36 @@ G_M9847_IG09: ; bbWeight=1.78, gcrefRegs=00000004 {edx}, byrefRegs=000000 G_M9847_IG10: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[edi] ; GC ptr vars -{V06}
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M9847_IG13 - ;; size=5 bbWeight=0.22 PerfScore 0.67 -G_M9847_IG11: ; bbWeight=0.89, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M9847_IG13 - ;; size=5 bbWeight=0.89 PerfScore 2.67 -G_M9847_IG12: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ jmp SHORT G_M9847_IG12 + ;; size=2 bbWeight=0.22 PerfScore 0.44 +G_M9847_IG11: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs +[esi]
- mov ecx, eax - mov eax, dword ptr [ebp-0x10]
cmp edi, dword ptr [esi]
- jne SHORT G_M9847_IG13 - jmp SHORT G_M9847_IG14 - ;; size=11 bbWeight=0.22 PerfScore 1.61 -G_M9847_IG13: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M9847_IG12 + jmp SHORT G_M9847_IG13 + ;; size=6 bbWeight=0.22 PerfScore 1.33 +G_M9847_IG12: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; byrRegs -[esi]
- mov ecx, 2
+ mov eax, 2
;; size=5 bbWeight=0.22 PerfScore 0.06
-G_M9847_IG14: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz - cmp ecx, 1
+G_M9847_IG13: ; bbWeight=0.22, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + cmp eax, 1
je SHORT G_M9847_IG04
- test ecx, ecx - jne SHORT G_M9847_IG16
+ test eax, eax + jne SHORT G_M9847_IG15
;; size=9 bbWeight=0.22 PerfScore 0.56
-G_M9847_IG15: ; bbWeight=0.11, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M9847_IG14: ; bbWeight=0.11, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] xor edx, edx ; gcrRegs +[edx]
- jmp G_M9847_IG04 - ;; size=7 bbWeight=0.11 PerfScore 0.25 -G_M9847_IG16: ; bbWeight=0.11, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref - mov ecx, eax
+ jmp SHORT G_M9847_IG04 + ;; size=4 bbWeight=0.11 PerfScore 0.25 +G_M9847_IG15: ; bbWeight=0.11, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref + mov ecx, dword ptr [ebp-0x10]
call <unknown method> ; gcrRegs -[edx] +[eax]
- ;; size=7 bbWeight=0.11 PerfScore 0.14 -G_M9847_IG17: ; bbWeight=0.11, epilog, nogc, extend
+ ;; size=8 bbWeight=0.11 PerfScore 0.22 +G_M9847_IG16: ; bbWeight=0.11, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -156,6 +149,6 @@ G_M9847_IG17: ; bbWeight=0.11, epilog, nogc, extend ret ;; size=8 bbWeight=0.11 PerfScore 0.39
-; Total bytes of code 176, prolog size 11, PerfScore 54.19, instruction count 75, allocated bytes for code 176 (MethodHash=fd20d988) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 161, prolog size 11, PerfScore 51.11, instruction count 70, allocated bytes for code 161 (MethodHash=fd20d988) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
; ============================================================

-12 (-6.45%) : 61677.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)

@@ -12,9 +12,9 @@ ; V00 arg0 [V00,T03] ( 6, 3.14) int -> [ebp-0x10] single-def ; V01 arg1 [V01,T00] ( 6, 4.30) ref -> edx class-hnd single-def <System.Object> ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T12] ( 2, 0.05) ref -> esi class-hnd single-def <System.Object>
+; V03 loc1 [V03,T12] ( 2, 0.05) ref -> edi class-hnd single-def <System.Object>
; V04 loc2 [V04,T08] ( 4, 2.07) int -> [ebp-0x14] spill-single-def
-; V05 tmp0 [V05,T10] ( 4, 0.51) int -> ebx "Inline return value spill temp"
+; V05 tmp0 [V05,T10] ( 4, 0.51) int -> esi "Inline return value spill temp"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]> ; V07 tmp2 [V07,T06] ( 4, 2.93) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp" ; V08 tmp3 [V08,T05] ( 4, 4.07) int -> ebx "Inline stloc first use temp" @@ -22,7 +22,7 @@ ; V10 tmp5 [V10,T04] ( 5, 4.72) byref -> esi "Inline stloc first use temp" ; V11 tmp6 [V11,T02] ( 5, 5.37) int -> edi "Inline stloc first use temp" ; V12 tmp7 [V12,T07] ( 2, 2.60) int -> eax "Inline stloc first use temp"
-; V13 tmp8 [V13,T09] ( 3, 1.47) int -> registers "Inline stloc first use temp"
+; V13 tmp8 [V13,T09] ( 3, 1.47) int -> eax "Inline stloc first use temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V16 tmp11 [V16,T11] ( 2, 0.33) ref -> edi single-def "Field obj" @@ -95,12 +95,12 @@ G_M33320_IG08: ; bbWeight=0.65, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] xor eax, dword ptr [esi+0x08] cmp eax, 1
- jbe SHORT G_M33320_IG12
+ jbe SHORT G_M33320_IG11
;; size=11 bbWeight=0.65 PerfScore 3.42 G_M33320_IG09: ; bbWeight=1.30, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz ; byrRegs -[esi] test edi, edi
- je SHORT G_M33320_IG11
+ je SHORT G_M33320_IG12
inc ecx add ebx, ecx mov edi, bword ptr [ebp-0x18] @@ -112,44 +112,39 @@ G_M33320_IG09: ; bbWeight=1.30, gcrefRegs=00000004 {edx}, byrefRegs=00000 G_M33320_IG10: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[edi] ; GC ptr vars -{V07}
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M33320_IG13 - ;; size=5 bbWeight=0.16 PerfScore 0.49 -G_M33320_IG11: ; bbWeight=0.65, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M33320_IG13 - ;; size=5 bbWeight=0.65 PerfScore 1.95 -G_M33320_IG12: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ jmp SHORT G_M33320_IG12 + ;; size=2 bbWeight=0.16 PerfScore 0.33 +G_M33320_IG11: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs +[esi]
- mov ebx, eax - mov eax, dword ptr [ebp-0x10]
cmp edi, dword ptr [esi]
- jne SHORT G_M33320_IG13 - jmp SHORT G_M33320_IG14 - ;; size=11 bbWeight=0.16 PerfScore 1.18 -G_M33320_IG13: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M33320_IG12 + mov esi, eax
; byrRegs -[esi]
- mov ebx, 2
+ jmp SHORT G_M33320_IG13 + ;; size=8 bbWeight=0.16 PerfScore 1.02 +G_M33320_IG12: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref + mov esi, 2
;; size=5 bbWeight=0.16 PerfScore 0.04
-G_M33320_IG14: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref - cmp ebx, 1 - je G_M33320_IG03 - ;; size=9 bbWeight=0.16 PerfScore 0.20 -G_M33320_IG15: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG13: ; bbWeight=0.16, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + cmp esi, 1 + je SHORT G_M33320_IG03 + ;; size=5 bbWeight=0.16 PerfScore 0.20 +G_M33320_IG14: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x10]
mov ecx, eax call <unknown method> ; gcrRegs -[edx] +[eax]
- mov esi, eax - ; gcrRegs +[esi]
+ mov edi, eax + ; gcrRegs +[edi]
xor ecx, ecx
- test ebx, ebx
+ test esi, esi
setne cl call [System.Diagnostics.Debug:Assert(ubyte)] ; gcrRegs -[eax]
- mov eax, esi
+ mov eax, edi
; gcrRegs +[eax]
- ;; size=24 bbWeight=0.02 PerfScore 0.15 -G_M33320_IG16: ; bbWeight=0.02, epilog, nogc, extend
+ ;; size=27 bbWeight=0.02 PerfScore 0.17 +G_M33320_IG15: ; bbWeight=0.02, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -158,6 +153,6 @@ G_M33320_IG16: ; bbWeight=0.02, epilog, nogc, extend ret ;; size=8 bbWeight=0.02 PerfScore 0.08
-; Total bytes of code 186, prolog size 11, PerfScore 40.84, instruction count 77, allocated bytes for code 186 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 174, prolog size 11, PerfScore 38.59, instruction count 74, allocated bytes for code 174 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
; ============================================================

-12 (-6.45%) : 107730.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)

@@ -12,9 +12,9 @@ ; V00 arg0 [V00,T03] ( 6, 3.36) int -> [ebp-0x10] single-def ; V01 arg1 [V01,T00] ( 6, 4.49) ref -> edx class-hnd single-def <System.Object> ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T12] ( 2, 0.07) ref -> esi class-hnd single-def <System.Object>
+; V03 loc1 [V03,T12] ( 2, 0.07) ref -> edi class-hnd single-def <System.Object>
; V04 loc2 [V04,T08] ( 4, 2.49) int -> [ebp-0x14] spill-single-def
-; V05 tmp0 [V05,T10] ( 4, 0.54) int -> ebx "Inline return value spill temp"
+; V05 tmp0 [V05,T10] ( 4, 0.54) int -> esi "Inline return value spill temp"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]> ; V07 tmp2 [V07,T06] ( 4, 3.03) byref -> [ebp-0x18] spill-single-def "Inline stloc first use temp" ; V08 tmp3 [V08,T05] ( 4, 4.20) int -> ebx "Inline stloc first use temp" @@ -22,7 +22,7 @@ ; V10 tmp5 [V10,T04] ( 5, 4.87) byref -> esi "Inline stloc first use temp" ; V11 tmp6 [V11,T02] ( 5, 5.55) int -> edi "Inline stloc first use temp" ; V12 tmp7 [V12,T07] ( 2, 2.69) int -> eax "Inline stloc first use temp"
-; V13 tmp8 [V13,T09] ( 3, 1.51) int -> registers "Inline stloc first use temp"
+; V13 tmp8 [V13,T09] ( 3, 1.51) int -> eax "Inline stloc first use temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V16 tmp11 [V16,T11] ( 2, 0.34) ref -> edi single-def "Field obj" @@ -38,16 +38,16 @@ G_M33320_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b sub esp, 12 mov eax, ecx ;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx] test edx, edx
- je G_M33320_IG13 - ;; size=8 bbWeight=1 PerfScore 1.25
+ je SHORT G_M33320_IG12 + ;; size=4 bbWeight=1 PerfScore 1.25
G_M33320_IG03: ; bbWeight=0.49, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz mov esi, dword ptr [edx] mov dword ptr [ebp-0x14], esi cmp esi, eax
- je SHORT G_M33320_IG13
+ je SHORT G_M33320_IG12
;; size=9 bbWeight=0.49 PerfScore 2.07 G_M33320_IG04: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref mov edi, gword ptr [D1FFAB1EH] ; static handle @@ -82,12 +82,12 @@ G_M33320_IG06: ; bbWeight=0.67, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, dword ptr [ebp-0x10] xor eax, dword ptr [esi+0x08] cmp eax, 1
- jbe SHORT G_M33320_IG10
+ jbe SHORT G_M33320_IG09
;; size=11 bbWeight=0.67 PerfScore 3.53 G_M33320_IG07: ; bbWeight=1.34, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz ; byrRegs -[esi] test edi, edi
- je SHORT G_M33320_IG09
+ je SHORT G_M33320_IG10
inc ecx add ebx, ecx mov edi, bword ptr [ebp-0x18] @@ -99,34 +99,28 @@ G_M33320_IG07: ; bbWeight=1.34, gcrefRegs=00000004 {edx}, byrefRegs=00000 G_M33320_IG08: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[edi] ; GC ptr vars -{V07}
- mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M33320_IG11 - ;; size=5 bbWeight=0.17 PerfScore 0.50 -G_M33320_IG09: ; bbWeight=0.67, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x10] - jmp SHORT G_M33320_IG11 - ;; size=5 bbWeight=0.67 PerfScore 2.02 -G_M33320_IG10: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ jmp SHORT G_M33320_IG10 + ;; size=2 bbWeight=0.17 PerfScore 0.34 +G_M33320_IG09: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs +[esi]
- mov ebx, eax - mov eax, dword ptr [ebp-0x10]
cmp edi, dword ptr [esi]
- jne SHORT G_M33320_IG11 - jmp SHORT G_M33320_IG12 - ;; size=11 bbWeight=0.17 PerfScore 1.22 -G_M33320_IG11: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M33320_IG10 + mov esi, eax
; byrRegs -[esi]
- mov ebx, 2
+ jmp SHORT G_M33320_IG11 + ;; size=8 bbWeight=0.17 PerfScore 1.05 +G_M33320_IG10: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref + mov esi, 2
;; size=5 bbWeight=0.17 PerfScore 0.04
-G_M33320_IG12: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz - cmp ebx, 1 - jne SHORT G_M33320_IG15
+G_M33320_IG11: ; bbWeight=0.17, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + cmp esi, 1 + jne SHORT G_M33320_IG14
;; size=5 bbWeight=0.17 PerfScore 0.21
-G_M33320_IG13: ; bbWeight=0.97, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG12: ; bbWeight=0.97, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
mov eax, edx ; gcrRegs +[eax] ;; size=2 bbWeight=0.97 PerfScore 0.24
-G_M33320_IG14: ; bbWeight=0.97, epilog, nogc, extend
+G_M33320_IG13: ; bbWeight=0.97, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -134,22 +128,23 @@ G_M33320_IG14: ; bbWeight=0.97, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.97 PerfScore 3.38
-G_M33320_IG15: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG14: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
+ mov eax, dword ptr [ebp-0x10]
mov ecx, eax call <unknown method> ; gcrRegs -[edx] +[eax]
- mov esi, eax - ; gcrRegs +[esi]
+ mov edi, eax + ; gcrRegs +[edi]
xor ecx, ecx
- test ebx, ebx
+ test esi, esi
setne cl call [System.Diagnostics.Debug:Assert(ubyte)] ; gcrRegs -[eax]
- mov eax, esi
+ mov eax, edi
; gcrRegs +[eax]
- ;; size=24 bbWeight=0.03 PerfScore 0.21 -G_M33320_IG16: ; bbWeight=0.03, epilog, nogc, extend
+ ;; size=27 bbWeight=0.03 PerfScore 0.24 +G_M33320_IG15: ; bbWeight=0.03, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -158,6 +153,6 @@ G_M33320_IG16: ; bbWeight=0.03, epilog, nogc, extend ret ;; size=8 bbWeight=0.03 PerfScore 0.12
-; Total bytes of code 186, prolog size 11, PerfScore 42.65, instruction count 77, allocated bytes for code 186 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 174, prolog size 11, PerfScore 40.33, instruction count 74, allocated bytes for code 174 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
; ============================================================

+12 (+44.44%) : 82231.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo1[System.__Canon]):this (Tier1)

@@ -9,21 +9,21 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]>
; V01 arg1 [V01,T04] ( 1, 0 ) struct (16) [esp+0x08] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V03 rat0 [V03,T01] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V03 rat0 [V03,T01] ( 2, 0 ) int -> ecx "Spilling to split statement for tree"
;* V04 rat1 [V04,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat2 [V05,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat2 [V05,T02] ( 2, 0 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 G_M44880_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push esi mov esi, ecx
- ; gcrRegs +[esi]
;; size=3 bbWeight=1 PerfScore 1.25 G_M44880_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
cmp gword ptr [esi+0x08], 0 jne SHORT G_M44880_IG04 ;; size=6 bbWeight=1 PerfScore 4.00 @@ -32,6 +32,11 @@ G_M44880_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ret 16 ;; size=4 bbWeight=1 PerfScore 2.50 G_M44880_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov ecx, dword ptr [esi] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x48] + test ecx, ecx
mov ecx, esi ; gcrRegs +[ecx] mov edx, gword ptr [esp+0x0C] @@ -40,8 +45,8 @@ G_M44880_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} ; gcrRegs -[ecx edx] ; gcr arg pop 0 jmp SHORT G_M44880_IG03
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 27, prolog size 1, PerfScore 7.75, instruction count 10, allocated bytes for code 27 (MethodHash=282050af) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
+; Total bytes of code 39, prolog size 1, PerfScore 7.75, instruction count 15, allocated bytes for code 39 (MethodHash=282050af) for method Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
; ============================================================

+10 (+66.67%) : 73926.dasm - System.Collections.Immutable.ImmutableArray1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (Tier1)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]> ; V04 tmp3 [V04,T03] ( 2, 2 ) ref -> eax single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
;* V06 rat1 [V06,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -25,18 +25,22 @@ G_M61652_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M61652_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- cmp dword ptr [esi], esi
+ mov ecx, dword ptr [esi] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x18] + test ecx, ecx
mov ecx, esi ; gcrRegs +[ecx] call [System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToArray():System.__Canon[]:this] ; gcrRegs -[ecx] +[eax] ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 6.25
+ ;; size=20 bbWeight=1 PerfScore 11.50
G_M61652_IG03: ; bbWeight=1, epilog, nogc, extend pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 15, prolog size 1, PerfScore 9.00, instruction count 7, allocated bytes for code 15 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
+; Total bytes of code 25, prolog size 1, PerfScore 14.25, instruction count 11, allocated bytes for code 25 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
; ============================================================

+24 (+104.35%) : 26843.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (Tier1)

@@ -15,13 +15,13 @@ ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> ecx single-def "V02.[000..004)" -;* V08 cse0 [V08,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V09 rat0 [V09,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> eax single-def "V02.[000..004)" +; V08 cse0 [V08,T04] ( 3, 3 ) int -> ecx "CSE - aggressive" +; V09 rat0 [V09,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V10 rat1 [V10,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V11 rat2 [V11,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 rat2 [V11,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;* V12 rat3 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat4 [V13,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -31,22 +31,33 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M20412_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
- cmp dword ptr [esi], esi - mov ecx, gword ptr [esp+0x0C] - ; gcrRegs +[ecx]
+ mov ecx, dword ptr [esi] + mov eax, ecx + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax + mov eax, gword ptr [esp+0x0C] + ; gcrRegs +[eax] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
+ test eax, eax
je SHORT G_M20412_IG04
- ;; size=10 bbWeight=1 PerfScore 5.25 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 17.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, eax + ; gcrRegs +[ecx]
call [System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.62
G_M20412_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi ret 16 ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 23, prolog size 1, PerfScore 10.50, instruction count 9, allocated bytes for code 23 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
+; Total bytes of code 47, prolog size 1, PerfScore 22.38, instruction count 19, allocated bytes for code 47 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
; ============================================================

benchmarks.run_tiered.windows.x86.checked.mch

-19 (-4.19%) : 13748.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x28] class-hnd single-def <System.String[]>
+; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x24] class-hnd single-def <System.String[]>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]> ; V02 arg2 [V02,T09] ( 2, 5 ) int -> [ebp+0x0C] single-def ; V03 arg3 [V03,T19] ( 1, 1 ) int -> [ebp+0x08] single-def ; V04 loc0 [V04,T11] ( 4, 3 ) int -> [ebp-0x10] spill-single-def ; V05 loc1 [V05,T10] ( 8, 4 ) int -> [ebp-0x14] spill-single-def
-; V06 loc2 [V06,T03] ( 13, 24.16) ref -> [ebp-0x2C] class-hnd spill-single-def <int[]>
+; V06 loc2 [V06,T03] ( 13, 24.16) ref -> [ebp-0x28] class-hnd spill-single-def <int[]>
; V07 loc3 [V07,T08] ( 4, 5 ) int -> [ebp-0x18] ; V08 loc4 [V08,T16] ( 3, 1.50) ref -> esi class-hnd single-def <int[]> ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]> ; V10 loc6 [V10,T05] ( 6, 18.50) int -> edx ;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V12 loc8 [V12,T04] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def
+; V12 loc8 [V12,T04] ( 6, 20 ) int -> ebx
; V13 loc9 [V13,T02] ( 7, 32 ) int -> eax ; V14 loc10 [V14,T00] ( 12, 74.16) int -> edi
-; V15 loc11 [V15,T01] ( 5, 34 ) byref -> registers
+; V15 loc11 [V15,T01] ( 5, 34 ) byref -> esi
;* V16 tmp0 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V17 tmp1 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ;* V18 tmp2 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <int[]> @@ -32,15 +32,15 @@ ; V21 tmp5 [V21,T12] ( 2, 2 ) ref -> eax single-def "Single return block return value" ;* V22 tmp6 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp7 [V23 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V24 tmp8 [V24,T17] ( 3, 1.50) byref -> [ebp-0x30] "field V16._reference (fldOffset=0x0)" P-INDEP -; V25 tmp9 [V25,T18] ( 3, 1.50) int -> [ebp-0x20] "field V16._length (fldOffset=0x4)" P-INDEP
+; V24 tmp8 [V24,T17] ( 3, 1.50) byref -> [ebp-0x2C] "field V16._reference (fldOffset=0x0)" P-INDEP +; V25 tmp9 [V25,T18] ( 3, 1.50) int -> [ebp-0x1C] "field V16._length (fldOffset=0x4)" P-INDEP
; V26 tmp10 [V26,T13] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V27 tmp11 [V27,T14] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V28 tmp12 [V28,T15] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ;* V29 cse0 [V29,T20] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V30 cse1 [V30,T07] ( 4, 6.50) int -> [ebp-0x24] spill-single-def "CSE - moderate"
+; V30 cse1 [V30,T07] ( 4, 6.50) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 36
+; Lcl frame size = 32
G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -48,7 +48,7 @@ G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 36
+ sub esp, 32
vzeroupper mov esi, ecx ; gcrRegs +[esi] @@ -60,18 +60,18 @@ G_M57321_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 inc ebx mov dword ptr [ebp-0x10], ebx mov ecx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x24], ecx
+ mov dword ptr [ebp-0x20], ecx
mov eax, ecx cdq idiv edx:eax, ebx cmp eax, 5
- jg G_M57321_IG20
+ jg G_M57321_IG16
;; size=29 bbWeight=1 PerfScore 32.50 G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz lea eax, [ebx+4*ebx] mov dword ptr [ebp-0x14], eax cmp eax, 0xD1FFAB1E
- jg G_M57321_IG20
+ jg G_M57321_IG16
mov ecx, 0xD1FFAB1E mov edx, 50 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS @@ -81,20 +81,20 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V06} test eax, eax jne SHORT G_M57321_IG04 mov edx, dword ptr [ebp-0x14] test edx, edx
- jne G_M57321_IG26
+ jne G_M57321_IG21
xor ecx, ecx ; byrRegs +[ecx]
- mov bword ptr [ebp-0x30], ecx
+ mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V24} xor ecx, ecx ; byrRegs -[ecx]
- mov dword ptr [ebp-0x20], ecx
+ mov dword ptr [ebp-0x1C], ecx
jmp SHORT G_M57321_IG05 ;; size=79 bbWeight=0.50 PerfScore 11.12 G_M57321_IG04: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref @@ -102,31 +102,31 @@ G_M57321_IG04: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000041 mov ecx, dword ptr [eax+0x04] mov edx, dword ptr [ebp-0x14] cmp dword ptr [eax+0x04], edx
- jb G_M57321_IG26
+ jb G_M57321_IG21
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx]
- mov bword ptr [ebp-0x30], ecx
+ mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V24}
- mov dword ptr [ebp-0x20], edx
+ mov dword ptr [ebp-0x1C], edx
;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M57321_IG05: ; bbWeight=0.50, gcVars=00020008 {V06 V24}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M57321_IG05: ; bbWeight=0.50, gcVars=00020008 {V06 V24}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] ; byrRegs -[ecx] push -1
- mov ecx, bword ptr [ebp-0x30]
+ mov ecx, bword ptr [ebp-0x2C]
; byrRegs +[ecx]
- mov edx, dword ptr [ebp-0x20]
+ mov edx, dword ptr [ebp-0x1C]
; GC ptr vars -{V24} call [<unknown method>] ; byrRegs -[ecx] xor ecx, ecx mov dword ptr [ebp-0x18], ecx xor edx, edx
- cmp dword ptr [ebp-0x24], 0 - jle G_M57321_IG18 - ;; size=31 bbWeight=0.50 PerfScore 5.25
+ cmp dword ptr [ebp-0x20], 0 + jle SHORT G_M57321_IG14 + ;; size=27 bbWeight=0.50 PerfScore 5.25
G_M57321_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x28], esi
+ mov gword ptr [ebp-0x24], esi
; GC ptr vars +{V00} mov ebx, gword ptr [esi+4*edx+0x08] ; gcrRegs +[ebx] @@ -135,21 +135,20 @@ G_M57321_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp+0x0C], edi sub ebx, edi lea ebx, [ebx+4*ebx]
- mov dword ptr [ebp-0x1C], ebx
lea eax, [ebx+0x05] mov edi, ebx cmp ebx, eax
- jge SHORT G_M57321_IG17 - ;; size=30 bbWeight=4 PerfScore 39.00
+ jge SHORT G_M57321_IG13 + ;; size=27 bbWeight=4 PerfScore 35.00
G_M57321_IG07: ; bbWeight=2, gcVars=00000048 {V00 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]
- mov ecx, gword ptr [ebp-0x2C]
+ mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57321_IG12
+ je SHORT G_M57321_IG10
mov esi, ebx or esi, eax
- jl SHORT G_M57321_IG11
+ jl SHORT G_M57321_IG10
cmp dword ptr [ecx+0x04], eax jl SHORT G_M57321_IG10 ;; size=18 bbWeight=2 PerfScore 15.50 @@ -157,64 +156,51 @@ G_M57321_IG08: ; bbWeight=15.84, gcrefRegs=00000002 {ecx}, byrefRegs=0000 lea esi, bword ptr [ecx+4*edi+0x08] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jl SHORT G_M57321_IG15
+ jl SHORT G_M57321_IG11
inc edi cmp edi, eax jl SHORT G_M57321_IG08 ;; size=14 bbWeight=15.84 PerfScore 102.96
-G_M57321_IG09: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG09: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[esi]
- jmp SHORT G_M57321_IG17 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57321_IG12 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M57321_IG11: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ;; size=0 bbWeight=1 PerfScore 0.00 -G_M57321_IG12: ; bbWeight=0.16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57321_IG13 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M57321_IG10: ; bbWeight=0.16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
cmp edi, dword ptr [ecx+0x04]
- jae G_M57321_IG25 - lea ebx, bword ptr [ecx+4*edi+0x08] - ; byrRegs +[ebx] - cmp dword ptr [ebx], 0 - mov esi, ebx
+ jae G_M57321_IG20 + lea esi, bword ptr [ecx+4*edi+0x08]
; byrRegs +[esi]
- jl SHORT G_M57321_IG14
+ cmp dword ptr [esi], 0 + jl SHORT G_M57321_IG11
inc edi cmp edi, eax
- jl SHORT G_M57321_IG12 - ;; size=25 bbWeight=0.16 PerfScore 1.72 -G_M57321_IG13: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ebx esi] - jmp SHORT G_M57321_IG17 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG14: ; bbWeight=0.08, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref - ; byrRegs +[esi] - mov ebx, dword ptr [ebp-0x1C] - ;; size=3 bbWeight=0.08 PerfScore 0.08 -G_M57321_IG15: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
+ jl SHORT G_M57321_IG10 + jmp SHORT G_M57321_IG13 + ;; size=25 bbWeight=0.16 PerfScore 2.00 +G_M57321_IG11: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
cmp edi, ebx
- jne SHORT G_M57321_IG16
+ jne SHORT G_M57321_IG12
mov ebx, dword ptr [ebp-0x18] inc ebx mov dword ptr [ebp-0x18], ebx ;; size=11 bbWeight=2 PerfScore 7.00
-G_M57321_IG16: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
+G_M57321_IG12: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
mov dword ptr [esi], edx ;; size=2 bbWeight=2 PerfScore 2.00
-G_M57321_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] ; byrRegs -[esi] cmp edi, eax
- je SHORT G_M57321_IG19
+ je SHORT G_M57321_IG15
inc edx
- mov edi, dword ptr [ebp-0x24] - cmp edi, edx - mov esi, gword ptr [ebp-0x28]
+ mov ebx, dword ptr [ebp-0x20] + cmp ebx, edx + mov esi, gword ptr [ebp-0x24]
...

-29 (-3.77%) : 36392.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; 0 inlinees with PGO data; 19 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 13, 8.50) ref -> [ebp-0x68] this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T07] ( 8, 8.50) ref -> [ebp-0x6C] ld-addr-op class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T00] ( 10, 29 ) byref -> [ebp-0x70]
+; V00 this [V00,T06] ( 13, 8.50) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T07] ( 8, 8.50) ref -> [ebp-0x68] ld-addr-op class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T00] ( 10, 29 ) byref -> [ebp-0x6C]
; V03 loc1 [V03,T36] ( 3, 2 ) byref -> eax
-; V04 loc2 [V04,T18] ( 4, 3.50) ref -> [ebp-0x74] class-hnd spill-single-def <<unknown class>>
+; V04 loc2 [V04,T18] ( 4, 3.50) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
; V05 loc3 [V05,T14] ( 3, 5 ) int -> [ebp-0x10] spill-single-def ; V06 loc4 [V06,T01] ( 6, 13.50) int -> [ebp-0x14] ; V07 loc5 [V07 ] ( 4, 12.50) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]> ; V08 loc6 [V08,T03] ( 4, 12.50) int -> esi
-; V09 loc7 [V09,T16] ( 3, 4.50) ref -> [ebp-0x78] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+; V09 loc7 [V09,T16] ( 3, 4.50) ref -> [ebp-0x74] class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
; V10 loc8 [V10,T15] ( 3, 5 ) int -> [ebp-0x20] spill-single-def ; V11 loc9 [V11,T02] ( 6, 13.50) int -> [ebp-0x24] ; V12 loc10 [V12 ] ( 4, 12.50) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]> @@ -60,9 +60,9 @@ ; V49 tmp35 [V49 ] ( 4, 12.50) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP ; V50 tmp36 [V50 ] ( 2, 4.50) ref -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V12._items (fldOffset=0x0)" P-DEP ; V51 tmp37 [V51 ] ( 4, 12.50) int -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
-; V52 tmp38 [V52,T46] ( 2, 1 ) ref -> [ebp-0x7C] spill-single-def "field V28._items (fldOffset=0x0)" P-INDEP
+; V52 tmp38 [V52,T46] ( 2, 1 ) ref -> [ebp-0x78] spill-single-def "field V28._items (fldOffset=0x0)" P-INDEP
; V53 tmp39 [V53,T48] ( 2, 1 ) int -> [ebp-0x38] spill-single-def "field V28._length (fldOffset=0x4)" P-INDEP
-; V54 tmp40 [V54,T47] ( 2, 1 ) ref -> [ebp-0x80] spill-single-def "field V38._items (fldOffset=0x0)" P-INDEP
+; V54 tmp40 [V54,T47] ( 2, 1 ) ref -> [ebp-0x7C] spill-single-def "field V38._items (fldOffset=0x0)" P-INDEP
; V55 tmp41 [V55,T49] ( 2, 1 ) int -> [ebp-0x3C] spill-single-def "field V38._length (fldOffset=0x4)" P-INDEP ; V56 tmp42 [V56,T27] ( 3, 3 ) int -> eax "index expr" ; V57 tmp43 [V57,T28] ( 3, 3 ) int -> edx "index expr" @@ -71,20 +71,20 @@ ; V60 tmp46 [V60,T30] ( 3, 3 ) int -> edx "index expr" ; V61 tmp47 [V61,T11] ( 2, 8 ) ref -> edx "argument with side effect" ; V62 cse0 [V62,T08] ( 4, 9 ) int -> [ebp-0x40] hoist multi-def "CSE - aggressive"
-; V63 cse1 [V63,T12] ( 11, 5.80) int -> [ebp-0x44] spill-single-def "CSE - moderate" -;* V64 rat0 [V64,T17] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V63 cse1 [V63,T12] ( 13, 7.30) int -> [ebp-0x44] spill-single-def "CSE - moderate" +; V64 rat0 [V64,T17] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
;* V65 rat1 [V65,T41] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V66 rat2 [V66,T13] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V66 rat2 [V66,T13] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; V67 rat3 [V67,T38] ( 3, 2 ) int -> ecx "runtime lookup" ; V68 rat4 [V68,T31] ( 3, 2.80) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat5 [V69,T39] ( 3, 2 ) int -> edi "runtime lookup"
+; V69 rat5 [V69,T39] ( 3, 2 ) int -> registers "runtime lookup"
; V70 rat6 [V70,T32] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable" ; V71 rat7 [V71,T33] ( 3, 2.80) int -> ecx "fgMakeTemp is creating a new local variable" ; V72 rat8 [V72,T40] ( 3, 2 ) int -> eax "runtime lookup" ; V73 rat9 [V73,T34] ( 3, 2.80) int -> eax "fgMakeTemp is creating a new local variable" ; V74 rat10 [V74,T05] ( 3, 11.20) int -> ecx "fgMakeTemp is creating a new local variable" ;* V75 rat11 [V75,T50] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V76 rat12 [V76,T35] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V76 rat12 [V76,T35] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
; V77 rat13 [V77,T23] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable" ; V78 rat14 [V78 ] ( 1, 1 ) long -> [ebp-0x4C] multireg-ret "ReplaceWithLclVar is creating a new local variable" ; V79 rat15 [V79,T51] ( 1, 1 ) int -> eax "field V78.lo (fldOffset=0x0)" P-INDEP @@ -99,10 +99,8 @@ ; V88 rat24 [V88 ] ( 1, 1 ) long -> [ebp-0x64] multireg-ret "ReplaceWithLclVar is creating a new local variable" ; V89 rat25 [V89,T54] ( 1, 1 ) int -> eax "field V88.lo (fldOffset=0x0)" P-INDEP ; V90 rat26 [V90,T45] ( 2, 1.50) int -> edx "field V88.hi (fldOffset=0x4)" P-INDEP
-; TEMP_02 ref -> [ebp-0x84] -; TEMP_01 int -> [ebp-0x88]
;
-; Lcl frame size = 124
+; Lcl frame size = 112
G_M65447_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -110,59 +108,55 @@ G_M65447_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 124 - vxorps xmm4, xmm4, xmm4 - vmovdqu ymmword ptr [ebp-0x84], ymm4 - vmovdqu ymmword ptr [ebp-0x64], ymm4 - vmovdqu ymmword ptr [ebp-0x44], ymm4 - vmovdqu xmmword ptr [ebp-0x24], xmm4 - mov gword ptr [ebp-0x68], ecx - ; GC ptr vars +{V00}
+ sub esp, 112 + xor eax, eax + mov dword ptr [ebp-0x1C], eax + mov dword ptr [ebp-0x18], eax + mov dword ptr [ebp-0x2C], eax + mov dword ptr [ebp-0x28], eax + mov ebx, ecx + ; gcrRegs +[ebx]
mov esi, edx ; gcrRegs +[esi]
- ;; size=41 bbWeight=1 PerfScore 14.08 -G_M65447_IG02: ; bbWeight=1, gcVars=0000000000000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=27 bbWeight=1 PerfScore 9.25 +G_M65447_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M65447_IG30 - mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
+ je G_M65447_IG31
mov eax, dword ptr [ebx]
- mov dword ptr [ebp-0x44], eax - mov ebx, gword ptr [ebp-0x68]
+ mov edi, eax + mov dword ptr [ebp-0x44], edi + mov ecx, edi + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x10] + test ecx, ecx
cmp dword ptr [ebx+0x2C], 0
- jle G_M65447_IG28 - ;; size=29 bbWeight=1 PerfScore 10.25 -G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] - mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
+ jle G_M65447_IG05 + ;; size=37 bbWeight=1 PerfScore 15.00 +G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [ebx+0x0C] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x74], eax
+ mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V04} test eax, eax
- jne G_M65447_IG13
+ jne G_M65447_IG14
mov ecx, esi ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x6C], esi
+ mov gword ptr [ebp-0x68], esi
; GC ptr vars +{V01} mov eax, dword ptr [esi] ; gcrRegs -[eax] mov eax, dword ptr [eax+0x2C] ; GC ptr vars -{V04} call [eax+0x0C]<unknown method>
- ; gcrRegs -[ecx ebx esi]
+ ; gcrRegs -[ecx esi]
mov dword ptr [ebp-0x10], eax
- mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
mov edx, gword ptr [ebx+0x28] ; gcrRegs +[edx]
- mov gword ptr [ebp-0x7C], edx
+ mov gword ptr [ebp-0x78], edx
; GC ptr vars +{V52}
- mov ebx, gword ptr [ebp-0x68]
mov ecx, dword ptr [ebx+0x2C] mov dword ptr [ebp-0x38], ecx
- mov ebx, gword ptr [ebp-0x68]
lea ecx, bword ptr [ebx+0x04] ; byrRegs +[ecx] mov edx, dword ptr [ecx] @@ -172,7 +166,6 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push 0 push eax call CORINFO_HELP_LMUL
- ; gcrRegs -[ebx]
; byrRegs -[ecx] xor eax, eax add edx, 1 @@ -182,20 +175,18 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 push 0 push dword ptr [ebp-0x38] call CORINFO_HELP_LMUL
- mov ecx, gword ptr [ebp-0x7C]
+ mov ecx, gword ptr [ebp-0x78]
; gcrRegs +[ecx] mov eax, edx sar eax, 14 cmp eax, dword ptr [ecx+0x04]
- jae G_M65447_IG29
+ jae G_M65447_IG30
mov ecx, gword ptr [ecx+4*eax+0x08] and edx, 0x3FFF cmp edx, dword ptr [ecx+0x04]
- jae G_M65447_IG29
+ jae G_M65447_IG30
mov eax, dword ptr [ecx+4*edx+0x08] mov dword ptr [ebp-0x14], eax
- mov ebx, gword ptr [ebp-0x68] - ; gcrRegs +[ebx]
lea esi, bword ptr [ebx+0x30] ; byrRegs +[esi] lea edi, bword ptr [ebp-0x1C] @@ -211,23 +202,28 @@ G_M65447_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr [ecx] mov ecx, dword ptr [ecx+0x0C] test ecx, ecx
- je SHORT G_M65447_IG05 - ;; size=162 bbWeight=0.50 PerfScore 32.75 -G_M65447_IG04: ; bbWeight=0.40, gcVars=00000000000000C0 {V00 V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx]
+ je SHORT G_M65447_IG06 + ;; size=147 bbWeight=0.50 PerfScore 30.25 +G_M65447_IG04: ; bbWeight=0.40, gcVars=0000000000000080 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V52}
- jmp SHORT G_M65447_IG06
+ jmp SHORT G_M65447_IG07
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M65447_IG05: ; bbWeight=0.10, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M65447_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V01} + mov edi, dword ptr [ebp-0x44] + jmp G_M65447_IG29 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M65447_IG06: ; bbWeight=0.10, gcVars=0000000000000080 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V01}
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov ecx, eax ;; size=14 bbWeight=0.10 PerfScore 0.18
-G_M65447_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M65447_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x78], eax
+ mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V09} mov ecx, dword ptr [ebp-0x14] dec ecx @@ -236,98 +232,95 @@ G_M65447_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov edx, dword ptr [edx] mov edx, dword ptr [edx+0x1C] test edx, edx
- je SHORT G_M65447_IG08
+ je SHORT G_M65447_IG09
;; size=28 bbWeight=0.50 PerfScore 6.75
-G_M65447_IG07: ; bbWeight=0.40, gcVars=00000000000100C0 {V00 V01 V09}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M65447_IG08: ; bbWeight=0.40, gcVars=0000000000010080 {V01 V09}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov edi, edx - jmp SHORT G_M65447_IG09 - ;; size=4 bbWeight=0.40 PerfScore 0.90 -G_M65447_IG08: ; bbWeight=0.10, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M65447_IG10 + ;; size=2 bbWeight=0.40 PerfScore 0.80 +G_M65447_IG09: ; bbWeight=0.10, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, edi mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edi, eax - ;; size=14 bbWeight=0.10 PerfScore 0.18 -G_M65447_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
...

-21 (-3.08%) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)

@@ -210,21 +210,21 @@ G_M64904_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {} vpor xmm2, xmm2, xmm4 vpmovmskb ecx, xmm2 popcnt ecx, ecx
- vmovups xmm2, xmmword ptr [ebp-0x44] - vpaddw xmm4, xmm0, xmm2
+ vpaddw xmm4, xmm0, xmmword ptr [ebp-0x44]
vpcmpgtw xmm4, xmm3, xmm4 vpmovmskb eax, xmm4 cmp eax, 0xFFFF jne SHORT G_M64904_IG20
- ;; size=55 bbWeight=4 PerfScore 83.00
+ ;; size=51 bbWeight=4 PerfScore 77.67
G_M64904_IG18: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz add ebx, ecx mov eax, dword ptr [ebp-0x74] adc eax, 0 cmp esi, edi mov dword ptr [ebp-0x74], eax
+ mov edi, dword ptr [ebp-0x48]
jbe SHORT G_M64904_IG15
- ;; size=15 bbWeight=16 PerfScore 64.00
+ ;; size=18 bbWeight=16 PerfScore 80.00
G_M64904_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x14] jmp G_M64904_IG28 @@ -250,9 +250,7 @@ G_M64904_IG21: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov ecx, dword ptr [ebp-0x6C]
- vmovups xmm2, xmmword ptr [ebp-0x44] - vmovups xmm3, xmmword ptr [ebp-0x34] - ;; size=32 bbWeight=8 PerfScore 92.00
+ ;; size=22 bbWeight=8 PerfScore 44.00
G_M64904_IG22: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x70] mov edx, eax @@ -269,9 +267,7 @@ G_M64904_IG23: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov ecx, dword ptr [ebp-0x6C]
- vmovups xmm2, xmmword ptr [ebp-0x44] - vmovups xmm3, xmmword ptr [ebp-0x34] - ;; size=32 bbWeight=8 PerfScore 92.00
+ ;; size=22 bbWeight=8 PerfScore 44.00
G_M64904_IG24: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x70] shl eax, 2 @@ -292,9 +288,9 @@ G_M64904_IG26: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 { sub edi, eax add eax, eax sub ebx, eax
- mov eax, dword ptr [ebp-0x74] - sbb eax, 0 - mov dword ptr [ebp-0x74], eax
+ mov edx, dword ptr [ebp-0x74] + sbb edx, 0 + mov dword ptr [ebp-0x74], edx
mov dword ptr [ebp-0x10], edi mov edi, dword ptr [ebp-0x48] jmp G_M64904_IG18 @@ -385,6 +381,6 @@ RWD16 dq 7800780078007800h, 7800780078007800h RWD32 dq A000A000A000A000h, A000A000A000A000h
-; Total bytes of code 682, prolog size 16, PerfScore 1263.75, instruction count 214, allocated bytes for code 682 (MethodHash=96570277) for method System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
+; Total bytes of code 661, prolog size 16, PerfScore 1178.42, instruction count 210, allocated bytes for code 661 (MethodHash=96570277) for method System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
; ============================================================

+10 (+66.67%) : 35114.dasm - System.Collections.Immutable.ImmutableArray1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (Tier1)

@@ -13,9 +13,9 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]> ; V04 tmp3 [V04,T03] ( 2, 2 ) ref -> eax single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T02] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
;* V06 rat1 [V06,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -25,18 +25,22 @@ G_M61652_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M61652_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- cmp dword ptr [esi], esi
+ mov ecx, dword ptr [esi] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x18] + test ecx, ecx
mov ecx, esi ; gcrRegs +[ecx] call [System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToArray():System.__Canon[]:this] ; gcrRegs -[ecx] +[eax] ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 6.25
+ ;; size=20 bbWeight=1 PerfScore 11.50
G_M61652_IG03: ; bbWeight=1, epilog, nogc, extend pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 15, prolog size 1, PerfScore 9.00, instruction count 7, allocated bytes for code 15 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
+; Total bytes of code 25, prolog size 1, PerfScore 14.25, instruction count 11, allocated bytes for code 25 (MethodHash=235c0f2b) for method System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
; ============================================================

+24 (+104.35%) : 13796.dasm - System.Collections.Immutable.ImmutableDictionary2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Canon,System.Canon]]):this (Tier1)

@@ -15,13 +15,13 @@ ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> ecx single-def "V02.[000..004)" -;* V08 cse0 [V08,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -;* V09 rat0 [V09,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> eax single-def "V02.[000..004)" +; V08 cse0 [V08,T04] ( 3, 3 ) int -> ecx "CSE - aggressive" +; V09 rat0 [V09,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V10 rat1 [V10,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V11 rat2 [V11,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 rat2 [V11,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;* V12 rat3 [V12,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V13 rat4 [V13,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T01] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -31,22 +31,33 @@ G_M20412_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=3 bbWeight=1 PerfScore 1.25 G_M20412_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
- cmp dword ptr [esi], esi - mov ecx, gword ptr [esp+0x0C] - ; gcrRegs +[ecx]
+ mov ecx, dword ptr [esi] + mov eax, ecx + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax + mov eax, gword ptr [esp+0x0C] + ; gcrRegs +[eax] + mov ecx, dword ptr [ecx+0x24] + mov ecx, dword ptr [ecx] + mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
+ test eax, eax
je SHORT G_M20412_IG04
- ;; size=10 bbWeight=1 PerfScore 5.25 -G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 17.00 +G_M20412_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref + mov ecx, eax + ; gcrRegs +[ecx]
call [System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Freeze():this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.62
G_M20412_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc pop esi ret 16 ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 23, prolog size 1, PerfScore 10.50, instruction count 9, allocated bytes for code 23 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
+; Total bytes of code 47, prolog size 1, PerfScore 22.38, instruction count 19, allocated bytes for code 47 (MethodHash=5457b043) for method System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
; ============================================================

+10 (+200.00%) : 44937.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Tier1)

@@ -14,9 +14,9 @@ ;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "field V01.m_task (fldOffset=0x0)" P-INDEP
-;* V06 rat0 [V06,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V06 rat0 [V06,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V07 rat1 [V07,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V08 rat2 [V08,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V08 rat2 [V08,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,14 +24,18 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=0 bbWeight=1 PerfScore 0.00 G_M9200_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x20] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
; ============================================================

coreclr_tests.run.windows.x86.checked.mch

-39 (-5.91%) : 256550.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -10,15 +10,15 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 4.44) ref -> esi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 3.72) ref -> edi class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T01] ( 8, 3.89) ref -> edi class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 4.80) ref -> ebx class-hnd <System.__Canon[]> ; V03 loc1 [V03,T08] ( 5, 1.11) int -> [ebp-0x10] spill-single-def ; V04 loc2 [V04,T05] ( 9, 2.00) int -> [ebp-0x14]
-; V05 loc3 [V05,T06] ( 6, 1.28) int -> [ebp-0x18]
+; V05 loc3 [V05,T06] ( 6, 1.44) int -> [ebp-0x18]
; V06 loc4 [V06,T07] ( 10, 1.11) ref -> [ebp-0x2C] class-hnd spill-single-def <System.__Canon>
-; V07 loc5 [V07,T10] ( 3, 0.61) ubyte -> [ebp-0x1C] -; V08 loc6 [V08,T03] ( 11, 3.02) int -> [ebp-0x20] -; V09 loc7 [V09,T04] ( 11, 2.63) ref -> [ebp-0x30] class-hnd <System.__Canon>
+; V07 loc5 [V07,T09] ( 3, 0.78) ubyte -> [ebp-0x1C] +; V08 loc6 [V08,T04] ( 11, 3.02) int -> [ebp-0x20] +; V09 loc7 [V09,T03] ( 11, 2.80) ref -> [ebp-0x30] class-hnd <System.__Canon>
; V10 loc8 [V10,T17] ( 3, 0.22) int -> [ebp-0x24] ; V11 loc9 [V11 ] ( 3, 0.33) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> ;* V12 tmp0 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -35,11 +35,10 @@ ;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ; V24 rat0 [V24,T14] ( 3, 0.49) int -> edx "Spilling to split statement for tree" ; V25 rat1 [V25,T15] ( 3, 0.44) int -> ebx "runtime lookup"
-; V26 rat2 [V26,T09] ( 3, 0.62) int -> ebx "fgMakeTemp is creating a new local variable" -; TEMP_02 ref -> [ebp-0x34] -; TEMP_01 int -> [ebp-0x38]
+; V26 rat2 [V26,T10] ( 3, 0.62) int -> ebx "fgMakeTemp is creating a new local variable" +; TEMP_01 ref -> [ebp-0x34]
;
-; Lcl frame size = 44
+; Lcl frame size = 40
G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +46,7 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 44
+ sub esp, 40
xor eax, eax mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x34], eax @@ -60,7 +59,7 @@ G_M8298_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov ebx, gword ptr [esi+0x04] ; gcrRegs +[ebx] test ebx, ebx
- jne SHORT G_M8298_IG07
+ jne SHORT G_M8298_IG05
;; size=7 bbWeight=1 PerfScore 3.25 G_M8298_IG03: ; bbWeight=0.78, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[ebx] @@ -78,36 +77,17 @@ G_M8298_IG04: ; bbWeight=0.78, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.78 PerfScore 2.72
-G_M8298_IG05: ; bbWeight=0.33, gcVars=00000080 {V06}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ecx ebx edi] - ; GC ptr vars +{V06 V07} - mov gword ptr [ebp-0x30], ecx - ; GC ptr vars +{V09} - mov edx, dword ptr [ecx+0x28] - mov ecx, gword ptr [ebp-0x2C] - cmp edx, dword ptr [ecx+0x28] - jne G_M8298_IG15 - ;; size=18 bbWeight=0.33 PerfScore 2.64 -G_M8298_IG06: ; bbWeight=2.67, gcVars=00000090 {V06 V09}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ecx] - ; GC ptr vars -{V07} - mov ecx, gword ptr [ebp-0x30] - ; gcrRegs +[ecx] - mov dword ptr [ebp-0x20], eax - jmp G_M8298_IG23 - ;; size=11 bbWeight=2.67 PerfScore 10.67 -G_M8298_IG07: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ecx] - ; GC ptr vars -{V06 V09}
+G_M8298_IG05: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[ebx edi]
mov eax, dword ptr [ebx+0x04] mov dword ptr [ebp-0x10], eax xor edx, edx mov dword ptr [ebp-0x14], edx xor ecx, ecx cmp dword ptr [edi+0x04], 0
- jle G_M8298_IG36
+ jle G_M8298_IG35
;; size=23 bbWeight=0.22 PerfScore 1.89
-G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG06: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], ecx mov eax, gword ptr [edi+4*ecx+0x08] ; gcrRegs +[eax] @@ -118,133 +98,140 @@ G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefReg mov dword ptr [ebp-0x1C], eax xor eax, eax cmp dword ptr [ebp-0x10], 0
- jg SHORT G_M8298_IG12
+ jg SHORT G_M8298_IG10
;; size=23 bbWeight=0.22 PerfScore 1.89
-G_M8298_IG09: ; bbWeight=0.22, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8298_IG07: ; bbWeight=0.22, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp dword ptr [ebp-0x1C], 0
- jne G_M8298_IG35
+ jne G_M8298_IG34
mov edx, dword ptr [ebp-0x14] test edx, edx
- jne SHORT G_M8298_IG10
+ jne SHORT G_M8298_IG08
mov edx, eax ;; size=19 bbWeight=0.22 PerfScore 1.22
-G_M8298_IG10: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebx+0x04], edx
- jg G_M8298_IG32
+ jg G_M8298_IG31
;; size=9 bbWeight=0.22 PerfScore 0.89
-G_M8298_IG11: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - jmp G_M8298_IG25
+G_M8298_IG09: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + jmp G_M8298_IG24
;; size=5 bbWeight=0.11 PerfScore 0.22
-G_M8298_IG12: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG10: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- je SHORT G_M8298_IG17
+ je SHORT G_M8298_IG16
mov ecx, dword ptr [ebp-0x10] cmp dword ptr [ebx+0x04], ecx
- jl SHORT G_M8298_IG17
+ jl SHORT G_M8298_IG16
;; size=12 bbWeight=0.11 PerfScore 0.69
-G_M8298_IG13: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG11: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M8298_IG09
+ je SHORT G_M8298_IG07
;; size=8 bbWeight=0.89 PerfScore 2.89
-G_M8298_IG14: ; bbWeight=0.33, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M8298_IG12: ; bbWeight=0.33, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- jne G_M8298_IG41
+ jne G_M8298_IG40
cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M8298_IG05 - ;; size=27 bbWeight=0.33 PerfScore 2.97 -G_M8298_IG15: ; bbWeight=0.55, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx edx]
+ jne SHORT G_M8298_IG13 + mov gword ptr [ebp-0x30], ecx + ; GC ptr vars +{V09} + mov edx, dword ptr [ecx+0x28] + ; gcrRegs -[edx] + mov ecx, gword ptr [ebp-0x2C] + cmp edx, dword ptr [ecx+0x28] + je SHORT G_M8298_IG15 + ;; size=37 bbWeight=0.33 PerfScore 5.61 +G_M8298_IG13: ; bbWeight=0.55, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + ; GC ptr vars -{V09}
inc eax mov ecx, dword ptr [ebp-0x10] cmp eax, ecx
- jl SHORT G_M8298_IG13
+ jl SHORT G_M8298_IG11
;; size=8 bbWeight=0.55 PerfScore 1.38
-G_M8298_IG16: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M8298_IG09 - ;; size=2 bbWeight=0.89 PerfScore 1.78 -G_M8298_IG17: ; bbWeight=0.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - cmp eax, dword ptr [ebx+0x04] - jae G_M8298_IG40
+G_M8298_IG14: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M8298_IG07 + ;; size=2 bbWeight=0.22 PerfScore 0.44 +G_M8298_IG15: ; bbWeight=0.17, gcVars=00000088 {V06 V09}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars +{V03 V09}
mov dword ptr [ebp-0x20], eax
+ jmp SHORT G_M8298_IG22 + ;; size=5 bbWeight=0.17 PerfScore 0.49 +G_M8298_IG16: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V03 V09} + cmp eax, dword ptr [ebx+0x04] + jae G_M8298_IG39
mov ecx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M8298_IG21 - ;; size=20 bbWeight=0.01 PerfScore 0.07 -G_M8298_IG18: ; bbWeight=0.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M8298_IG07 + ;; size=17 bbWeight=0.01 PerfScore 0.06 +G_M8298_IG17: ; bbWeight=0.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M8298_IG22
+ je SHORT G_M8298_IG20
;; size=11 bbWeight=0.00 PerfScore 0.02
-G_M8298_IG19: ; bbWeight=0, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG18: ; bbWeight=0, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] mov gword ptr [ebp-0x30], ecx ; GC ptr vars +{V09}
+ mov dword ptr [ebp-0x20], eax
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] mov ecx, edx mov gword ptr [ebp-0x34], ecx mov edx, gword ptr [ebp-0x30] mov ecx, gword ptr [ebp-0x2C]
- mov ecx, dword ptr [ecx] - ; gcrRegs -[ecx] - mov ecx, dword ptr [ecx+0x2C] - mov dword ptr [ebp-0x38], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x2C]
mov ecx, gword ptr [ebp-0x34]
- ; gcrRegs +[ecx] - mov eax, dword ptr [ebp-0x38]
call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x30] - ; gcrRegs +[ecx] - jne SHORT G_M8298_IG23 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M8298_IG20: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - ; GC ptr vars -{V09}
+ jne SHORT G_M8298_IG22
mov eax, dword ptr [ebp-0x20]
+ ;; size=38 bbWeight=0 PerfScore 0.00 +G_M8298_IG19: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V09}
inc eax cmp eax, dword ptr [ebp-0x10]
- jge G_M8298_IG09 - jmp SHORT G_M8298_IG17 - ;; size=15 bbWeight=0.01 PerfScore 0.03 -G_M8298_IG21: ; bbWeight=0.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov eax, dword ptr [ebp-0x20] - jmp G_M8298_IG09 - ;; size=8 bbWeight=0.00 PerfScore 0.01
...

-39 (-5.91%) : 269946.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -10,15 +10,15 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 8, 4.44) ref -> esi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 3.72) ref -> edi class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T01] ( 8, 3.89) ref -> edi class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 4.80) ref -> ebx class-hnd <System.__Canon[]> ; V03 loc1 [V03,T08] ( 5, 1.11) int -> [ebp-0x10] spill-single-def ; V04 loc2 [V04,T05] ( 9, 2.00) int -> [ebp-0x14]
-; V05 loc3 [V05,T06] ( 6, 1.28) int -> [ebp-0x18]
+; V05 loc3 [V05,T06] ( 6, 1.44) int -> [ebp-0x18]
; V06 loc4 [V06,T07] ( 10, 1.11) ref -> [ebp-0x2C] class-hnd spill-single-def <System.__Canon>
-; V07 loc5 [V07,T10] ( 3, 0.61) ubyte -> [ebp-0x1C] -; V08 loc6 [V08,T03] ( 11, 3.02) int -> [ebp-0x20] -; V09 loc7 [V09,T04] ( 11, 2.63) ref -> [ebp-0x30] class-hnd <System.__Canon>
+; V07 loc5 [V07,T09] ( 3, 0.78) ubyte -> [ebp-0x1C] +; V08 loc6 [V08,T04] ( 11, 3.02) int -> [ebp-0x20] +; V09 loc7 [V09,T03] ( 11, 2.80) ref -> [ebp-0x30] class-hnd <System.__Canon>
; V10 loc8 [V10,T17] ( 3, 0.22) int -> [ebp-0x24] ; V11 loc9 [V11 ] ( 3, 0.33) ref -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> ;* V12 tmp0 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -35,11 +35,10 @@ ;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ; V24 rat0 [V24,T14] ( 3, 0.49) int -> edx "Spilling to split statement for tree" ; V25 rat1 [V25,T15] ( 3, 0.44) int -> ebx "runtime lookup"
-; V26 rat2 [V26,T09] ( 3, 0.62) int -> ebx "fgMakeTemp is creating a new local variable" -; TEMP_02 ref -> [ebp-0x34] -; TEMP_01 int -> [ebp-0x38]
+; V26 rat2 [V26,T10] ( 3, 0.62) int -> ebx "fgMakeTemp is creating a new local variable" +; TEMP_01 ref -> [ebp-0x34]
;
-; Lcl frame size = 44
+; Lcl frame size = 40
G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +46,7 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 44
+ sub esp, 40
xor eax, eax mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x34], eax @@ -60,7 +59,7 @@ G_M8298_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov ebx, gword ptr [esi+0x04] ; gcrRegs +[ebx] test ebx, ebx
- jne SHORT G_M8298_IG07
+ jne SHORT G_M8298_IG05
;; size=7 bbWeight=1 PerfScore 3.25 G_M8298_IG03: ; bbWeight=0.78, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[ebx] @@ -78,36 +77,17 @@ G_M8298_IG04: ; bbWeight=0.78, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.78 PerfScore 2.72
-G_M8298_IG05: ; bbWeight=0.33, gcVars=00000080 {V06}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ecx ebx edi] - ; GC ptr vars +{V06 V07} - mov gword ptr [ebp-0x30], ecx - ; GC ptr vars +{V09} - mov edx, dword ptr [ecx+0x28] - mov ecx, gword ptr [ebp-0x2C] - cmp edx, dword ptr [ecx+0x28] - jne G_M8298_IG15 - ;; size=18 bbWeight=0.33 PerfScore 2.64 -G_M8298_IG06: ; bbWeight=2.67, gcVars=00000090 {V06 V09}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ecx] - ; GC ptr vars -{V07} - mov ecx, gword ptr [ebp-0x30] - ; gcrRegs +[ecx] - mov dword ptr [ebp-0x20], eax - jmp G_M8298_IG23 - ;; size=11 bbWeight=2.67 PerfScore 10.67 -G_M8298_IG07: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ecx] - ; GC ptr vars -{V06 V09}
+G_M8298_IG05: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[ebx edi]
mov eax, dword ptr [ebx+0x04] mov dword ptr [ebp-0x10], eax xor edx, edx mov dword ptr [ebp-0x14], edx xor ecx, ecx cmp dword ptr [edi+0x04], 0
- jle G_M8298_IG36
+ jle G_M8298_IG35
;; size=23 bbWeight=0.22 PerfScore 1.89
-G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG06: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], ecx mov eax, gword ptr [edi+4*ecx+0x08] ; gcrRegs +[eax] @@ -118,133 +98,140 @@ G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefReg mov dword ptr [ebp-0x1C], eax xor eax, eax cmp dword ptr [ebp-0x10], 0
- jg SHORT G_M8298_IG12
+ jg SHORT G_M8298_IG10
;; size=23 bbWeight=0.22 PerfScore 1.89
-G_M8298_IG09: ; bbWeight=0.22, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8298_IG07: ; bbWeight=0.22, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp dword ptr [ebp-0x1C], 0
- jne G_M8298_IG35
+ jne G_M8298_IG34
mov edx, dword ptr [ebp-0x14] test edx, edx
- jne SHORT G_M8298_IG10
+ jne SHORT G_M8298_IG08
mov edx, eax ;; size=19 bbWeight=0.22 PerfScore 1.22
-G_M8298_IG10: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M8298_IG08: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebx+0x04], edx
- jg G_M8298_IG32
+ jg G_M8298_IG31
;; size=9 bbWeight=0.22 PerfScore 0.89
-G_M8298_IG11: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - jmp G_M8298_IG25
+G_M8298_IG09: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + jmp G_M8298_IG24
;; size=5 bbWeight=0.11 PerfScore 0.22
-G_M8298_IG12: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG10: ; bbWeight=0.11, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- je SHORT G_M8298_IG17
+ je SHORT G_M8298_IG16
mov ecx, dword ptr [ebp-0x10] cmp dword ptr [ebx+0x04], ecx
- jl SHORT G_M8298_IG17
+ jl SHORT G_M8298_IG16
;; size=12 bbWeight=0.11 PerfScore 0.69
-G_M8298_IG13: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG11: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M8298_IG09
+ je SHORT G_M8298_IG07
;; size=8 bbWeight=0.89 PerfScore 2.89
-G_M8298_IG14: ; bbWeight=0.33, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M8298_IG12: ; bbWeight=0.33, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- jne G_M8298_IG41
+ jne G_M8298_IG40
cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M8298_IG05 - ;; size=27 bbWeight=0.33 PerfScore 2.97 -G_M8298_IG15: ; bbWeight=0.55, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx edx]
+ jne SHORT G_M8298_IG13 + mov gword ptr [ebp-0x30], ecx + ; GC ptr vars +{V09} + mov edx, dword ptr [ecx+0x28] + ; gcrRegs -[edx] + mov ecx, gword ptr [ebp-0x2C] + cmp edx, dword ptr [ecx+0x28] + je SHORT G_M8298_IG15 + ;; size=37 bbWeight=0.33 PerfScore 5.61 +G_M8298_IG13: ; bbWeight=0.55, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx] + ; GC ptr vars -{V09}
inc eax mov ecx, dword ptr [ebp-0x10] cmp eax, ecx
- jl SHORT G_M8298_IG13
+ jl SHORT G_M8298_IG11
;; size=8 bbWeight=0.55 PerfScore 1.38
-G_M8298_IG16: ; bbWeight=0.89, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M8298_IG09 - ;; size=2 bbWeight=0.89 PerfScore 1.78 -G_M8298_IG17: ; bbWeight=0.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - cmp eax, dword ptr [ebx+0x04] - jae G_M8298_IG40
+G_M8298_IG14: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M8298_IG07 + ;; size=2 bbWeight=0.22 PerfScore 0.44 +G_M8298_IG15: ; bbWeight=0.17, gcVars=00000088 {V06 V09}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars +{V03 V09}
mov dword ptr [ebp-0x20], eax
+ jmp SHORT G_M8298_IG22 + ;; size=5 bbWeight=0.17 PerfScore 0.49 +G_M8298_IG16: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V03 V09} + cmp eax, dword ptr [ebx+0x04] + jae G_M8298_IG39
mov ecx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M8298_IG21 - ;; size=20 bbWeight=0.01 PerfScore 0.07 -G_M8298_IG18: ; bbWeight=0.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M8298_IG07 + ;; size=17 bbWeight=0.01 PerfScore 0.06 +G_M8298_IG17: ; bbWeight=0.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M8298_IG22
+ je SHORT G_M8298_IG20
;; size=11 bbWeight=0.00 PerfScore 0.02
-G_M8298_IG19: ; bbWeight=0, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M8298_IG18: ; bbWeight=0, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] mov gword ptr [ebp-0x30], ecx ; GC ptr vars +{V09}
+ mov dword ptr [ebp-0x20], eax
mov edx, gword ptr [ebp-0x2C] ; gcrRegs +[edx] mov ecx, edx mov gword ptr [ebp-0x34], ecx mov edx, gword ptr [ebp-0x30] mov ecx, gword ptr [ebp-0x2C]
- mov ecx, dword ptr [ecx] - ; gcrRegs -[ecx] - mov ecx, dword ptr [ecx+0x2C] - mov dword ptr [ebp-0x38], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x2C]
mov ecx, gword ptr [ebp-0x34]
- ; gcrRegs +[ecx] - mov eax, dword ptr [ebp-0x38]
call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x30] - ; gcrRegs +[ecx] - jne SHORT G_M8298_IG23 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M8298_IG20: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - ; GC ptr vars -{V09}
+ jne SHORT G_M8298_IG22
mov eax, dword ptr [ebp-0x20]
+ ;; size=38 bbWeight=0 PerfScore 0.00 +G_M8298_IG19: ; bbWeight=0.01, gcVars=00000080 {V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V09}
inc eax cmp eax, dword ptr [ebp-0x10]
- jge G_M8298_IG09 - jmp SHORT G_M8298_IG17 - ;; size=15 bbWeight=0.01 PerfScore 0.03 -G_M8298_IG21: ; bbWeight=0.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov eax, dword ptr [ebp-0x20] - jmp G_M8298_IG09 - ;; size=8 bbWeight=0.00 PerfScore 0.01
...

-35 (-5.89%) : 32138.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -10,15 +10,15 @@ ; Final local variable assignments ; ; V00 this [V00,T09] ( 8, 5.03) ref -> [ebp-0x30] this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8,280.11) ref -> [ebp-0x34] class-hnd single-def <System.__Canon[]> -; V02 loc0 [V02,T06] ( 17, 43.30) ref -> [ebp-0x38] class-hnd <System.__Canon[]> -; V03 loc1 [V03,T07] ( 5, 37.34) int -> [ebp-0x10] spill-single-def
+; V01 arg1 [V01,T04] ( 8, 39.34) ref -> [ebp-0x34] class-hnd single-def <System.__Canon[]> +; V02 loc0 [V02,T03] ( 17, 43.30) ref -> registers class-hnd <System.__Canon[]> +; V03 loc1 [V03,T06] ( 5, 37.34) int -> [ebp-0x10] spill-single-def
; V04 loc2 [V04,T10] ( 9, 6.58) int -> [ebp-0x14]
-; V05 loc3 [V05,T02] ( 6,279.63) int -> [ebp-0x18] -; V06 loc4 [V06,T08] ( 9, 37.24) ref -> [ebp-0x3C] class-hnd spill-single-def <System.__Canon> -;* V07 loc5 [V07,T03] ( 0, 0 ) ubyte -> zero-ref -; V08 loc6 [V08,T04] ( 11,142.22) int -> [ebp-0x1C] -; V09 loc7 [V09,T00] ( 10,413.84) ref -> edi class-hnd <System.__Canon>
+; V05 loc3 [V05,T05] ( 6, 38.87) int -> [ebp-0x18] +; V06 loc4 [V06,T07] ( 9, 37.24) ref -> [ebp-0x38] class-hnd spill-single-def <System.__Canon> +;* V07 loc5 [V07,T08] ( 0, 0 ) ubyte -> zero-ref +; V08 loc6 [V08,T01] ( 11,142.22) int -> [ebp-0x1C] +; V09 loc7 [V09,T00] ( 10,173.08) ref -> edi class-hnd <System.__Canon>
; V10 loc8 [V10,T17] ( 3, 0.32) int -> [ebp-0x20] ; V11 loc9 [V11 ] ( 3, 0.47) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> ;* V12 tmp0 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -26,7 +26,7 @@ ;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V17 tmp5 [V17,T05] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+;* V17 tmp5 [V17,T02] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
; V18 tmp6 [V18,T16] ( 4, 0.43) int -> [ebp-0x28] "Inline return value spill temp" ; V19 tmp7 [V19,T12] ( 3, 0.71) int -> edx "Inlining Arg" ; V20 tmp8 [V20,T18] ( 3, 0.32) int -> edx "Inline return value spill temp" @@ -36,10 +36,10 @@ ; V24 rat0 [V24,T14] ( 3, 0.69) int -> [ebp-0x2C] spill-single-def "Spilling to split statement for tree" ; V25 rat1 [V25,T15] ( 3, 0.63) int -> edx "runtime lookup" ; V26 rat2 [V26,T11] ( 3, 0.88) int -> edx "fgMakeTemp is creating a new local variable"
-; TEMP_02 ref -> [ebp-0x40] -; TEMP_01 int -> [ebp-0x44]
+; TEMP_02 ref -> [ebp-0x3C] +; TEMP_01 int -> [ebp-0x40]
;
-; Lcl frame size = 56
+; Lcl frame size = 52
G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,10 +47,10 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 56
+ sub esp, 52
xor eax, eax mov dword ptr [ebp-0x24], eax
- mov dword ptr [ebp-0x40], eax
+ mov dword ptr [ebp-0x3C], eax
mov gword ptr [ebp-0x30], ecx ; GC ptr vars +{V00} mov esi, edx @@ -72,73 +72,68 @@ G_M8298_IG03: ; bbWeight=0.89, gcrefRegs=00000048 {ebx esi}, byrefRegs=00 mov dword ptr [ebp-0x14], edx xor ecx, ecx cmp dword ptr [esi+0x04], 0
- jle G_M8298_IG17
+ jle G_M8298_IG27
;; size=23 bbWeight=0.89 PerfScore 7.61 G_M8298_IG04: ; bbWeight=0.89, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x18], ecx mov edi, gword ptr [esi+4*ecx+0x08] ; gcrRegs +[edi]
- mov gword ptr [ebp-0x3C], edi
+ mov gword ptr [ebp-0x38], edi
; GC ptr vars +{V06} xor edx, edx test eax, eax jle SHORT G_M8298_IG12 ;; size=16 bbWeight=0.89 PerfScore 4.92
-G_M8298_IG05: ; bbWeight=0.45, gcVars=00000300 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M8298_IG05: ; bbWeight=0.45, gcVars=00000280 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
test ebx, ebx je SHORT G_M8298_IG11 test edi, edi je SHORT G_M8298_IG10 cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M8298_IG21
+ jne SHORT G_M8298_IG18
cmp dword ptr [ebx+0x04], eax jl SHORT G_M8298_IG09
- ;; size=25 bbWeight=0.45 PerfScore 4.70
+ ;; size=21 bbWeight=0.45 PerfScore 4.70
G_M8298_IG06: ; bbWeight=34.60, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi]
- mov gword ptr [ebp-0x38], ebx - ; GC ptr vars +{V02}
mov edi, gword ptr [ebx+4*edx+0x08] ; gcrRegs +[edi] test edi, edi
- je G_M8298_IG24 - ;; size=15 bbWeight=34.60 PerfScore 147.04 -G_M8298_IG07: ; bbWeight=34.05, gcVars=00000340 {V00 V02 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx]
+ je G_M8298_IG21 + ;; size=12 bbWeight=34.60 PerfScore 112.44 +G_M8298_IG07: ; bbWeight=34.05, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi], 0xD1FFAB1E
- jne SHORT G_M8298_IG19
+ jne SHORT G_M8298_IG16
mov eax, dword ptr [edi+0x28]
- mov ebx, gword ptr [ebp-0x3C] - ; gcrRegs +[ebx] - cmp eax, dword ptr [ebx+0x28] - jne SHORT G_M8298_IG19
+ mov ecx, gword ptr [ebp-0x38] + ; gcrRegs +[ecx] + cmp eax, dword ptr [ecx+0x28] + je SHORT G_M8298_IG15
;; size=19 bbWeight=34.05 PerfScore 374.56
-G_M8298_IG08: ; bbWeight=275.16, gcVars=00000240 {V00 V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx] - ; GC ptr vars -{V06} - jmp SHORT G_M8298_IG15 - ;; size=2 bbWeight=275.16 PerfScore 550.32 -G_M8298_IG09: ; bbWeight=0.22, gcVars=00000300 {V00 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edi] +[ebx] - ; GC ptr vars -{V02} +{V08}
+G_M8298_IG08: ; bbWeight=34.75, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx edi] + mov ecx, gword ptr [ebp-0x38] + ; gcrRegs +[ecx] + jmp SHORT G_M8298_IG16 + ;; size=5 bbWeight=34.75 PerfScore 104.26 +G_M8298_IG09: ; bbWeight=0.22, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ecx]
mov eax, dword ptr [ebp-0x10]
- jmp SHORT G_M8298_IG21
+ jmp SHORT G_M8298_IG18
;; size=5 bbWeight=0.22 PerfScore 0.67 G_M8298_IG10: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]
- jmp SHORT G_M8298_IG21
+ jmp SHORT G_M8298_IG18
;; size=2 bbWeight=0.22 PerfScore 0.45 G_M8298_IG11: ; bbWeight=0.22, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M8298_IG21
+ jmp SHORT G_M8298_IG18
;; size=2 bbWeight=0.22 PerfScore 0.45
-G_M8298_IG12: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov gword ptr [ebp-0x38], ebx - ; GC ptr vars +{V02} - jmp G_M8298_IG24 - ;; size=8 bbWeight=0.45 PerfScore 1.34
+G_M8298_IG12: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M8298_IG21 + ;; size=2 bbWeight=0.45 PerfScore 0.89
G_M8298_IG13: ; bbWeight=0.11, gcVars=00000200 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ebx edi]
- ; GC ptr vars -{V02 V08}
+ ; GC ptr vars -{V06}
mov edi, gword ptr [ebp-0x30] ; gcrRegs +[edi] lea edx, bword ptr [edi+0x04] @@ -155,9 +150,8 @@ G_M8298_IG14: ; bbWeight=0.11, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.11 PerfScore 0.37
-G_M8298_IG15: ; bbWeight=275.16, gcVars=00000240 {V00 V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi edi] - ; GC ptr vars +{V02 V06}
+G_M8298_IG15: ; bbWeight=34.39, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[ebx esi edi]
push edi ; gcr arg push 0 mov ecx, esi @@ -166,103 +160,65 @@ G_M8298_IG15: ; bbWeight=275.16, gcVars=00000240 {V00 V02}, gcrefRegs=000 call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx edi] ; gcr arg pop 1
- ;; size=11 bbWeight=275.16 PerfScore 894.26 -G_M8298_IG16: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov ecx, dword ptr [ebp-0x18] - inc ecx - cmp dword ptr [esi+0x04], ecx - mov eax, dword ptr [ebp-0x10] - mov ebx, gword ptr [ebp-0x38] - ; gcrRegs +[ebx] - jg G_M8298_IG04 - ;; size=19 bbWeight=0.89 PerfScore 6.49 -G_M8298_IG17: ; bbWeight=0.89, gcVars=00000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; GC ptr vars -{V02 V06} - mov edi, gword ptr [ebp-0x30] - ; gcrRegs +[edi] - lea edx, bword ptr [edi+0x04] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_EBX - ; gcrRegs -[ebx edi] - ; byrRegs -[edx] - ;; size=11 bbWeight=0.89 PerfScore 2.24 -G_M8298_IG18: ; bbWeight=0.89, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=8 bbWeight=0.89 PerfScore 3.13 -G_M8298_IG19: ; bbWeight=34.75, gcVars=00000340 {V00 V02 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[esi] - ; GC ptr vars +{V02 V06 V08}
+ jmp G_M8298_IG26 + ;; size=16 bbWeight=34.39 PerfScore 180.57 +G_M8298_IG16: ; bbWeight=34.75, gcVars=00000280 {V00 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars +{V06 V07}
inc edx cmp edx, dword ptr [ebp-0x10]
- mov ebx, gword ptr [ebp-0x38] - ; gcrRegs +[ebx] - jl G_M8298_IG06 - ;; size=13 bbWeight=34.75 PerfScore 147.71 -G_M8298_IG20: ; bbWeight=0.45, gcVars=00000300 {V00 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V02 V06 V08} - mov gword ptr [ebp-0x38], ebx - ; GC ptr vars +{V02} - jmp SHORT G_M8298_IG24
+ jl SHORT G_M8298_IG06 + ;; size=6 bbWeight=34.75 PerfScore 112.95 +G_M8298_IG17: ; bbWeight=0.45, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, gword ptr [ebp-0x38] + ; gcrRegs +[edi] + jmp SHORT G_M8298_IG21
;; size=5 bbWeight=0.45 PerfScore 1.34
-G_M8298_IG21: ; bbWeight=0.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V02}
+G_M8298_IG18: ; bbWeight=0.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi]
cmp edx, dword ptr [ebx+0x04] jae G_M8298_IG40
- mov gword ptr [ebp-0x38], ebx - ; GC ptr vars +{V02}
mov edi, gword ptr [ebx+4*edx+0x08] ; gcrRegs +[edi] test edi, edi
- je SHORT G_M8298_IG24 - ;; size=20 bbWeight=0.35 PerfScore 2.88 -G_M8298_IG22: ; bbWeight=0.34, gcVars=00000340 {V00 V02 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ebx] - ; GC ptr vars +{V06} - mov eax, gword ptr [ebp-0x3C]
+ je SHORT G_M8298_IG21
...

+14 (+140.00%) : 219134.dasm - Program:TestSystem.__Canon:int (FullOpts)

@@ -8,26 +8,32 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 3, 3 ) int -> ecx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <MyInterfaceImpl`1[System.__Canon]> ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 rat0 [V03,T02] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V04 rat1 [V04,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V04 rat1 [V04,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M46698_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ push eax + mov dword ptr [ebp-0x04], ecx + ;; size=7 bbWeight=1 PerfScore 3.25
G_M46698_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ecx+0x20] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25
+ ;; size=13 bbWeight=1 PerfScore 4.50
G_M46698_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov esp, ebp
pop ebp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=498b4995) for method Program:Test[System.__Canon]():int (FullOpts)
+; Total bytes of code 24, prolog size 7, PerfScore 9.50, instruction count 11, allocated bytes for code 24 (MethodHash=498b4995) for method Program:Test[System.__Canon]():int (FullOpts)
; ============================================================

+14 (+140.00%) : 570903.dasm - HelperILDllTests:CallGenMethodFromGenericTypeSystem.__Canon:System.String (FullOpts)

@@ -8,28 +8,34 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 3, 3 ) int -> ecx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) int -> ecx single-def
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <DerivedTypeGenericMethodActuallyOnBase`1[System.__Canon]> ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat1 [V05,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat1 [V05,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M45001_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ push eax + mov dword ptr [ebp-0x04], ecx + ;; size=7 bbWeight=1 PerfScore 3.25
G_M45001_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ecx+0x20] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, 0xD1FFAB1E ; gcrRegs +[eax]
- ;; size=5 bbWeight=1 PerfScore 0.25
+ ;; size=13 bbWeight=1 PerfScore 4.50
G_M45001_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov esp, ebp
pop ebp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=591e5036) for method HelperILDllTests:CallGenMethodFromGenericType[System.__Canon]():System.String (FullOpts)
+; Total bytes of code 24, prolog size 7, PerfScore 9.50, instruction count 11, allocated bytes for code 24 (MethodHash=591e5036) for method HelperILDllTests:CallGenMethodFromGenericType[System.__Canon]():System.String (FullOpts)
; ============================================================

+31 (+516.67%) : 520794.dasm - ILGEN0x2dda4eb5:Method0xa084659a():ushort (FullOpts)

@@ -8,19 +8,29 @@ ; Final local variable assignments ; ;* V00 loc0 [V00,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-;* V01 tmp0 [V01,T00] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+; V01 tmp0 [V01,T00] ( 2, 4 ) ref -> eax single-def "arr expr"
; ; Lcl frame size = 0 G_M5817_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ vzeroupper + ;; size=3 bbWeight=1 PerfScore 1.00
G_M5817_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 0xD1FFAB1E ; <unknown class> + mov edx, 41 + call CORINFO_HELP_NEWARR_1_ALIGN8 + ; gcrRegs +[eax] + vmovsd xmm0, qword ptr [@RWD00] + vucomisd xmm0, qword ptr [eax+0x40]
mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25
+ ; gcrRegs -[eax] + ;; size=33 bbWeight=1 PerfScore 9.75
G_M5817_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 401C000000000000h ; 7
-; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=cc10e946) for method ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
+ +; Total bytes of code 37, prolog size 3, PerfScore 11.75, instruction count 8, allocated bytes for code 37 (MethodHash=cc10e946) for method ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-46 (-7.15%) : 239494.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

@@ -11,24 +11,25 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder> ; V01 arg1 [V01,T10] ( 3, 3 ) ref -> edx class-hnd single-def <System.Reflection.MethodBase>
-; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MethodBase> -; V03 loc0 [V03,T11] ( 3, 2 ) ubyte -> eax -; V04 loc1 [V04,T03] ( 13, 13.08) ref -> esi class-hnd single-def <<unknown class>> -; V05 loc2 [V05,T04] ( 13, 13.08) ref -> edi class-hnd single-def <<unknown class>> -; V06 loc3 [V06,T00] ( 37, 56.16) int -> [ebp-0x10] -; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [ebp-0x14] class-hnd <<unknown class>> -; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <<unknown class>>
+; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MethodBase> +; V03 loc0 [V03,T12] ( 3, 2 ) ubyte -> eax +; V04 loc1 [V04,T04] ( 9, 12.04) ref -> esi class-hnd single-def <<unknown class>> +; V05 loc2 [V05,T03] ( 13, 13.08) ref -> edi class-hnd single-def <<unknown class>> +; V06 loc3 [V06,T00] ( 32, 59.62) int -> [ebp-0x10] +; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <<unknown class>> +; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
; V09 loc6 [V09,T05] ( 8, 9 ) int -> ebx single-def
-;* V10 loc7 [V10,T16] ( 0, 0 ) int -> zero-ref single-def -; V11 loc8 [V11,T06] ( 6, 6 ) int -> edi single-def
+;* V10 loc7 [V10,T17] ( 0, 0 ) int -> zero-ref single-def +; V11 loc8 [V11,T11] ( 3, 5 ) int -> edi single-def
; V12 loc9 [V12,T07] ( 6, 6 ) int -> esi single-def ; V13 tmp0 [V13,T08] ( 3, 6 ) int -> ebx "non-inline candidate call"
-; V14 tmp1 [V14,T12] ( 2, 2 ) int -> ebx "non-inline candidate call" -; V15 tmp2 [V15,T13] ( 2, 2 ) int -> ebx "non-inline candidate call" -; V16 tmp3 [V16,T14] ( 2, 2 ) int -> ebx "Inline return value spill temp"
+; V14 tmp1 [V14,T13] ( 2, 2 ) int -> ebx "non-inline candidate call" +; V15 tmp2 [V15,T14] ( 2, 2 ) int -> ebx "non-inline candidate call" +; V16 tmp3 [V16,T15] ( 2, 2 ) int -> ebx "Inline return value spill temp"
; V17 tmp4 [V17,T09] ( 3, 6 ) int -> eax "Inlining Arg"
+; V18 cse0 [V18,T06] ( 8, 7.58) int -> [ebp-0x14] multi-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M40132_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -36,7 +37,7 @@ G_M40132_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 16
;; size=9 bbWeight=1 PerfScore 4.50 G_M40132_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edx] @@ -72,11 +73,12 @@ G_M40132_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 xor eax, eax test ebx, ebx jl G_M40132_IG14
- cmp dword ptr [esi+0x04], ebx
+ mov edx, dword ptr [esi+0x04] + cmp edx, ebx
jle G_M40132_IG09 cmp dword ptr [edi+0x04], ebx jle SHORT G_M40132_IG09
- ;; size=80 bbWeight=1 PerfScore 37.00
+ ;; size=82 bbWeight=1 PerfScore 36.25
G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x10], eax mov ecx, gword ptr [esi+4*eax+0x08] @@ -84,7 +86,7 @@ G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V07} mov ecx, eax ; gcrRegs +[ecx] @@ -95,12 +97,12 @@ G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 je SHORT G_M40132_IG05 ;; size=32 bbWeight=3.96 PerfScore 69.30 G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] ; GC ptr vars -{V07} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V07} ;; size=12 bbWeight=1.98 PerfScore 9.90 G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz @@ -111,7 +113,7 @@ G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V08} mov ecx, eax ; gcrRegs +[ecx] @@ -122,42 +124,43 @@ G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 je SHORT G_M40132_IG07 ;; size=32 bbWeight=3.96 PerfScore 69.30 G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx] ; GC ptr vars -{V08} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V08} ;; size=12 bbWeight=1.98 PerfScore 9.90 G_M40132_IG07: ; bbWeight=3.96, gcVars=00000006 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- cmp edx, gword ptr [ebp-0x18]
+ cmp edx, gword ptr [ebp-0x1C]
jne G_M40132_IG15 mov edx, dword ptr [ebp-0x10] ; gcrRegs -[edx] add edx, 1
- jo G_M40132_IG26
+ jo G_M40132_IG24
cmp edx, ebx mov eax, edx jle SHORT G_M40132_IG03 ;; size=30 bbWeight=3.96 PerfScore 30.69
-G_M40132_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40132_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V07 V08} jmp G_M40132_IG14
- ;; size=5 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=0.50 PerfScore 1.00
G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp eax, dword ptr [esi+0x04] - jae G_M40132_IG27
+ mov edx, dword ptr [esi+0x04] + cmp eax, edx + jae G_M40132_IG25
mov dword ptr [ebp-0x10], eax mov ecx, gword ptr [esi+4*eax+0x08] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V07} mov ecx, eax ; gcrRegs +[ecx] @@ -166,28 +169,28 @@ G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax ecx] test eax, eax je SHORT G_M40132_IG11
- ;; size=41 bbWeight=0.04 PerfScore 0.86
+ ;; size=43 bbWeight=0.04 PerfScore 0.83
G_M40132_IG10: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] ; GC ptr vars -{V07} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V07} ;; size=12 bbWeight=0.02 PerfScore 0.10 G_M40132_IG11: ; bbWeight=0.04, gcVars=00000002 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] mov edx, dword ptr [ebp-0x10] cmp edx, dword ptr [edi+0x04]
- jae G_M40132_IG27
+ jae G_M40132_IG25
mov dword ptr [ebp-0x10], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V08} mov ecx, eax ; gcrRegs +[ecx] @@ -198,36 +201,37 @@ G_M40132_IG11: ; bbWeight=0.04, gcVars=00000002 {V07}, gcrefRegs=000000C0 je SHORT G_M40132_IG13 ;; size=44 bbWeight=0.04 PerfScore 0.90 G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx] ; GC ptr vars -{V08} call [<unknown method>] ; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], ecx
+ mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V08} ;; size=14 bbWeight=0.02 PerfScore 0.11 G_M40132_IG13: ; bbWeight=0.04, gcVars=00000006 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax ecx]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- cmp edx, gword ptr [ebp-0x18]
+ cmp edx, gword ptr [ebp-0x1C]
jne SHORT G_M40132_IG15 mov eax, dword ptr [ebp-0x10] add eax, 1
- jo G_M40132_IG26
+ jo G_M40132_IG24
cmp eax, ebx jle G_M40132_IG09 ;; size=28 bbWeight=0.04 PerfScore 0.30 G_M40132_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edx] ; GC ptr vars -{V07 V08}
- mov ecx, dword ptr [esi+0x04] - cmp ecx, dword ptr [edi+0x04] - jle G_M40132_IG20
+ mov edx, dword ptr [esi+0x04] + mov dword ptr [ebp-0x14], edx + cmp edx, dword ptr [edi+0x04] + jle SHORT G_M40132_IG18
add ebx, 1
- jo G_M40132_IG26
+ jo G_M40132_IG24
mov ecx, edi ; gcrRegs +[ecx] xor edx, edx @@ -235,21 +239,18 @@ G_M40132_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e ; gcrRegs -[ecx edi] mov edi, eax cmp ebx, edi
- jg G_M40132_IG24 - mov ecx, ebx - or ecx, edi - jl SHORT G_M40132_IG18 - cmp dword ptr [esi+0x04], edi - jle SHORT G_M40132_IG18
+ jg G_M40132_IG22
jmp SHORT G_M40132_IG16
- ;; size=54 bbWeight=0.50 PerfScore 9.88
+ ;; size=42 bbWeight=0.50 PerfScore 7.62
G_M40132_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] xor eax, eax
- jmp G_M40132_IG25
+ jmp G_M40132_IG23
...

-17 (-5.04%) : 149540.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:IsConflictingOperatorOverloading(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)

@@ -9,7 +9,7 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 2.50) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol>
+; V00 this [V00,T07] ( 3, 2.50) ref -> [ebp-0x1C] this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol>
; V01 arg1 [V01,T02] ( 8, 7 ) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol> ; V02 arg2 [V02,T09] ( 2, 2 ) int -> [ebp+0x14] single-def ;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]> @@ -18,16 +18,16 @@ ; V06 loc0 [V06,T08] ( 3, 2 ) ubyte -> eax ; V07 loc1 [V07,T03] ( 6, 8 ) int -> [ebp-0x10] spill-single-def ; V08 loc2 [V08,T00] ( 12, 19.04) int -> [ebp-0x14]
-; V09 loc3 [V09,T01] ( 6, 10 ) ref -> [ebp-0x1C] class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol> -; V10 loc4 [V10,T04] ( 7, 6.50) ref -> [ebp-0x20] class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol>
+; V09 loc3 [V09,T01] ( 6, 10 ) ref -> ebx class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol> +; V10 loc4 [V10,T04] ( 7, 6.50) ref -> ebx class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol>
; V11 loc5 [V11,T06] ( 5, 4.50) int -> [ebp-0x18] ;* V12 loc6 [V12 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location]> ;* V13 tmp0 [V13 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ; V14 tmp1 [V14,T05] ( 5, 6.04) ref -> edi single-def "field V03.array (fldOffset=0x0)" P-INDEP ; V15 tmp2 [V15,T10] ( 3, 1.50) ref -> eax "field V12.array (fldOffset=0x0)" P-INDEP
-; TEMP_01 int -> [ebp-0x24]
+; TEMP_01 int -> [ebp-0x20]
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M32789_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -35,131 +35,125 @@ G_M32789_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24 - mov ebx, ecx - ; gcrRegs +[ebx]
+ sub esp, 20 + mov gword ptr [ebp-0x1C], ecx + ; GC ptr vars +{V00}
mov esi, edx ; gcrRegs +[esi] mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 6.00 -G_M32789_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75 +G_M32789_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, dword ptr [edi+0x04] dec edx mov dword ptr [ebp-0x10], edx mov ecx, dword ptr [ebp+0x0C] cmp ecx, edx jg G_M32789_IG10
- mov eax, ecx - or eax, edx
+ mov ebx, ecx + or ebx, edx
jl SHORT G_M32789_IG07 cmp dword ptr [edi+0x04], edx jle SHORT G_M32789_IG07 ;; size=29 bbWeight=1 PerfScore 11.00
-G_M32789_IG03: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M32789_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], ecx
- mov eax, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x1C], eax - ; GC ptr vars +{V09} - mov ecx, eax
+ mov ebx, gword ptr [edi+4*ecx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
cmp eax, 9 jne SHORT G_M32789_IG05
- ;; size=25 bbWeight=3.96 PerfScore 45.54
+ ;; size=22 bbWeight=3.96 PerfScore 41.58
G_M32789_IG04: ; bbWeight=1.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, ebx
; gcrRegs +[ecx]
- ; GC ptr vars -{V09}
call [CORINFO_HELP_READYTORUN_CHKCAST]
- ; gcrRegs -[ecx] +[eax] - mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V10} - mov ecx, eax
+ ; gcrRegs -[ecx ebx] +[eax] + mov ebx, eax + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx]
- mov dword ptr [ebp-0x24], eax
+ mov dword ptr [ebp-0x20], eax
mov ecx, esi ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx]
- cmp dword ptr [ebp-0x24], eax
+ cmp dword ptr [ebp-0x20], eax
jne SHORT G_M32789_IG05 push 0x3FFC6 push 0 mov ecx, esi ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x20]
+ mov edx, ebx
; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov edx, dword ptr [ebp+0x14] - test eax, edx
+ test eax, dword ptr [ebp+0x14]
mov dword ptr [ebp-0x18], eax
- mov dword ptr [ebp+0x14], edx
je G_M32789_IG11
- ;; size=75 bbWeight=1.98 PerfScore 63.36 -G_M32789_IG05: ; bbWeight=3.96, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V10} - mov ecx, dword ptr [ebp-0x14] - inc ecx - mov eax, dword ptr [ebp-0x10] - cmp ecx, eax
+ ;; size=67 bbWeight=1.98 PerfScore 58.41 +G_M32789_IG05: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebp-0x14] + inc ebx + cmp ebx, dword ptr [ebp-0x10] + mov ecx, ebx
jle SHORT G_M32789_IG03
- ;; size=11 bbWeight=3.96 PerfScore 13.86 -G_M32789_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi edi]
+ ;; size=11 bbWeight=3.96 PerfScore 17.82 +G_M32789_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[esi edi] + ; GC ptr vars -{V00}
jmp SHORT G_M32789_IG10
- ;; size=2 bbWeight=1 PerfScore 2.00 -G_M32789_IG07: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi edi]
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M32789_IG07: ; bbWeight=0.04, gcVars=00000080 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi edi] + ; GC ptr vars +{V00 V07}
cmp ecx, dword ptr [edi+0x04] jae G_M32789_IG13 mov dword ptr [ebp-0x14], ecx
- mov eax, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x1C], eax - ; GC ptr vars +{V09} - mov ecx, eax
+ mov ebx, gword ptr [edi+4*ecx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
cmp eax, 9 jne SHORT G_M32789_IG09
- ;; size=34 bbWeight=0.04 PerfScore 0.62
+ ;; size=31 bbWeight=0.04 PerfScore 0.58
G_M32789_IG08: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, ebx
; gcrRegs +[ecx]
- ; GC ptr vars -{V09}
call [CORINFO_HELP_READYTORUN_CHKCAST]
- ; gcrRegs -[ecx] +[eax] - mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V10} - mov ecx, eax
+ ; gcrRegs -[ecx ebx] +[eax] + mov ebx, eax + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx]
- mov dword ptr [ebp-0x24], eax
+ mov dword ptr [ebp-0x20], eax
mov ecx, esi ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx]
- cmp dword ptr [ebp-0x24], eax
+ cmp dword ptr [ebp-0x20], eax
jne SHORT G_M32789_IG09 push 0x3FFC6 push 0 mov ecx, esi ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x20]
+ mov edx, ebx
; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx] @@ -168,42 +162,43 @@ G_M32789_IG08: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRe test eax, ecx mov dword ptr [ebp+0x14], ecx je SHORT G_M32789_IG11
- ;; size=71 bbWeight=0.02 PerfScore 0.64 -G_M32789_IG09: ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V10} - mov eax, dword ptr [ebp-0x14] - inc eax
+ ;; size=68 bbWeight=0.02 PerfScore 0.60 +G_M32789_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebp-0x14] + inc ebx
mov edx, dword ptr [ebp-0x10]
- cmp eax, edx - mov ecx, eax
+ cmp ebx, edx + mov ecx, ebx
jle SHORT G_M32789_IG07 ;; size=13 bbWeight=0.04 PerfScore 0.15
-G_M32789_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi edi]
+G_M32789_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[esi edi] + ; GC ptr vars -{V00 V07}
xor eax, eax jmp SHORT G_M32789_IG12 ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M32789_IG11: ; bbWeight=0.50, gcVars=00000010 {V10}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M32789_IG11: ; bbWeight=0.50, gcVars=00000080 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V04 V10}
+ ; GC ptr vars +{V00 V07}
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] +[eax] ...

-19 (-4.70%) : 225671.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int

@@ -8,31 +8,31 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x2C] class-hnd single-def <System.String[]>
+; V00 arg0 [V00,T06] ( 4, 7 ) ref -> [ebp-0x28] class-hnd single-def <System.String[]>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]> ; V02 arg2 [V02,T09] ( 2, 5 ) int -> [ebp+0x0C] single-def ; V03 arg3 [V03,T17] ( 1, 1 ) int -> [ebp+0x08] single-def ; V04 loc0 [V04,T11] ( 4, 3 ) int -> [ebp-0x10] spill-single-def ; V05 loc1 [V05,T10] ( 6, 3 ) int -> [ebp-0x14] spill-single-def
-; V06 loc2 [V06,T03] ( 10, 22.66) ref -> [ebp-0x30] class-hnd spill-single-def <int[]>
+; V06 loc2 [V06,T03] ( 10, 22.66) ref -> [ebp-0x2C] class-hnd spill-single-def <int[]>
; V07 loc3 [V07,T08] ( 4, 5 ) int -> [ebp-0x18] ; V08 loc4 [V08,T16] ( 3, 1.50) ref -> esi class-hnd single-def <int[]> ; V09 loc5 [V09 ] ( 2, 1 ) struct ( 8) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[int]> ; V10 loc6 [V10,T05] ( 6, 18.50) int -> edx ;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V12 loc8 [V12,T04] ( 6, 20 ) int -> [ebp-0x24] spill-single-def
+; V12 loc8 [V12,T04] ( 6, 20 ) int -> ebx
; V13 loc9 [V13,T02] ( 7, 32 ) int -> ecx ; V14 loc10 [V14,T00] ( 12, 74.16) int -> edi
-; V15 loc11 [V15,T01] ( 5, 34 ) byref -> registers
+; V15 loc11 [V15,T01] ( 5, 34 ) byref -> esi
; V16 tmp0 [V16,T12] ( 2, 2 ) ref -> eax single-def "Single return block return value" ; V17 tmp1 [V17 ] ( 2, 1 ) byref -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP ; V18 tmp2 [V18 ] ( 2, 1 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x4)" P-DEP ; V19 tmp3 [V19,T13] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V20 tmp4 [V20,T14] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V21 tmp5 [V21,T15] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V22 cse0 [V22,T07] ( 4, 6.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
+; V22 cse0 [V22,T07] ( 4, 6.50) int -> [ebp-0x24] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 36
+; Lcl frame size = 32
G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,7 +40,7 @@ G_M57321_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 36
+ sub esp, 32
xor eax, eax mov dword ptr [ebp-0x20], eax mov esi, ecx @@ -53,19 +53,19 @@ G_M57321_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 inc ebx mov dword ptr [ebp-0x10], ebx mov ecx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x28], ecx
+ mov dword ptr [ebp-0x24], ecx
mov eax, ecx cdq idiv edx:eax, ebx cmp eax, 5
- jg G_M57321_IG18
+ jg G_M57321_IG14
;; size=29 bbWeight=1 PerfScore 32.50
-G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea eax, [ebx+4*ebx] mov dword ptr [ebp-0x14], eax call [<unknown method>] cmp eax, dword ptr [ebp-0x14]
- jl G_M57321_IG18
+ jl G_M57321_IG14
call [<unknown method>] ; gcrRegs +[eax] mov ecx, eax @@ -74,7 +74,7 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx]
- mov gword ptr [ebp-0x30], eax
+ mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V06} push 0 push dword ptr [ebp-0x14] @@ -89,11 +89,11 @@ G_M57321_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 xor eax, eax mov dword ptr [ebp-0x18], eax xor edx, edx
- cmp dword ptr [ebp-0x28], 0 - jle G_M57321_IG16 - ;; size=90 bbWeight=0.50 PerfScore 16.38
+ cmp dword ptr [ebp-0x24], 0 + jle SHORT G_M57321_IG12 + ;; size=86 bbWeight=0.50 PerfScore 16.38
G_M57321_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x2C], esi
+ mov gword ptr [ebp-0x28], esi
; GC ptr vars +{V00} mov ebx, gword ptr [esi+4*edx+0x08] ; gcrRegs +[ebx] @@ -102,21 +102,20 @@ G_M57321_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp+0x0C], edi sub ebx, edi lea ebx, [ebx+4*ebx]
- mov dword ptr [ebp-0x24], ebx
lea ecx, [ebx+0x05] mov edi, ebx cmp ebx, ecx
- jge SHORT G_M57321_IG15 - ;; size=30 bbWeight=4 PerfScore 39.00
+ jge SHORT G_M57321_IG11 + ;; size=27 bbWeight=4 PerfScore 35.00
G_M57321_IG05: ; bbWeight=2, gcVars=00000048 {V00 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x30]
+ mov eax, gword ptr [ebp-0x2C]
; gcrRegs +[eax] test eax, eax
- je SHORT G_M57321_IG10
+ je SHORT G_M57321_IG08
mov esi, ebx or esi, ecx
- jl SHORT G_M57321_IG09
+ jl SHORT G_M57321_IG08
cmp dword ptr [eax+0x04], ecx jl SHORT G_M57321_IG08 ;; size=18 bbWeight=2 PerfScore 15.50 @@ -124,64 +123,51 @@ G_M57321_IG06: ; bbWeight=15.84, gcrefRegs=00000001 {eax}, byrefRegs=0000 lea esi, bword ptr [eax+4*edi+0x08] ; byrRegs +[esi] cmp dword ptr [esi], 0
- jl SHORT G_M57321_IG13
+ jl SHORT G_M57321_IG09
inc edi cmp edi, ecx jl SHORT G_M57321_IG06 ;; size=14 bbWeight=15.84 PerfScore 102.96
-G_M57321_IG07: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG07: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[esi]
- jmp SHORT G_M57321_IG15 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57321_IG10 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M57321_IG09: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ;; size=0 bbWeight=1 PerfScore 0.00 -G_M57321_IG10: ; bbWeight=0.16, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57321_IG11 + ;; size=2 bbWeight=4 PerfScore 8.00 +G_M57321_IG08: ; bbWeight=0.16, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
cmp edi, dword ptr [eax+0x04]
- jae G_M57321_IG23 - lea ebx, bword ptr [eax+4*edi+0x08] - ; byrRegs +[ebx] - cmp dword ptr [ebx], 0 - mov esi, ebx
+ jae G_M57321_IG18 + lea esi, bword ptr [eax+4*edi+0x08]
; byrRegs +[esi]
- jl SHORT G_M57321_IG12
+ cmp dword ptr [esi], 0 + jl SHORT G_M57321_IG09
inc edi cmp edi, ecx
- jl SHORT G_M57321_IG10 - ;; size=25 bbWeight=0.16 PerfScore 1.72 -G_M57321_IG11: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[ebx esi] - jmp SHORT G_M57321_IG15 - ;; size=2 bbWeight=2 PerfScore 4.00 -G_M57321_IG12: ; bbWeight=0.08, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref - ; byrRegs +[esi] - mov ebx, dword ptr [ebp-0x24] - ;; size=3 bbWeight=0.08 PerfScore 0.08 -G_M57321_IG13: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+ jl SHORT G_M57321_IG08 + jmp SHORT G_M57321_IG11 + ;; size=25 bbWeight=0.16 PerfScore 2.00 +G_M57321_IG09: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
cmp edi, ebx
- jne SHORT G_M57321_IG14
+ jne SHORT G_M57321_IG10
mov ebx, dword ptr [ebp-0x18] inc ebx mov dword ptr [ebp-0x18], ebx ;; size=11 bbWeight=2 PerfScore 7.00
-G_M57321_IG14: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref
+G_M57321_IG10: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref
mov dword ptr [esi], edx ;; size=2 bbWeight=2 PerfScore 2.00
-G_M57321_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M57321_IG11: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] ; byrRegs -[esi] cmp edi, ecx
- je SHORT G_M57321_IG17
+ je SHORT G_M57321_IG13
inc edx
- mov edi, dword ptr [ebp-0x28] - cmp edi, edx - mov esi, gword ptr [ebp-0x2C]
+ mov ebx, dword ptr [ebp-0x24] + cmp ebx, edx + mov esi, gword ptr [ebp-0x28]
; gcrRegs +[esi]
- jg SHORT G_M57321_IG20 - ;; size=15 bbWeight=4 PerfScore 19.00 -G_M57321_IG16: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, dword ptr [ebp+0x0C] + jg SHORT G_M57321_IG04 + ;; size=18 bbWeight=4 PerfScore 23.00 +G_M57321_IG12: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi] ; GC ptr vars -{V00 V06} xorps xmm0, xmm0 @@ -191,25 +177,25 @@ G_M57321_IG16: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000000 divsd xmm0, xmm1 movsd xmm1, qword ptr [reloc @RWD00] ucomisd xmm1, xmm0
- jbe SHORT G_M57321_IG21
+ jbe SHORT G_M57321_IG16
;; size=34 bbWeight=0.50 PerfScore 17.33
-G_M57321_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57321_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov ecx, eax ; gcrRegs +[ecx] push 0
- mov edx, gword ptr [ebp-0x30]
+ mov edx, gword ptr [ebp-0x2C]
; gcrRegs +[edx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx edx] ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M57321_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57321_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ; gcrRegs +[eax] ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M57321_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57321_IG15: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -217,14 +203,9 @@ G_M57321_IG19: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57321_IG20: ; bbWeight=2, gcVars=00000008 {V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] +[esi]
+G_M57321_IG16: ; bbWeight=0.50, gcVars=00000008 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
...

+18 (+7.32%) : 16011.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)

@@ -91,7 +91,7 @@ G_M50035_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M50035_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test edi, 2 mov edi, dword ptr [ebp-0x10]
- je SHORT G_M50035_IG22
+ je SHORT G_M50035_IG15
;; size=11 bbWeight=1 PerfScore 2.25 G_M50035_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz lea eax, [ebx-0x01] @@ -102,69 +102,77 @@ G_M50035_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x14], edx mov ecx, edi or ecx, edx
- jl SHORT G_M50035_IG18
+ jl SHORT G_M50035_IG20
cmp ebx, edi
- jle SHORT G_M50035_IG18
+ jle SHORT G_M50035_IG20
;; size=25 bbWeight=0.50 PerfScore 3.38 G_M50035_IG12: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz movzx ecx, word ptr [esi+2*edi+0x08] cmp ecx, 256
- jae SHORT G_M50035_IG15
+ jae SHORT G_M50035_IG16
;; size=13 bbWeight=3.96 PerfScore 12.87 G_M50035_IG13: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz call [System.Char:IsWhiteSpaceLatin1(ushort):ubyte]
- jmp SHORT G_M50035_IG16
+ jmp SHORT G_M50035_IG17
;; size=8 bbWeight=1.98 PerfScore 9.90 G_M50035_IG14: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx - jmp SHORT G_M50035_IG22 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M50035_IG15: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, edx + jmp SHORT G_M50035_IG24 + ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M50035_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + jmp SHORT G_M50035_IG24 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M50035_IG16: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M50035_IG16: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG17: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M50035_IG22
+ je SHORT G_M50035_IG19
dec edi mov ebx, dword ptr [ebp-0x14] cmp edi, ebx jge SHORT G_M50035_IG12 ;; size=12 bbWeight=3.96 PerfScore 14.85
-G_M50035_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M50035_IG22 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M50035_IG18: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + jmp SHORT G_M50035_IG24 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M50035_IG19: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + jmp SHORT G_M50035_IG24 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M50035_IG20: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae SHORT G_M50035_IG24
+ jae SHORT G_M50035_IG28
movzx ecx, word ptr [esi+2*edi+0x08] cmp ecx, 256
- jae SHORT G_M50035_IG20
+ jae SHORT G_M50035_IG22
;; size=17 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG19: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Char:IsWhiteSpaceLatin1(ushort):ubyte]
- jmp SHORT G_M50035_IG21
+ jmp SHORT G_M50035_IG23
;; size=8 bbWeight=0.02 PerfScore 0.10
-G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG22: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M50035_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG23: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M50035_IG22
+ je SHORT G_M50035_IG27
dec edi
- mov edx, dword ptr [ebp-0x14] - cmp edi, edx - mov dword ptr [ebp-0x14], edx - jge SHORT G_M50035_IG18 - ;; size=15 bbWeight=0.04 PerfScore 0.19 -G_M50035_IG22: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x14] + cmp edi, eax + jge SHORT G_M50035_IG26 + ;; size=12 bbWeight=0.04 PerfScore 0.15 +G_M50035_IG24: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push edi mov ecx, esi ; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x14]
+ mov edx, eax
call [System.String:CreateTrimmedString(int,int):System.String:this] ; gcrRegs -[ecx esi] +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.25 -G_M50035_IG23: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1 PerfScore 4.50 +G_M50035_IG25: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -172,12 +180,21 @@ G_M50035_IG23: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M50035_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax]
+G_M50035_IG26: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[esi] + mov dword ptr [ebp-0x14], eax + jmp SHORT G_M50035_IG20 + ;; size=5 bbWeight=0.02 PerfScore 0.06 +G_M50035_IG27: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + jmp SHORT G_M50035_IG24 + ;; size=5 bbWeight=0.02 PerfScore 0.06 +G_M50035_IG28: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi]
call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 246, prolog size 9, PerfScore 122.72, instruction count 90, allocated bytes for code 246 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
+; Total bytes of code 264, prolog size 9, PerfScore 131.30, instruction count 98, allocated bytes for code 264 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
; ============================================================

+42 (+7.81%) : 165272.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:GenerateObjectCloneIfNeeded(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)

@@ -43,7 +43,7 @@ ;* V31 tmp17 [V31 ] ( 0, 0 ) int -> zero-ref "field V24._capacity (fldOffset=0xc)" P-INDEP ; V32 tmp18 [V32,T15] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V33 cse0 [V33,T18] ( 3, 1.50) int -> ecx "CSE - conservative"
-; V34 cse1 [V34,T19] ( 3, 1.50) int -> ecx "CSE - conservative"
+; V34 cse1 [V34,T19] ( 3, 1.50) int -> registers "CSE - conservative"
; V35 cse2 [V35,T02] ( 4, 14 ) int -> edx "CSE - aggressive" ; ; Lcl frame size = 16 @@ -74,7 +74,7 @@ G_M45327_IG03: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe ;; size=12 bbWeight=0.50 PerfScore 4.00 G_M45327_IG04: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi edi]
- jmp G_M45327_IG23
+ jmp G_M45327_IG24
;; size=5 bbWeight=0.50 PerfScore 1.00 G_M45327_IG05: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi edi] @@ -90,7 +90,7 @@ G_M45327_IG05: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe cmp eax, 1 mov ebx, gword ptr [ebp-0x10] ; gcrRegs +[ebx]
- jne G_M45327_IG22
+ jne G_M45327_IG23
mov ecx, esi ; gcrRegs +[ecx] ; GC ptr vars -{V04} @@ -102,7 +102,7 @@ G_M45327_IG05: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe call [Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:get_IsVbRuntime():ubyte:this] ; gcrRegs -[eax ecx] test eax, eax
- jne G_M45327_IG22
+ jne G_M45327_IG23
mov eax, edi ; gcrRegs +[eax] ;; size=56 bbWeight=0.50 PerfScore 11.25 @@ -115,7 +115,7 @@ G_M45327_IG06: ; bbWeight=4, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne G_M45327_IG22
+ jne G_M45327_IG23
mov eax, gword ptr [ebp-0x14] movzx edx, byte ptr [eax+0x08] mov ecx, edx @@ -156,7 +156,7 @@ G_M45327_IG09: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= ; GC ptr vars +{V05} mov ebx, gword ptr [ebp-0x10] ; gcrRegs +[ebx]
- jmp G_M45327_IG21
+ jmp G_M45327_IG22
;; size=11 bbWeight=2 PerfScore 8.00 G_M45327_IG10: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[ebx] @@ -204,7 +204,7 @@ G_M45327_IG15: ; bbWeight=4, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR ;; size=12 bbWeight=4 PerfScore 6.00 G_M45327_IG16: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax esi edi]
- jmp G_M45327_IG22
+ jmp G_M45327_IG23
;; size=5 bbWeight=0.50 PerfScore 1.00 G_M45327_IG17: ; bbWeight=4, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[eax esi edi] @@ -213,40 +213,57 @@ G_M45327_IG17: ; bbWeight=4, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR call [CORINFO_HELP_READYTORUN_CHKCAST] ; gcrRegs -[ecx] mov eax, gword ptr [eax+0x10]
+ mov gword ptr [ebp-0x14], eax + ; GC ptr vars +{V05} + mov eax, gword ptr [ebp-0x14]
jmp G_M45327_IG06
- ;; size=16 bbWeight=4 PerfScore 29.00
+ ;; size=22 bbWeight=4 PerfScore 37.00
G_M45327_IG18: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V05}
cmp ecx, 26
- je SHORT G_M45327_IG20
+ je SHORT G_M45327_IG21
cmp ecx, 29
- jne SHORT G_M45327_IG19
+ jne SHORT G_M45327_IG20 + mov gword ptr [ebp-0x10], ebx + ; GC ptr vars +{V04}
mov gword ptr [ebp-0x14], eax ; GC ptr vars +{V05} mov ecx, eax ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_CHKCAST]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx ebx]
mov ecx, dword ptr [eax+0x1C] test cl, 128
- jne SHORT G_M45327_IG21
+ jne SHORT G_M45327_IG19 + mov eax, gword ptr [ebp-0x14]
and ecx, 31
- lea eax, [ecx-0x01] - ; gcrRegs -[eax] - cmp eax, 1 - jbe G_M45327_IG22
+ lea edx, [ecx-0x01] + cmp edx, 1 + mov gword ptr [ebp-0x14], eax + mov ebx, gword ptr [ebp-0x10] + ; gcrRegs +[ebx] + jbe G_M45327_IG23
add ecx, -10 cmp ecx, 12
- ja SHORT G_M45327_IG21 - jmp G_M45327_IG22 - ;; size=57 bbWeight=0.50 PerfScore 7.75 -G_M45327_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ja SHORT G_M45327_IG22 + mov gword ptr [ebp-0x10], ebx + mov ebx, gword ptr [ebp-0x10] + jmp G_M45327_IG23 + ;; size=75 bbWeight=0.50 PerfScore 10.75 +G_M45327_IG19: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax ebx] + mov ebx, gword ptr [ebp-0x10] + ; gcrRegs +[ebx] + jmp SHORT G_M45327_IG22 + ;; size=5 bbWeight=0.25 PerfScore 0.75 +G_M45327_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax]
- ; GC ptr vars -{V05}
+ ; GC ptr vars -{V04 V05}
mov gword ptr [ebp-0x14], eax ; GC ptr vars +{V05}
- jmp SHORT G_M45327_IG21
+ jmp SHORT G_M45327_IG22
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M45327_IG20: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M45327_IG21: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V05} mov gword ptr [ebp-0x14], eax ; GC ptr vars +{V05} @@ -254,16 +271,25 @@ G_M45327_IG20: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_CHKCAST] ; gcrRegs -[ecx]
- mov ecx, dword ptr [eax+0x18] - test cl, 8 - jne SHORT G_M45327_IG21 - and ecx, 3 - dec ecx - cmp ecx, 2 - jbe G_M45327_IG22 - ;; size=32 bbWeight=0.50 PerfScore 4.62 -G_M45327_IG21: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [eax+0x18]
; gcrRegs -[eax]
+ test al, 8 + jne SHORT G_M45327_IG22 + mov gword ptr [ebp-0x10], ebx + ; GC ptr vars +{V04} + mov edx, eax + mov eax, gword ptr [ebp-0x14] + ; gcrRegs +[eax] + and edx, 3 + dec edx + cmp edx, 2 + mov gword ptr [ebp-0x14], eax + mov ebx, gword ptr [ebp-0x10] + jbe G_M45327_IG23 + ;; size=45 bbWeight=0.50 PerfScore 6.75 +G_M45327_IG22: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + ; GC ptr vars -{V04}
mov ecx, gword ptr [esi+0x08] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -291,7 +317,7 @@ G_M45327_IG21: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe call [Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:ReportMissingOrBadRuntimeHelper(Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,Microsoft.CodeAnalysis.VisualBasic.Symbol):ubyte:this] ; gcrRegs -[eax ecx edx esi] test eax, eax
- jne SHORT G_M45327_IG22
+ jne SHORT G_M45327_IG23
mov esi, gword ptr [edi+0x04] ; gcrRegs +[esi] mov edx, dword ptr [(reloc)] ; <unknown method> @@ -338,12 +364,12 @@ G_M45327_IG21: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe mov ebx, gword ptr [ebp-0x1C] ; gcrRegs +[ebx] ;; size=141 bbWeight=0.50 PerfScore 33.62
-G_M45327_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M45327_IG23: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V20} mov eax, ebx ; gcrRegs +[eax] ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M45327_IG23: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M45327_IG24: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ebx] lea esp, [ebp-0x0C] pop ebx @@ -353,6 +379,6 @@ G_M45327_IG23: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 538, prolog size 9, PerfScore 296.62, instruction count 175, allocated bytes for code 538 (MethodHash=07aa4ef0) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:GenerateObjectCloneIfNeeded(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
+; Total bytes of code 580, prolog size 9, PerfScore 310.50, instruction count 190, allocated bytes for code 580 (MethodHash=07aa4ef0) for method Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:GenerateObjectCloneIfNeeded(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
; ============================================================

+6 (+8.82%) : 240590.dasm - System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte):System.Data.Odbc.OdbcDataReader:this (FullOpts)

@@ -13,28 +13,32 @@ ; V01 arg1 [V01,T01] ( 3, 3 ) int -> edx single-def ; V02 arg2 [V02,T07] ( 2, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.String> ; V03 arg3 [V03,T08] ( 1, 1 ) ubyte -> [ebp+0x08] single-def
-;* V04 tmp0 [V04,T02] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.String> -;* V05 tmp1 [V05,T06] ( 0, 0 ) ref -> zero-ref
+; V04 tmp0 [V04,T02] ( 2, 4 ) ref -> esi class-hnd single-def "dup spill" <System.String> +; V05 tmp1 [V05,T06] ( 2, 2 ) ref -> esi
; V06 tmp2 [V06,T03] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <System.String> ; V07 tmp3 [V07,T04] ( 4, 3.50) ref -> eax
-; V08 cse0 [V08,T05] ( 2, 2 ) ref -> eax "CSE - moderate"
+; V08 cse0 [V08,T05] ( 3, 3 ) ref -> eax "CSE - moderate"
; ; Lcl frame size = 0 G_M18056_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ push esi + ;; size=4 bbWeight=1 PerfScore 2.25
G_M18056_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov eax, dword ptr [(reloc)] ; const ptr mov eax, gword ptr [ecx+eax] ; gcrRegs +[eax]
+ mov esi, eax + ; gcrRegs +[esi] + test esi, esi
test eax, eax jne SHORT G_M18056_IG04
- ;; size=12 bbWeight=1 PerfScore 5.25
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M18056_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
+ ; gcrRegs -[eax esi]
mov eax, dword ptr [(reloc)] ; const ptr mov eax, gword ptr [eax] ; gcrRegs +[eax] @@ -52,9 +56,10 @@ G_M18056_IG04: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=0000 ; gcrRegs -[ecx] +[eax] ;; size=24 bbWeight=1 PerfScore 12.00 G_M18056_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop esi
pop ebp ret 8
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 3.00
G_M18056_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] mov ecx, gword ptr [ebp+0x0C] @@ -68,6 +73,6 @@ G_M18056_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 3, PerfScore 23.00, instruction count 23, allocated bytes for code 68 (MethodHash=bbbbb977) for method System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte):System.Data.Odbc.OdbcDataReader:this (FullOpts)
+; Total bytes of code 74, prolog size 4, PerfScore 25.00, instruction count 27, allocated bytes for code 74 (MethodHash=bbbbb977) for method System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte):System.Data.Odbc.OdbcDataReader:this (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-12 (-7.32%) : 188642.dasm - System.Xml.Xsl.XsltOld.OutputScopeManager:FindPrefix(System.String,byref):ubyte:this (FullOpts)

@@ -61,7 +61,7 @@ G_M28412_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M28412_IG04: ; bbWeight=1, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, 0xD1FFAB1E ; System.Xml.Xsl.XsltOld.OutputScope cmp dword ptr [ecx], edx
- jne SHORT G_M28412_IG12
+ jne SHORT G_M28412_IG10
;; size=9 bbWeight=1 PerfScore 4.25 G_M28412_IG05: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] @@ -81,13 +81,13 @@ G_M28412_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ; gcrRegs -[esi edi] xor eax, eax ; gcrRegs +[eax]
- mov ebx, bword ptr [ebp+0x08] - ; byrRegs +[ebx] - mov gword ptr [ebx], eax
+ mov esi, bword ptr [ebp+0x08] + ; byrRegs +[esi] + mov gword ptr [esi], eax
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M28412_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[eax]
- ; byrRegs -[ebx]
+ ; byrRegs -[esi]
lea esp, [ebp-0x0C] pop ebx pop esi @@ -97,8 +97,6 @@ G_M28412_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ;; size=10 bbWeight=0.50 PerfScore 2.25 G_M28412_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[esi edi]
- mov ebx, bword ptr [ebp+0x08] - ; byrRegs +[ebx]
mov edx, gword ptr [ebp-0x10] ; gcrRegs +[edx] lea ecx, [ebp-0x14] @@ -108,17 +106,17 @@ G_M28412_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [<unknown method>] ; gcrRegs -[ecx edx esi] +[eax] test eax, eax
- je SHORT G_M28412_IG11
+ je SHORT G_M28412_IG06
cmp eax, edi
- jne SHORT G_M28412_IG10
+ jne SHORT G_M28412_IG06
mov eax, gword ptr [ebp-0x10]
- mov edx, ebx
+ mov edx, bword ptr [ebp+0x08]
; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax edi]
- ; byrRegs -[edx ebx]
+ ; byrRegs -[edx]
mov eax, 1
- ;; size=41 bbWeight=0.50 PerfScore 5.88
+ ;; size=39 bbWeight=0.50 PerfScore 5.75
G_M28412_IG09: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -127,18 +125,8 @@ G_M28412_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M28412_IG10: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, gcvars, byref, isz - ; byrRegs +[ebx] - mov bword ptr [ebp+0x08], ebx - jmp SHORT G_M28412_IG06 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M28412_IG11: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz - mov bword ptr [ebp+0x08], ebx - jmp SHORT G_M28412_IG06 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M28412_IG12: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M28412_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[eax]
- ; byrRegs -[ebx]
mov ecx, edx mov edx, eax ; gcrRegs +[edx] @@ -147,6 +135,6 @@ G_M28412_IG12: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 14, PerfScore 108.75, instruction count 70, allocated bytes for code 164 (MethodHash=dc079103) for method System.Xml.Xsl.XsltOld.OutputScopeManager:FindPrefix(System.String,byref):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 14, PerfScore 107.12, instruction count 65, allocated bytes for code 152 (MethodHash=dc079103) for method System.Xml.Xsl.XsltOld.OutputScopeManager:FindPrefix(System.String,byref):ubyte:this (FullOpts)
; ============================================================

-32 (-7.17%) : 25927.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[ubyte,System.Nullable1[int]](System.Collections.Generic.IComparer1[ubyte],System.Collections.Generic.IComparer1[ubyte],System.Nullable1[int][],ubyte[]) (FullOpts)

@@ -65,7 +65,7 @@ G_M46208_IG02: ; bbWeight=1, gcVars=00050000 {V00 V01}, gcrefRegs=000000C ;; size=33 bbWeight=1 PerfScore 8.50 G_M46208_IG03: ; bbWeight=4, gcVars=00050040 {V00 V01 V05}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp ecx, dword ptr [eax+0x04]
- jae G_M46208_IG21
+ jae G_M46208_IG18
mov dword ptr [eax+4*ecx+0x08], ecx inc ecx lea edx, [ebx+0x01] @@ -74,7 +74,7 @@ G_M46208_IG03: ; bbWeight=4, gcVars=00050040 {V00 V01 V05}, gcrefRegs=000 ;; size=21 bbWeight=4 PerfScore 28.00 G_M46208_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref test edi, edi
- je G_M46208_IG22
+ je G_M46208_IG19
push 0 mov ebx, dword ptr [edi+0x04] mov dword ptr [ebp-0x24], ebx @@ -89,11 +89,10 @@ G_M46208_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= call [System.Array:Sort[ubyte,int](ubyte[],int[],int,int,System.Collections.Generic.IComparer`1[ubyte])] ; gcrRegs -[eax ecx edx] ; gcr arg pop 1
- mov gword ptr [ebp+0x0C], esi
mov ecx, esi ; gcrRegs +[ecx] call [System.Object:MemberwiseClone():System.Object:this]
- ; gcrRegs -[ecx esi] +[eax]
+ ; gcrRegs -[ecx] +[eax]
mov gword ptr [ebp-0x34], eax ; GC ptr vars +{V08} xor ecx, ecx @@ -107,33 +106,32 @@ G_M46208_IG04: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= mov gword ptr [ebp-0x38], eax ; GC ptr vars +{V09} cmp dword ptr [ebp-0x10], 0
- jle G_M46208_IG17 - ;; size=82 bbWeight=1 PerfScore 24.75 -G_M46208_IG05: ; bbWeight=4, gcVars=00090240 {V01 V05 V08 V09}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jle G_M46208_IG15 + ;; size=79 bbWeight=1 PerfScore 23.75 +G_M46208_IG05: ; bbWeight=4, gcVars=00090240 {V01 V05 V08 V09}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov ecx, dword ptr [ebp-0x14] mov eax, ecx cmp eax, ebx
- jae G_M46208_IG21
+ jae G_M46208_IG18
movzx edx, byte ptr [edi+eax+0x08] mov dword ptr [ebp-0x1C], edx jmp SHORT G_M46208_IG07 ;; size=23 bbWeight=4 PerfScore 30.00
-G_M46208_IG06: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M46208_IG06: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
inc eax mov ecx, dword ptr [ebp-0x14] ;; size=4 bbWeight=8 PerfScore 10.00
-G_M46208_IG07: ; bbWeight=32, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M46208_IG07: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp eax, dword ptr [ebp-0x10]
- jge G_M46208_IG20
+ jge G_M46208_IG17
;; size=9 bbWeight=32 PerfScore 96.00
-G_M46208_IG08: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M46208_IG08: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], ecx cmp eax, ecx je SHORT G_M46208_IG06 cmp eax, ebx
- jae G_M46208_IG21 - mov gword ptr [ebp+0x08], edi
+ jae G_M46208_IG18
mov dword ptr [ebp-0x18], eax movzx edx, byte ptr [edi+eax+0x08] push edx @@ -141,38 +139,35 @@ G_M46208_IG08: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000000 ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x1C] call [<unknown method>]
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx]
test eax, eax mov eax, dword ptr [ebp-0x18]
- mov edi, gword ptr [ebp+0x08] - ; gcrRegs +[edi] - je G_M46208_IG19 - ;; size=53 bbWeight=16 PerfScore 268.00 -G_M46208_IG09: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M46208_IG06 + ;; size=43 bbWeight=16 PerfScore 236.00 +G_M46208_IG09: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x14] ;; size=3 bbWeight=8 PerfScore 8.00
-G_M46208_IG10: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M46208_IG10: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ecx lea ebx, [eax-0x01] mov dword ptr [ebp-0x20], ebx cmp ebx, edx
- jl G_M46208_IG18 - ;; size=16 bbWeight=16 PerfScore 48.00 -G_M46208_IG11: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov gword ptr [ebp+0x0C], esi
mov gword ptr [ebp+0x08], edi
- ;; size=3 bbWeight=8 PerfScore 8.00 -G_M46208_IG12: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+ jl SHORT G_M46208_IG12 + ;; size=18 bbWeight=16 PerfScore 80.00 +G_M46208_IG11: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi]
mov edi, gword ptr [ebp-0x30] ; gcrRegs +[edi] cmp edx, dword ptr [edi+0x04]
- jae G_M46208_IG21
+ jae G_M46208_IG18
mov edi, dword ptr [edi+4*edx+0x08] ; gcrRegs -[edi] mov esi, gword ptr [ebp-0x34] ; gcrRegs +[esi] cmp edi, dword ptr [esi+0x04]
- jae G_M46208_IG21
+ jae SHORT G_M46208_IG18
lea edi, bword ptr [esi+8*edi+0x08] ; byrRegs +[edi] movzx ebx, byte ptr [edi] @@ -180,7 +175,7 @@ G_M46208_IG12: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 { ; byrRegs -[edi] mov esi, gword ptr [ebp+0x0C] cmp edx, dword ptr [esi+0x04]
- jae SHORT G_M46208_IG21
+ jae SHORT G_M46208_IG18
mov gword ptr [ebp+0x0C], esi lea esi, bword ptr [esi+8*edx+0x08] ; gcrRegs -[esi] @@ -192,51 +187,45 @@ G_M46208_IG12: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 { lea esi, [ebx+0x01] ; byrRegs -[esi] cmp edx, esi
- jne SHORT G_M46208_IG12 - ;; size=69 bbWeight=16 PerfScore 464.00 -G_M46208_IG13: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov esi, gword ptr [ebp+0x0C] - ; gcrRegs +[esi] - mov edi, gword ptr [ebp+0x08] - ; gcrRegs +[edi] - ;; size=6 bbWeight=8 PerfScore 16.00 -G_M46208_IG14: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M46208_IG11 + ;; size=65 bbWeight=16 PerfScore 464.00 +G_M46208_IG12: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, eax sub edx, ecx cmp edx, 2
- jl SHORT G_M46208_IG16
+ jl SHORT G_M46208_IG14
;; size=9 bbWeight=4 PerfScore 7.00
-G_M46208_IG15: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M46208_IG13: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push ecx mov dword ptr [ebp-0x18], eax mov edx, eax sub edx, ecx push edx
- mov ebx, gword ptr [ebp-0x38] - ; gcrRegs +[ebx] - push ebx
+ mov esi, gword ptr [ebp-0x38] + ; gcrRegs +[esi] + push esi
; gcr arg push 2 mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx]
- mov edx, esi
+ mov edx, gword ptr [ebp+0x0C]
; gcrRegs +[edx] call [System.Array:Sort[int,System.Nullable`1[int]](int[],System.Nullable`1[int][],int,int,System.Collections.Generic.IComparer`1[int])] ; gcrRegs -[ecx edx] ; gcr arg pop 1 mov eax, dword ptr [ebp-0x18]
- ;; size=27 bbWeight=2 PerfScore 21.50 -G_M46208_IG16: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx] - mov ecx, eax - mov eax, dword ptr [ebp-0x10] - cmp ecx, eax - mov dword ptr [ebp-0x14], ecx - mov gword ptr [ebp+0x0C], esi - mov ebx, dword ptr [ebp-0x24] - jl G_M46208_IG05 - ;; size=22 bbWeight=4 PerfScore 22.00 -G_M46208_IG17: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc - ; gcrRegs -[esi edi]
+ ;; size=28 bbWeight=2 PerfScore 23.00 +G_M46208_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + mov ebx, eax + mov edi, dword ptr [ebp-0x10] + cmp ebx, edi + mov dword ptr [ebp-0x14], ebx + mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi] + jl SHORT G_M46208_IG16 + ;; size=15 bbWeight=4 PerfScore 18.00 +G_M46208_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc + ; gcrRegs -[esi]
; GC ptr vars -{V01 V05 V08 V09} lea esp, [ebp-0x0C] pop ebx @@ -245,32 +234,28 @@ G_M46208_IG17: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M46208_IG18: ; bbWeight=8, gcVars=00090240 {V01 V05 V08 V09}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[edi] - ; GC ptr vars +{V01 V05 V06 V08 V09 V16 V19} - mov esi, gword ptr [ebp+0x0C]
+G_M46208_IG16: ; bbWeight=2, gcVars=00090240 {V01 V05 V08 V09}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
- jmp SHORT G_M46208_IG14 - ;; size=5 bbWeight=8 PerfScore 24.00 -G_M46208_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi]
+ ; GC ptr vars +{V01 V05 V06 V08 V09 V16 V19}
mov ebx, dword ptr [ebp-0x24]
- jmp G_M46208_IG06 - ;; size=8 bbWeight=8 PerfScore 24.00 -G_M46208_IG20: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp+0x08] + ; gcrRegs +[edi] + jmp G_M46208_IG05 + ;; size=11 bbWeight=2 PerfScore 8.00 +G_M46208_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
jmp G_M46208_IG10 ;; size=5 bbWeight=16 PerfScore 32.00
-G_M46208_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edi]
+G_M46208_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi edi]
; GC ptr vars -{V01 V05 V06 V08 V09 V16 V19} call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M46208_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M46208_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 74 call [System.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 446, prolog size 21, PerfScore 1152.75, instruction count 146, allocated bytes for code 446 (MethodHash=3c7c4b7f) for method Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],System.Collections.Generic.IComparer`1[ubyte],System.Nullable`1[int][],ubyte[]) (FullOpts)
+; Total bytes of code 414, prolog size 21, PerfScore 1085.25, instruction count 140, allocated bytes for code 414 (MethodHash=3c7c4b7f) for method Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],System.Collections.Generic.IComparer`1[ubyte],System.Nullable`1[int][],ubyte[]) (FullOpts)
...

-20 (-7.12%) : 290287.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:MatchVoice(System.Globalization.CultureInfo,int,int,int,ubyte,byref):System.Speech.Internal.Synthesis.TTSVoice:this (FullOpts)

@@ -18,17 +18,17 @@ ; V07 loc0 [V07,T08] ( 4, 3 ) ref -> [ebp-0x14] class-hnd <System.Speech.Internal.Synthesis.TTSVoice> ; V08 loc1 [V08,T02] ( 10, 23.50) ref -> [ebp-0x18] class-hnd exact spill-single-def <<unknown class>> ; V09 loc2 [V09,T00] ( 9, 28 ) int -> [ebp-0x10]
-; V10 loc3 [V10,T04] ( 6, 6 ) ref -> [ebp-0x1C] class-hnd <System.Speech.Synthesis.InstalledVoice> -; V11 tmp0 [V11,T06] ( 3, 6 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V10 loc3 [V10,T04] ( 6, 6 ) ref -> registers class-hnd <System.Speech.Synthesis.InstalledVoice> +; V11 tmp0 [V11,T06] ( 3, 6 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon> ;* V13 tmp2 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp3 [V14,T15] ( 3, 1.50) int -> eax "Inline stloc first use temp" ; V15 tmp4 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr" ; V16 tmp5 [V16,T03] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V17 tmp6 [V17,T10] ( 2, 2 ) ref -> [ebp-0x24] spill-single-def "argument with side effect"
+; V17 tmp6 [V17,T10] ( 2, 2 ) ref -> edx "argument with side effect"
; V18 tmp7 [V18,T11] ( 2, 2 ) ref -> ecx "argument with side effect" ;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M64973_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -36,7 +36,7 @@ G_M64973_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24
+ sub esp, 16
mov edi, ecx ; gcrRegs +[edi] mov esi, edx @@ -51,7 +51,7 @@ G_M64973_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; GC ptr vars +{V07} mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x20], eax
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V11} mov edx, gword ptr [edi+0x58] ; gcrRegs +[edx] @@ -59,7 +59,7 @@ G_M64973_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- mov eax, gword ptr [ebp-0x20]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V08} @@ -70,11 +70,11 @@ G_M64973_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M64973_IG03: ; bbWeight=4, gcVars=00000104 {V07 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz ; GC ptr vars -{V11} cmp edx, dword ptr [eax+0x08]
- jae G_M64973_IG15
+ jae G_M64973_IG16
mov ecx, gword ptr [eax+0x04] ; gcrRegs +[ecx] cmp edx, dword ptr [ecx+0x04]
- jae G_M64973_IG14
+ jae G_M64973_IG15
mov ecx, gword ptr [ecx+4*edx+0x08] cmp byte ptr [ecx+0x0C], 0 jne SHORT G_M64973_IG05 @@ -96,16 +96,21 @@ G_M64973_IG05: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= ;; size=3 bbWeight=4 PerfScore 5.00 G_M64973_IG06: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, byref, isz cmp dword ptr [eax+0x08], 0
- jg SHORT G_M64973_IG09
+ jg SHORT G_M64973_IG10
;; size=6 bbWeight=8 PerfScore 32.00
-G_M64973_IG07: ; bbWeight=1, gcVars=00000100 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M64973_IG07: ; bbWeight=4, gcVars=00000100 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax esi edi] ; byrRegs -[ebx] ; GC ptr vars -{V08}
- mov eax, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x14] + ; gcrRegs +[edi] + ;; size=3 bbWeight=4 PerfScore 4.00 +G_M64973_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V07} + mov eax, edi
; gcrRegs +[eax]
- ;; size=3 bbWeight=1 PerfScore 1.00 -G_M64973_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M64973_IG09: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -113,10 +118,10 @@ G_M64973_IG08: ; bbWeight=1, epilog, nogc, extend pop ebp ret 20 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M64973_IG09: ; bbWeight=2, gcVars=00000104 {V07 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+G_M64973_IG10: ; bbWeight=2, gcVars=00000104 {V07 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; gcrRegs +[esi]
; byrRegs +[ebx]
- ; GC ptr vars +{V02 V08}
+ ; GC ptr vars +{V02 V07 V08}
mov ecx, gword ptr [ebx] ; gcrRegs +[ecx] push dword ptr [ebp+0x18] @@ -129,91 +134,79 @@ G_M64973_IG09: ; bbWeight=2, gcVars=00000104 {V07 V08}, gcrefRegs=000000C call [<unknown method>] ; gcrRegs -[ecx edx] ; gcr arg pop 1
- mov ecx, eax - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M64973_IG13 - ;; size=26 bbWeight=2 PerfScore 21.50 -G_M64973_IG10: ; bbWeight=0.50, gcVars=00000004 {V08}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz - ; gcrRegs -[eax esi]
+ test eax, eax + je SHORT G_M64973_IG14 + ;; size=24 bbWeight=2 PerfScore 21.00 +G_M64973_IG11: ; bbWeight=0.50, gcVars=00000004 {V08}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; gcrRegs -[esi]
; GC ptr vars -{V02 V07 V08}
- mov gword ptr [ebp-0x1C], ecx - ; GC ptr vars +{V10} - mov edx, gword ptr [ecx+0x04] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x24], edx - ; GC ptr vars +{V17} - movzx edx, byte ptr [ebp+0x0C] - ; gcrRegs -[edx] - push edx - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - mov ecx, edi - ; GC ptr vars -{V10 V17} +{V08} - call [<unknown method>] - ; gcrRegs -[ecx edx edi] +[eax]
mov esi, eax ; gcrRegs +[esi]
- test esi, esi - mov gword ptr [ebp-0x14], esi - ; GC ptr vars +{V07} - jne SHORT G_M64973_IG07 - mov eax, gword ptr [ebp-0x18] - mov edi, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [esi+0x04] + ; gcrRegs +[edx] + movzx ecx, byte ptr [ebp+0x0C] + push ecx + mov ecx, edi + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[ecx edx edi] + mov edi, eax
; gcrRegs +[edi]
+ test edi, edi + jne SHORT G_M64973_IG08 + mov eax, gword ptr [ebp-0x18]
mov ecx, gword ptr [eax+0x04] ; gcrRegs +[ecx] push 0 push dword ptr [eax+0x08] push 0xD1FFAB1E
- mov edx, edi
+ mov edx, esi
; gcrRegs +[edx] call [<unknown method>]
- ; gcrRegs -[eax ecx edx esi]
+ ; gcrRegs -[eax ecx edx]
test eax, eax
- jl SHORT G_M64973_IG12 - ;; size=65 bbWeight=0.50 PerfScore 12.62 -G_M64973_IG11: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+ jl SHORT G_M64973_IG13 + ;; size=52 bbWeight=0.50 PerfScore 10.25 +G_M64973_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] mov edx, eax
- ; GC ptr vars -{V08}
call [<unknown method>] ; gcrRegs -[ecx] ;; size=11 bbWeight=0.50 PerfScore 2.12
-G_M64973_IG12: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
+G_M64973_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
movzx ecx, byte ptr [ebp+0x0C] push ecx
- mov ecx, edi
+ mov ecx, esi
; gcrRegs +[ecx] xor edx, edx call [<unknown method>] ; gcrRegs -[ecx]
- cmp edi, gword ptr [ebx] - jne G_M64973_IG07
+ cmp esi, gword ptr [ebx] + jne SHORT G_M64973_IG08
xor eax, eax ; gcrRegs +[eax] mov gword ptr [ebx], eax
- jmp G_M64973_IG07 - ;; size=32 bbWeight=0.50 PerfScore 6.38 -G_M64973_IG13: ; bbWeight=1, gcVars=00000104 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref - ; gcrRegs -[eax] +[esi] - ; GC ptr vars +{V02 V08}
+ jmp SHORT G_M64973_IG08 + ;; size=25 bbWeight=0.50 PerfScore 6.38 +G_M64973_IG14: ; bbWeight=1, gcVars=00000104 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, gcvars, byref + ; gcrRegs -[eax] + ; GC ptr vars +{V02 V07 V08}
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax] jmp G_M64973_IG06 ;; size=8 bbWeight=1 PerfScore 3.00
-G_M64973_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M64973_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax esi edi] ; byrRegs -[ebx] ; GC ptr vars -{V02 V07 V08} call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64973_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M64973_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 281, prolog size 16, PerfScore 184.62, instruction count 96, allocated bytes for code 281 (MethodHash=5fbe0232) for method System.Speech.Internal.Synthesis.VoiceSynthesis:MatchVoice(System.Globalization.CultureInfo,int,int,int,ubyte,byref):System.Speech.Internal.Synthesis.TTSVoice:this (FullOpts)
+; Total bytes of code 261, prolog size 16, PerfScore 185.00, instruction count 92, allocated bytes for code 261 (MethodHash=5fbe0232) for method System.Speech.Internal.Synthesis.VoiceSynthesis:MatchVoice(System.Globalization.CultureInfo,int,int,int,ubyte,byref):System.Speech.Internal.Synthesis.TTSVoice:this (FullOpts)
; ============================================================

+10 (+200.00%) : 171240.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary2+Builder+KeyCollection[System.__Canon,System.Nullable1[int]]:this (FullOpts)

@@ -12,9 +12,9 @@ ;* V01 tmp0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]> ;* V02 tmp1 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "field V01._dictionary (fldOffset=0x0)" P-INDEP
-;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V04 rat0 [V04,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V05 rat1 [V05,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V06 rat2 [V06,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 rat2 [V06,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -22,14 +22,18 @@ G_M7872_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=0 bbWeight=1 PerfScore 0.00 G_M7872_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x10] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M7872_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=9d20e13f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=9d20e13f) for method Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
; ============================================================

+11 (+220.00%) : 16422.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.Canon]:Invoke(System.Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp0 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.value (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V06 rat1 [V06,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -23,14 +23,18 @@ G_M33213_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M33213_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx edx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax+0x04] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, edx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=15 bbWeight=1 PerfScore 8.50
G_M33213_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=44387e42) for method Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 16 (MethodHash=44387e42) for method Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
; ============================================================

+11 (+220.00%) : 23343.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.Canon]:Invoke(System.Canon):System.__Canon:this (FullOpts)

@@ -11,9 +11,9 @@ ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.__Canon]> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.__Canon> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V03 rat0 [V03,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V03 rat0 [V03,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V04 rat1 [V04,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat2 [V05,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat2 [V05,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -21,14 +21,18 @@ G_M35994_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M35994_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx edx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax+0x04] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, edx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=15 bbWeight=1 PerfScore 8.50
G_M35994_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=e2ee7365) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.__Canon]:Invoke(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 16 (MethodHash=e2ee7365) for method Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.__Canon]:Invoke(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-15 (-11.90%) : 187641.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon]:TryEnqueue(System.Canon):ubyte:this (Tier1)

@@ -9,17 +9,16 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.56) ref -> ecx this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 3, 2.56) ref -> [ebp-0x18] class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V01 arg1 [V01,T02] ( 3, 2.56) ref -> [ebp-0x14] class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edx class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T01] ( 6, 4.67) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T05] ( 3, 3 ) int -> edx
+; V04 loc2 [V04,T05] ( 3, 3 ) int -> edi
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc4 [V06,T06] ( 3, 2.44) int -> edx -; V07 cse0 [V07,T03] ( 4, 3.11) byref -> ebx "CSE - moderate" -; V08 cse1 [V08,T07] ( 3, 1.67) int -> [ebp-0x14] "CSE - moderate" -; TEMP_01 byref -> [ebp-0x1C]
+; V06 loc4 [V06,T06] ( 3, 2.44) int -> ebx +; V07 cse0 [V07,T03] ( 4, 3.11) byref -> edi "CSE - moderate" +; V08 cse1 [V08,T07] ( 3, 1.67) int -> registers "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,56 +26,49 @@ G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x1C], eax - mov gword ptr [ebp-0x18], edx
+ sub esp, 8 + mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V01}
- ;; size=17 bbWeight=1 PerfScore 6.75
+ ;; size=12 bbWeight=1 PerfScore 5.50
G_M56054_IG02: ; bbWeight=1, gcVars=00000004 {V01}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
- mov edi, gword ptr [ecx+0x04] - ; gcrRegs +[edi]
+ mov edx, gword ptr [ecx+0x04] + ; gcrRegs +[edx]
;; size=3 bbWeight=1 PerfScore 2.00
-G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
+G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x94] mov dword ptr [ebp-0x10], eax
- mov edx, eax - and edx, dword ptr [ecx+0x0C] - cmp edx, dword ptr [edi+0x04]
+ mov edi, eax + and edi, dword ptr [ecx+0x0C] + cmp edi, dword ptr [edx+0x04]
jae SHORT G_M56054_IG08
- lea ebx, bword ptr [edi+8*edx+0x08] - ; byrRegs +[ebx] - mov edx, dword ptr [ebx+0x04] - sub edx, eax
+ lea edi, bword ptr [edx+8*edi+0x08] + ; byrRegs +[edi] + mov ebx, dword ptr [edi+0x04] + sub ebx, eax
jne SHORT G_M56054_IG06 ;; size=30 bbWeight=1 PerfScore 14.50
-G_M56054_IG04: ; bbWeight=0.56, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000008 {ebx}, byref, isz - lea edx, bword ptr [ecx+0x94] - ; byrRegs +[edx] - mov bword ptr [ebp-0x1C], edx - lea edx, [eax+0x01] - ; byrRegs -[edx] - mov esi, bword ptr [ebp-0x1C] - ; byrRegs +[esi]
+G_M56054_IG04: ; bbWeight=0.56, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000080 {edi}, byref, isz + lea ebx, bword ptr [ecx+0x94] + ; byrRegs +[ebx] + lea esi, [eax+0x01]
lock
- cmpxchg dword ptr [esi], edx
+ cmpxchg dword ptr [ebx], esi
cmp eax, dword ptr [ebp-0x10]
- mov dword ptr [ebp-0x14], edx
jne SHORT G_M56054_IG03
- mov esi, gword ptr [ebp-0x18]
+ mov eax, esi + mov esi, gword ptr [ebp-0x14]
; gcrRegs +[esi]
- ; byrRegs -[esi] - mov edx, ebx
+ mov edx, edi + ; gcrRegs -[edx]
; byrRegs +[edx] ; GC ptr vars -{V01} call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
- ; gcrRegs -[ecx esi edi] - ; byrRegs -[edx] - mov ecx, dword ptr [ebp-0x14] - mov dword ptr [ebx+0x04], ecx
+ ; gcrRegs -[ecx esi] + ; byrRegs -[edx ebx] + mov dword ptr [edi+0x04], eax
mov eax, 1
- ;; size=48 bbWeight=0.56 PerfScore 16.39
+ ;; size=38 bbWeight=0.56 PerfScore 14.31
G_M56054_IG05: ; bbWeight=0.56, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -85,11 +77,11 @@ G_M56054_IG05: ; bbWeight=0.56, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.56 PerfScore 1.94
-G_M56054_IG06: ; bbWeight=0.44, gcVars=00000004 {V01}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx edi] - ; byrRegs -[ebx]
+G_M56054_IG06: ; bbWeight=0.44, gcVars=00000004 {V01}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx edx] + ; byrRegs -[edi]
; GC ptr vars +{V01 V02}
- test edx, edx
+ test ebx, ebx
jge SHORT G_M56054_IG03 xor eax, eax ;; size=6 bbWeight=0.44 PerfScore 0.67 @@ -102,12 +94,12 @@ G_M56054_IG07: ; bbWeight=0.44, epilog, nogc, extend ret ;; size=8 bbWeight=0.44 PerfScore 1.56 G_M56054_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx edx]
; GC ptr vars -{V01 V02} call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 17, PerfScore 43.81, instruction count 52, allocated bytes for code 126 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 111, prolog size 12, PerfScore 40.47, instruction count 47, allocated bytes for code 111 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
; ============================================================

-15 (-11.90%) : 220161.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon]:TryEnqueue(System.Canon):ubyte:this (Tier1)

@@ -9,17 +9,16 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.50) ref -> ecx this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 3, 2.50) ref -> [ebp-0x18] class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V01 arg1 [V01,T02] ( 3, 2.50) ref -> [ebp-0x14] class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edx class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T01] ( 6, 4.50) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T05] ( 3, 3 ) int -> edx
+; V04 loc2 [V04,T05] ( 3, 3 ) int -> edi
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc4 [V06,T06] ( 3, 2.50) int -> edx -; V07 cse0 [V07,T03] ( 4, 3 ) byref -> ebx "CSE - moderate" -; V08 cse1 [V08,T07] ( 3, 1.50) int -> [ebp-0x14] "CSE - moderate" -; TEMP_01 byref -> [ebp-0x1C]
+; V06 loc4 [V06,T06] ( 3, 2.50) int -> ebx +; V07 cse0 [V07,T03] ( 4, 3 ) byref -> edi "CSE - moderate" +; V08 cse1 [V08,T07] ( 3, 1.50) int -> registers "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,56 +26,49 @@ G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x1C], eax - mov gword ptr [ebp-0x18], edx
+ sub esp, 8 + mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V01}
- ;; size=17 bbWeight=1 PerfScore 6.75
+ ;; size=12 bbWeight=1 PerfScore 5.50
G_M56054_IG02: ; bbWeight=1, gcVars=00000004 {V01}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
- mov edi, gword ptr [ecx+0x04] - ; gcrRegs +[edi]
+ mov edx, gword ptr [ecx+0x04] + ; gcrRegs +[edx]
;; size=3 bbWeight=1 PerfScore 2.00
-G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
+G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x94] mov dword ptr [ebp-0x10], eax
- mov edx, eax - and edx, dword ptr [ecx+0x0C] - cmp edx, dword ptr [edi+0x04]
+ mov edi, eax + and edi, dword ptr [ecx+0x0C] + cmp edi, dword ptr [edx+0x04]
jae SHORT G_M56054_IG08
- lea ebx, bword ptr [edi+8*edx+0x08] - ; byrRegs +[ebx] - mov edx, dword ptr [ebx+0x04] - sub edx, eax
+ lea edi, bword ptr [edx+8*edi+0x08] + ; byrRegs +[edi] + mov ebx, dword ptr [edi+0x04] + sub ebx, eax
jne SHORT G_M56054_IG06 ;; size=30 bbWeight=1 PerfScore 14.50
-G_M56054_IG04: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000008 {ebx}, byref, isz - lea edx, bword ptr [ecx+0x94] - ; byrRegs +[edx] - mov bword ptr [ebp-0x1C], edx - lea edx, [eax+0x01] - ; byrRegs -[edx] - mov esi, bword ptr [ebp-0x1C] - ; byrRegs +[esi]
+G_M56054_IG04: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000080 {edi}, byref, isz + lea ebx, bword ptr [ecx+0x94] + ; byrRegs +[ebx] + lea esi, [eax+0x01]
lock
- cmpxchg dword ptr [esi], edx
+ cmpxchg dword ptr [ebx], esi
cmp eax, dword ptr [ebp-0x10]
- mov dword ptr [ebp-0x14], edx
jne SHORT G_M56054_IG03
- mov esi, gword ptr [ebp-0x18]
+ mov eax, esi + mov esi, gword ptr [ebp-0x14]
; gcrRegs +[esi]
- ; byrRegs -[esi] - mov edx, ebx
+ mov edx, edi + ; gcrRegs -[edx]
; byrRegs +[edx] ; GC ptr vars -{V01} call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
- ; gcrRegs -[ecx esi edi] - ; byrRegs -[edx] - mov ecx, dword ptr [ebp-0x14] - mov dword ptr [ebx+0x04], ecx
+ ; gcrRegs -[ecx esi] + ; byrRegs -[edx ebx] + mov dword ptr [edi+0x04], eax
mov eax, 1
- ;; size=48 bbWeight=0.50 PerfScore 14.75
+ ;; size=38 bbWeight=0.50 PerfScore 12.88
G_M56054_IG05: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -85,11 +77,11 @@ G_M56054_IG05: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M56054_IG06: ; bbWeight=0.50, gcVars=00000004 {V01}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx edi] - ; byrRegs -[ebx]
+G_M56054_IG06: ; bbWeight=0.50, gcVars=00000004 {V01}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx edx] + ; byrRegs -[edi]
; GC ptr vars +{V01 V02}
- test edx, edx
+ test ebx, ebx
jge SHORT G_M56054_IG03 xor eax, eax ;; size=6 bbWeight=0.50 PerfScore 0.75 @@ -102,12 +94,12 @@ G_M56054_IG07: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=8 bbWeight=0.50 PerfScore 1.75 G_M56054_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx edx]
; GC ptr vars -{V01 V02} call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 17, PerfScore 42.25, instruction count 52, allocated bytes for code 126 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 111, prolog size 12, PerfScore 39.12, instruction count 47, allocated bytes for code 111 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
; ============================================================

-15 (-11.90%) : 247553.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon]:TryEnqueue(System.Canon):ubyte:this (Tier1)

@@ -9,17 +9,16 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.54) ref -> ecx this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 3, 2.54) ref -> [ebp-0x18] class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V01 arg1 [V01,T02] ( 3, 2.54) ref -> [ebp-0x14] class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T04] ( 3, 3 ) ref -> edx class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T01] ( 6, 4.62) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T05] ( 3, 3 ) int -> edx
+; V04 loc2 [V04,T05] ( 3, 3 ) int -> edi
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc4 [V06,T06] ( 3, 2.46) int -> edx -; V07 cse0 [V07,T03] ( 4, 3.08) byref -> ebx "CSE - moderate" -; V08 cse1 [V08,T07] ( 3, 1.62) int -> [ebp-0x14] "CSE - moderate" -; TEMP_01 byref -> [ebp-0x1C]
+; V06 loc4 [V06,T06] ( 3, 2.46) int -> ebx +; V07 cse0 [V07,T03] ( 4, 3.08) byref -> edi "CSE - moderate" +; V08 cse1 [V08,T07] ( 3, 1.62) int -> registers "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,56 +26,49 @@ G_M56054_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - xor eax, eax - mov dword ptr [ebp-0x1C], eax - mov gword ptr [ebp-0x18], edx
+ sub esp, 8 + mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V01}
- ;; size=17 bbWeight=1 PerfScore 6.75
+ ;; size=12 bbWeight=1 PerfScore 5.50
G_M56054_IG02: ; bbWeight=1, gcVars=00000004 {V01}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
- mov edi, gword ptr [ecx+0x04] - ; gcrRegs +[edi]
+ mov edx, gword ptr [ecx+0x04] + ; gcrRegs +[edx]
;; size=3 bbWeight=1 PerfScore 2.00
-G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
+G_M56054_IG03: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x94] mov dword ptr [ebp-0x10], eax
- mov edx, eax - and edx, dword ptr [ecx+0x0C] - cmp edx, dword ptr [edi+0x04]
+ mov edi, eax + and edi, dword ptr [ecx+0x0C] + cmp edi, dword ptr [edx+0x04]
jae SHORT G_M56054_IG08
- lea ebx, bword ptr [edi+8*edx+0x08] - ; byrRegs +[ebx] - mov edx, dword ptr [ebx+0x04] - sub edx, eax
+ lea edi, bword ptr [edx+8*edi+0x08] + ; byrRegs +[edi] + mov ebx, dword ptr [edi+0x04] + sub ebx, eax
jne SHORT G_M56054_IG06 ;; size=30 bbWeight=1 PerfScore 14.50
-G_M56054_IG04: ; bbWeight=0.54, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000008 {ebx}, byref, isz - lea edx, bword ptr [ecx+0x94] - ; byrRegs +[edx] - mov bword ptr [ebp-0x1C], edx - lea edx, [eax+0x01] - ; byrRegs -[edx] - mov esi, bword ptr [ebp-0x1C] - ; byrRegs +[esi]
+G_M56054_IG04: ; bbWeight=0.54, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000080 {edi}, byref, isz + lea ebx, bword ptr [ecx+0x94] + ; byrRegs +[ebx] + lea esi, [eax+0x01]
lock
- cmpxchg dword ptr [esi], edx
+ cmpxchg dword ptr [ebx], esi
cmp eax, dword ptr [ebp-0x10]
- mov dword ptr [ebp-0x14], edx
jne SHORT G_M56054_IG03
- mov esi, gword ptr [ebp-0x18]
+ mov eax, esi + mov esi, gword ptr [ebp-0x14]
; gcrRegs +[esi]
- ; byrRegs -[esi] - mov edx, ebx
+ mov edx, edi + ; gcrRegs -[edx]
; byrRegs +[edx] ; GC ptr vars -{V01} call CORINFO_HELP_CHECKED_ASSIGN_REF_ESI
- ; gcrRegs -[ecx esi edi] - ; byrRegs -[edx] - mov ecx, dword ptr [ebp-0x14] - mov dword ptr [ebx+0x04], ecx
+ ; gcrRegs -[ecx esi] + ; byrRegs -[edx ebx] + mov dword ptr [edi+0x04], eax
mov eax, 1
- ;; size=48 bbWeight=0.54 PerfScore 15.88
+ ;; size=38 bbWeight=0.54 PerfScore 13.87
G_M56054_IG05: ; bbWeight=0.54, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -85,11 +77,11 @@ G_M56054_IG05: ; bbWeight=0.54, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.54 PerfScore 1.88
-G_M56054_IG06: ; bbWeight=0.46, gcVars=00000004 {V01}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx edi] - ; byrRegs -[ebx]
+G_M56054_IG06: ; bbWeight=0.46, gcVars=00000004 {V01}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx edx] + ; byrRegs -[edi]
; GC ptr vars +{V01 V02}
- test edx, edx
+ test ebx, ebx
jge SHORT G_M56054_IG03 xor eax, eax ;; size=6 bbWeight=0.46 PerfScore 0.69 @@ -102,12 +94,12 @@ G_M56054_IG07: ; bbWeight=0.46, epilog, nogc, extend ret ;; size=8 bbWeight=0.46 PerfScore 1.62 G_M56054_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx edx]
; GC ptr vars -{V01 V02} call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 17, PerfScore 43.33, instruction count 52, allocated bytes for code 126 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 111, prolog size 12, PerfScore 40.06, instruction count 47, allocated bytes for code 111 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
; ============================================================

+10 (+111.11%) : 562424.dasm - System.Text.Json.Serialization.Tests.StructDictionary2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair2[System.Canon,System.Text.Json.JsonElement]):System.Canon:this (Tier1)

@@ -11,9 +11,9 @@ ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]> ; V01 arg1 [V01,T04] ( 1, 1 ) struct (12) [esp+0x04] do-not-enreg[SF] ld-addr-op single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V03 rat0 [V03,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V03 rat0 [V03,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V04 rat1 [V04,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat2 [V05,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat2 [V05,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -21,14 +21,18 @@ G_M16336_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M16336_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax
mov eax, gword ptr [esp+0x04] ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 9.25
G_M16336_IG03: ; bbWeight=1, epilog, nogc, extend ret 12 ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 9, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 9 (MethodHash=94f4c02f) for method System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 11.25, instruction count 7, allocated bytes for code 19 (MethodHash=94f4c02f) for method System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (Tier1)
; ============================================================

+10 (+200.00%) : 31569.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Tier1)

@@ -14,9 +14,9 @@ ;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "field V01.m_task (fldOffset=0x0)" P-INDEP
-;* V06 rat0 [V06,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V06 rat0 [V06,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V07 rat1 [V07,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V08 rat2 [V08,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V08 rat2 [V08,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,14 +24,18 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=0 bbWeight=1 PerfScore 0.00 G_M9200_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x30] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
; ============================================================

+10 (+200.00%) : 15296.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (Instrumented Tier1)

@@ -14,9 +14,9 @@ ;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "field V01.m_task (fldOffset=0x0)" P-INDEP
-;* V06 rat0 [V06,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V06 rat0 [V06,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V07 rat1 [V07,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V08 rat2 [V08,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V08 rat2 [V08,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,14 +24,18 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=0 bbWeight=1 PerfScore 0.00 G_M9200_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x30] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-19 (-5.56%) : 278126.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:g_findInitializer|1060(System.Collections.Immutable.ImmutableArray1[System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T08] ( 4, 4.50) int -> [ebp-0x10] single-def ; V02 arg2 [V02,T09] ( 3, 4 ) ref -> [ebp-0x2C] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree> ; V03 arg3 [V03,T16] ( 2, 1 ) byref -> [ebp+0x0C] single-def
-; V04 arg4 [V04,T05] ( 5, 10 ) byref -> [ebp+0x08] single-def
+; V04 arg4 [V04,T05] ( 5, 10 ) byref -> esi single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]]> ;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]> ; V07 loc2 [V07 ] ( 3, 6 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Text.TextSpan> @@ -35,7 +35,7 @@ ; V24 tmp15 [V24,T14] ( 2, 2 ) ref -> eax single-def "field V00.array (fldOffset=0x0)" P-INDEP ; V25 tmp16 [V25,T12] ( 2, 5 ) ref -> [ebp-0x30] spill-single-def "field V05._array (fldOffset=0x0)" P-INDEP ; V26 tmp17 [V26,T01] ( 4, 13 ) int -> ebx "field V05._index (fldOffset=0x4)" P-INDEP
-; V27 tmp18 [V27,T00] ( 9, 19.50) ref -> [ebp-0x34] "field V06.array (fldOffset=0x0)" P-INDEP
+; V27 tmp18 [V27,T00] ( 9, 19.50) ref -> [ebp-0x34] spill-single-def "field V06.array (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28 ] ( 2, 4 ) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07.<Start>k__BackingField (fldOffset=0x0)" P-DEP ; V29 tmp20 [V29 ] ( 2, 4 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V07.<Length>k__BackingField (fldOffset=0x4)" P-DEP ;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref "field V10.FieldOpt (fldOffset=0x0)" P-INDEP @@ -79,30 +79,28 @@ G_M25641_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=35 bbWeight=1 PerfScore 12.08 G_M25641_IG02: ; bbWeight=1, gcVars=00000200 {V02}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref xor ecx, ecx
- mov bword ptr [ebp+0x08], esi
mov dword ptr [esi], ecx mov edx, dword ptr [eax+0x04] mov dword ptr [ebp-0x28], edx mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V25}
- ;; size=16 bbWeight=1 PerfScore 6.25 -G_M25641_IG03: ; bbWeight=1, gcVars=00001200 {V02 V25}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[esi]
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M25641_IG03: ; bbWeight=1, gcVars=00001200 {V02 V25}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref
xor ebx, ebx test edx, edx jle G_M25641_IG10 ;; size=10 bbWeight=1 PerfScore 1.50
-G_M25641_IG04: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M25641_IG04: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, gword ptr [eax+4*ecx+0x08] ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x34], ecx + ; GC ptr vars +{V27}
mov edi, dword ptr [ecx+0x04] test edi, edi je SHORT G_M25641_IG09
- ;; size=11 bbWeight=4 PerfScore 21.00 -G_M25641_IG05: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 25.00 +G_M25641_IG05: ; bbWeight=2, gcVars=00001201 {V02 V25 V27}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax]
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V27}
mov eax, gword ptr [ecx+0x0C] ; gcrRegs +[eax] mov ecx, eax @@ -127,14 +125,14 @@ G_M25641_IG05: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov ecx, gword ptr [ebp-0x20] ; gcrRegs +[ecx] jmp SHORT G_M25641_IG08
- ;; size=56 bbWeight=2 PerfScore 53.00 -G_M25641_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=53 bbWeight=2 PerfScore 51.00 +G_M25641_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ecx] mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] jmp SHORT G_M25641_IG09 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[ecx] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] @@ -145,7 +143,7 @@ G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[ecx] ; byrRegs -[ecx] ;; size=11 bbWeight=2 PerfScore 13.00
-G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax] lea edx, [ebp-0x18] mov dword ptr [ebp-0x38], edx @@ -153,24 +151,22 @@ G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov edx, dword ptr [edx+0x2C] mov dword ptr [ebp-0x3C], edx mov edx, dword ptr [ebp-0x38]
- mov esi, dword ptr [ebp-0x3C] - call [esi+0x14]<unknown method>
+ mov eax, dword ptr [ebp-0x3C] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] mov eax, dword ptr [ebp-0x18] add eax, dword ptr [ebp-0x14]
- mov esi, dword ptr [ebp-0x10] - cmp eax, esi - mov dword ptr [ebp-0x10], esi
+ mov edx, dword ptr [ebp-0x10] + cmp eax, edx + mov dword ptr [ebp-0x10], edx
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] jg SHORT G_M25641_IG12 ;; size=42 bbWeight=2 PerfScore 37.50
-G_M25641_IG09: ; bbWeight=4, gcVars=00001200 {V02 V25}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V27} - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi]
+G_M25641_IG09: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
mov edi, dword ptr [esi] push ecx
+ ; GC ptr vars -{V27}
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__getGroupLength|106_1(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]):int] ; gcrRegs -[ecx] add eax, edi @@ -179,11 +175,10 @@ G_M25641_IG09: ; bbWeight=4, gcVars=00001200 {V02 V25}, gcrefRegs=0000000 mov ebx, ecx mov edi, dword ptr [ebp-0x28] cmp edi, ebx
- mov bword ptr [ebp+0x08], esi
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] jg G_M25641_IG04
- ;; size=38 bbWeight=4 PerfScore 53.00
+ ;; size=32 bbWeight=4 PerfScore 45.00
G_M25641_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] ; byrRegs -[esi] @@ -203,9 +198,9 @@ G_M25641_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M25641_IG12: ; bbWeight=0.50, gcVars=00000001 {V27}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx
+ ; byrRegs +[esi]
; GC ptr vars +{V27} push ecx mov ecx, dword ptr [ebp-0x10] @@ -214,17 +209,11 @@ G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {e mov ebx, eax test ebx, ebx jl SHORT G_M25641_IG10
- mov eax, gword ptr [ebp-0x34] - ; gcrRegs +[eax] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edx, dword ptr [esi] - mov dword ptr [ebp-0x3C], edx - mov gword ptr [ebp-0x34], eax - push eax
+ mov eax, dword ptr [esi] + mov dword ptr [ebp-0x3C], eax + push gword ptr [ebp-0x34]
mov ecx, ebx call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__getPrecedingInitializersLength|106_2(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer],int):int]
- ; gcrRegs -[eax]
add eax, dword ptr [ebp-0x3C] mov dword ptr [esi], eax cmp ebx, edi @@ -241,7 +230,7 @@ G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {e call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF mov eax, 1
- ;; size=76 bbWeight=0.50 PerfScore 13.62
+ ;; size=66 bbWeight=0.50 PerfScore 11.62
G_M25641_IG13: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -259,6 +248,6 @@ G_M25641_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 23, PerfScore 220.08, instruction count 124, allocated bytes for code 342 (MethodHash=36369bd6) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
+; Total bytes of code 323, prolog size 23, PerfScore 211.08, instruction count 117, allocated bytes for code 323 (MethodHash=36369bd6) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
; ============================================================

-34 (-5.55%) : 278550.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)

@@ -17,29 +17,29 @@ ; V06 loc2 [V06,T13] ( 5, 9.50) int -> [ebp-0x18] ; V07 loc3 [V07,T07] ( 4, 12.50) int -> edi ; V08 loc4 [V08,T14] ( 4, 9 ) int -> [ebp-0x1C]
-; V09 loc5 [V09,T08] ( 4, 12.50) int -> [ebp-0x20]
+; V09 loc5 [V09,T08] ( 4, 12.50) int -> edi
;* V10 loc6 [V10 ] ( 0, 0 ) ushort -> zero-ref ; V11 tmp0 [V11,T19] ( 3, 6 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V12 tmp1 [V12,T20] ( 3, 6 ) ref -> eax class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V13 tmp2 [V13,T22] ( 3, 3 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
-; V14 tmp3 [V14,T05] ( 7, 20 ) ushort -> [ebp-0x24] "Inline return value spill temp" -; V15 tmp4 [V15,T00] ( 6, 36 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
+; V14 tmp3 [V14,T05] ( 7, 20 ) ushort -> [ebp-0x20] "Inline return value spill temp" +; V15 tmp4 [V15,T00] ( 6, 36 ) ref -> [ebp-0x28] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
; V16 tmp5 [V16,T16] ( 3, 8 ) int -> ecx "Inline return value spill temp" ; V17 tmp6 [V17,T03] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
-; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> -; V19 tmp8 [V19,T06] ( 6, 16 ) ushort -> [ebp-0x28] "Inline return value spill temp" -; V20 tmp9 [V20,T01] ( 6, 36 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
+; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> +; V19 tmp8 [V19,T06] ( 6, 16 ) ushort -> [ebp-0x24] "Inline return value spill temp" +; V20 tmp9 [V20,T01] ( 6, 36 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
; V21 tmp10 [V21,T17] ( 3, 8 ) int -> ecx "Inline return value spill temp" ; V22 tmp11 [V22,T04] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> ecx "arr expr"
-; V24 tmp13 [V24,T11] ( 3, 12 ) int -> edx "index expr"
+; V24 tmp13 [V24,T11] ( 3, 12 ) int -> eax "index expr"
; V25 tmp14 [V25,T10] ( 3, 12 ) ref -> ecx "arr expr" ; V26 tmp15 [V26,T12] ( 3, 12 ) int -> eax "index expr" ; V27 cse0 [V27,T24] ( 3, 3 ) ref -> ecx "CSE - conservative" ; V28 cse1 [V28,T25] ( 3, 3 ) ref -> ecx "CSE - conservative"
-; V29 cse2 [V29,T21] ( 6, 3 ) ref -> [ebp-0x34] multi-def "CSE - conservative"
+; V29 cse2 [V29,T21] ( 6, 3 ) ref -> ecx multi-def "CSE - conservative"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M15457_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +47,7 @@ G_M15457_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40
+ sub esp, 32
mov esi, ecx ; gcrRegs +[esi] mov ebx, edx @@ -127,7 +127,7 @@ G_M15457_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 G_M15457_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, gword ptr [esi+0x04] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V15} mov ecx, dword ptr [eax+0x14] cmp ecx, dword ptr [eax+0x1C] @@ -139,7 +139,7 @@ G_M15457_IG08: ; bbWeight=2, gcVars=00000001 {V15}, gcrefRegs=00000041 {e call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- mov eax, gword ptr [ebp-0x2C]
+ mov eax, gword ptr [ebp-0x28]
; gcrRegs +[eax] jne SHORT G_M15457_IG09 mov eax, 0xFFFF @@ -160,12 +160,12 @@ G_M15457_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000040 {esi} ; gcrRegs -[ecx] ; GC ptr vars -{V15} mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x24], eax
+ mov dword ptr [ebp-0x20], eax
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax je SHORT G_M15457_IG15
- mov ecx, dword ptr [ebp-0x24]
+ mov ecx, dword ptr [ebp-0x20]
mov edx, ecx sub edx, 48 cmp edx, 9 @@ -198,7 +198,7 @@ G_M15457_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ;; size=5 bbWeight=0.50 PerfScore 1.50 G_M15457_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test bl, bl
- jne SHORT G_M15457_IG17
+ jne SHORT G_M15457_IG16
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x10] @@ -209,23 +209,21 @@ G_M15457_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- mov edi, dword ptr [ebp-0x14] - ;; size=26 bbWeight=0.50 PerfScore 4.25
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
G_M15457_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x18] cmp eax, 0xD1FFAB1E jbe SHORT G_M15457_IG18 test bl, bl
- jne G_M15457_IG32 - mov dword ptr [ebp-0x14], edi
+ jne SHORT G_M15457_IG17
jmp G_M15457_IG04
- ;; size=26 bbWeight=0.50 PerfScore 3.25 -G_M15457_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edi, dword ptr [ebp-0x14] - jmp SHORT G_M15457_IG16 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M15457_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=19 bbWeight=0.50 PerfScore 2.75 +G_M15457_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
+ mov edi, dword ptr [ebp-0x14] + jmp G_M15457_IG32 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M15457_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, eax mov edx, bword ptr [ebp+0x0C] ; byrRegs +[edx] @@ -241,14 +239,12 @@ G_M15457_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x1C], edx mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V29} - inc dword ptr [ecx+0x14] - mov ecx, gword ptr [ebp-0x34]
+ mov edi, ecx + ; gcrRegs +[edi] + inc dword ptr [edi+0x14]
cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V29}
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:PeekChar():ushort:this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx edi]
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax @@ -256,7 +252,7 @@ G_M15457_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 test bl, bl jne SHORT G_M15457_IG20 jmp G_M15457_IG04
- ;; size=46 bbWeight=0.50 PerfScore 11.00
+ ;; size=42 bbWeight=0.50 PerfScore 10.12
G_M15457_IG20: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] mov edi, dword ptr [ebp-0x14] @@ -264,50 +260,49 @@ G_M15457_IG20: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M15457_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- xor eax, eax - mov dword ptr [ebp-0x20], eax - ;; size=5 bbWeight=0.50 PerfScore 0.62
+ xor edi, edi + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M15457_IG22: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [esi+0x04] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x30], edx
+ mov eax, gword ptr [esi+0x04] + ; gcrRegs +[eax] + mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V20}
- mov ecx, dword ptr [edx+0x14] - cmp ecx, dword ptr [edx+0x1C]
+ mov ecx, dword ptr [eax+0x14] + cmp ecx, dword ptr [eax+0x1C]
jl SHORT G_M15457_IG24 ;; size=14 bbWeight=4 PerfScore 36.00
-G_M15457_IG23: ; bbWeight=2, gcVars=00000002 {V20}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, edx
+G_M15457_IG23: ; bbWeight=2, gcVars=00000002 {V20}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz + mov ecx, eax
; gcrRegs +[ecx] call [<unknown method>]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[eax ecx]
test eax, eax
- mov edx, gword ptr [ebp-0x30] - ; gcrRegs +[edx]
+ mov eax, gword ptr [ebp-0x2C] + ; gcrRegs +[eax]
jne SHORT G_M15457_IG24 mov eax, 0xFFFF
+ ; gcrRegs -[eax]
jmp SHORT G_M15457_IG25 ;; size=22 bbWeight=2 PerfScore 15.50
-G_M15457_IG24: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [edx+0x08]
+G_M15457_IG24: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax] + mov ecx, gword ptr [eax+0x08]
; gcrRegs +[ecx]
- mov edx, dword ptr [edx+0x14] - ; gcrRegs -[edx] - cmp edx, dword ptr [ecx+0x04] - jae G_M15457_IG34 - movzx ecx, word ptr [ecx+2*edx+0x08] - ; gcrRegs -[ecx] - mov edx, ecx - mov eax, edx - ;; size=24 bbWeight=2 PerfScore 21.00
+ mov eax, dword ptr [eax+0x14] + ; gcrRegs -[eax] + cmp eax, dword ptr [ecx+0x04] + jae SHORT G_M15457_IG34 + movzx eax, word ptr [ecx+2*eax+0x08] + ;; size=16 bbWeight=2 PerfScore 20.00
G_M15457_IG25: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
; GC ptr vars -{V20}
- mov dword ptr [ebp-0x28], eax
+ mov dword ptr [ebp-0x24], eax
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax je SHORT G_M15457_IG30
- mov ecx, dword ptr [ebp-0x28]
+ mov ecx, dword ptr [ebp-0x24]
mov edx, ecx sub edx, 48 cmp edx, 9 @@ -321,7 +316,7 @@ G_M15457_IG26: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M15457_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add ecx, -48 ;; size=3 bbWeight=2 PerfScore 0.50
-G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x1C] shl edx, 4 add edx, ecx @@ -329,21 +324,16 @@ G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] inc dword ptr [ecx+0x14]
- mov ecx, dword ptr [ebp-0x20] - ; gcrRegs -[ecx] - inc ecx - cmp ecx, 4 - mov dword ptr [ebp-0x20], ecx - jl G_M15457_IG22 - ;; size=33 bbWeight=4 PerfScore 45.00
+ inc edi + cmp edi, 4 + jl SHORT G_M15457_IG22 + ;; size=23 bbWeight=4 PerfScore 37.00
...

-5 (-4.55%) : 40115.dasm - System.Runtime.Serialization.ObjectHolderListEnumerator:MoveNext():ubyte:this (FullOpts)

@@ -9,20 +9,20 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 9, 16.50) ref -> ecx this class-hnd single-def <System.Runtime.Serialization.ObjectHolderListEnumerator>
-; V01 loc0 [V01,T07] ( 3, 12 ) int -> edx
+; V01 loc0 [V01,T07] ( 3, 12 ) int -> eax
;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.ObjectHolderList> ;* V05 tmp3 [V05,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp4 [V06,T04] ( 2, 16 ) ref -> edx class-hnd exact "Inlining Arg" <System.Runtime.Serialization.ObjectHolder>
+; V06 tmp4 [V06,T04] ( 2, 16 ) ref -> eax class-hnd exact "Inlining Arg" <System.Runtime.Serialization.ObjectHolder>
;* V07 tmp5 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.ObjectHolderList> ;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.ObjectHolderList>
-; V10 tmp8 [V10,T00] ( 3, 24 ) ref -> edx "arr expr"
+; V10 tmp8 [V10,T00] ( 3, 24 ) ref -> eax "arr expr"
; V11 tmp9 [V11,T01] ( 3, 24 ) int -> edi "index expr"
-; V12 cse0 [V12,T06] ( 4, 16 ) int -> eax "CSE - moderate"
+; V12 cse0 [V12,T06] ( 4, 16 ) int -> edx "CSE - moderate"
; V13 cse1 [V13,T10] ( 3, 1.50) int -> eax "CSE - moderate"
-; V14 cse2 [V14,T03] ( 5, 16 ) int -> edx "CSE - moderate"
+; V14 cse2 [V14,T03] ( 5, 16 ) int -> eax "CSE - moderate"
; V15 cse3 [V15,T05] ( 6, 17 ) ref -> esi multi-def "CSE - moderate" ; ; Lcl frame size = 0 @@ -39,43 +39,43 @@ G_M24724_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 je SHORT G_M24724_IG09 ;; size=6 bbWeight=1 PerfScore 4.00 G_M24724_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ecx+0x0C] - inc eax - mov edx, eax - mov dword ptr [ecx+0x0C], edx
+ mov edx, dword ptr [ecx+0x0C] + inc edx + mov eax, edx + mov dword ptr [ecx+0x0C], eax
mov esi, gword ptr [ecx+0x04] ; gcrRegs +[esi]
- cmp edx, dword ptr [esi+0x08]
+ cmp eax, dword ptr [esi+0x08]
jge SHORT G_M24724_IG07
- mov edx, gword ptr [esi+0x04] - ; gcrRegs +[edx] - mov edi, eax - cmp edi, dword ptr [edx+0x04]
+ mov eax, gword ptr [esi+0x04] + ; gcrRegs +[eax] + mov edi, edx + cmp edi, dword ptr [eax+0x04]
jae SHORT G_M24724_IG11
- mov edx, gword ptr [edx+4*edi+0x08] - mov edx, dword ptr [edx+0x34] - ; gcrRegs -[edx] - test dl, 4
+ mov eax, gword ptr [eax+4*edi+0x08] + mov eax, dword ptr [eax+0x34] + ; gcrRegs -[eax] + test al, 4
jne SHORT G_M24724_IG05
- ;; size=39 bbWeight=4 PerfScore 84.00
+ ;; size=38 bbWeight=4 PerfScore 84.00
G_M24724_IG04: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- test dl, 2
+ test al, 2
je SHORT G_M24724_IG06
- ;; size=5 bbWeight=2 PerfScore 2.50
+ ;; size=4 bbWeight=2 PerfScore 2.50
G_M24724_IG05: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- test edx, 0x4000
+ test eax, 0x4000
je SHORT G_M24724_IG07
- ;; size=8 bbWeight=2 PerfScore 2.50
+ ;; size=7 bbWeight=2 PerfScore 2.50
G_M24724_IG06: ; bbWeight=4, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- test dl, 1
+ test al, 1
je SHORT G_M24724_IG03
- ;; size=5 bbWeight=4 PerfScore 5.00
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M24724_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]
- cmp eax, dword ptr [esi+0x08]
+ xor eax, eax + cmp edx, dword ptr [esi+0x08]
setne al
- movzx eax, al - ;; size=9 bbWeight=4 PerfScore 17.00
+ ;; size=8 bbWeight=4 PerfScore 17.00
G_M24724_IG08: ; bbWeight=4, epilog, nogc, extend pop esi pop edi @@ -105,6 +105,6 @@ G_M24724_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 110, prolog size 5, PerfScore 134.25, instruction count 47, allocated bytes for code 110 (MethodHash=ab819f6b) for method System.Runtime.Serialization.ObjectHolderListEnumerator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 134.25, instruction count 47, allocated bytes for code 105 (MethodHash=ab819f6b) for method System.Runtime.Serialization.ObjectHolderListEnumerator:MoveNext():ubyte:this (FullOpts)
; ============================================================

+10 (+111.11%) : 72096.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Node+<>c[System.__Canon,int]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair2[System.__Canon,int]):int:this (FullOpts)

@@ -11,9 +11,9 @@ ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,int]> ; V01 arg1 [V01,T04] ( 1, 1 ) struct ( 8) [esp+0x04] do-not-enreg[SF] ld-addr-op single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,int]> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V03 rat0 [V03,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V03 rat0 [V03,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V04 rat1 [V04,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat2 [V05,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat2 [V05,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -21,13 +21,17 @@ G_M13134_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M13134_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax
mov eax, dword ptr [esp+0x08]
- ;; size=6 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 9.25
G_M13134_IG03: ; bbWeight=1, epilog, nogc, extend ret 8 ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 9, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 9 (MethodHash=bc51ccb1) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,int]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,int]):int:this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 11.25, instruction count 7, allocated bytes for code 19 (MethodHash=bc51ccb1) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,int]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,int]):int:this (FullOpts)
; ============================================================

+10 (+111.11%) : 77032.dasm - System.Collections.Tests.DictionaryGenericTests2+<>c[System.__Canon,System.__Canon]:<IReadOnlyDictionary_Generic_Values_ContainsAllCorrectValues>b__26_0(System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]):System.__Canon:this (FullOpts)

@@ -11,9 +11,9 @@ ; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Collections.Tests.Dictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T04] ( 1, 1 ) struct ( 8) [esp+0x04] do-not-enreg[SF] ld-addr-op single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-;* V03 rat0 [V03,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V03 rat0 [V03,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V04 rat1 [V04,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V05 rat2 [V05,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V05 rat2 [V05,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -21,14 +21,18 @@ G_M17867_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M17867_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax
mov eax, gword ptr [esp+0x08] ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 9.25
G_M17867_IG03: ; bbWeight=1, epilog, nogc, extend ret 8 ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 9, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 9 (MethodHash=7a7dba34) for method System.Collections.Tests.Dictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<IReadOnlyDictionary_Generic_Values_ContainsAllCorrectValues>b__26_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 11.25, instruction count 7, allocated bytes for code 19 (MethodHash=7a7dba34) for method System.Collections.Tests.Dictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<IReadOnlyDictionary_Generic_Values_ContainsAllCorrectValues>b__26_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
; ============================================================

+10 (+200.00%) : 3394.dasm - System.Threading.Tasks.Task1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:this (FullOpts)

@@ -14,9 +14,9 @@ ;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "field V01.m_task (fldOffset=0x0)" P-INDEP
-;* V06 rat0 [V06,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V06 rat0 [V06,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V07 rat1 [V07,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V08 rat2 [V08,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V08 rat2 [V08,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,14 +24,18 @@ G_M19920_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M19920_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x0C] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M19920_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=89c1b22f) for method System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=89c1b22f) for method System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-19 (-5.56%) : 29991.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:g_findInitializer|1060(System.Collections.Immutable.ImmutableArray1[System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T08] ( 4, 4.50) int -> [ebp-0x10] single-def ; V02 arg2 [V02,T09] ( 3, 4 ) ref -> [ebp-0x2C] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree> ; V03 arg3 [V03,T16] ( 2, 1 ) byref -> [ebp+0x0C] single-def
-; V04 arg4 [V04,T05] ( 5, 10 ) byref -> [ebp+0x08] single-def
+; V04 arg4 [V04,T05] ( 5, 10 ) byref -> esi single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]]> ;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]> ; V07 loc2 [V07 ] ( 3, 6 ) struct ( 8) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Text.TextSpan> @@ -35,7 +35,7 @@ ; V24 tmp15 [V24,T14] ( 2, 2 ) ref -> eax single-def "field V00.array (fldOffset=0x0)" P-INDEP ; V25 tmp16 [V25,T12] ( 2, 5 ) ref -> [ebp-0x30] spill-single-def "field V05._array (fldOffset=0x0)" P-INDEP ; V26 tmp17 [V26,T01] ( 4, 13 ) int -> ebx "field V05._index (fldOffset=0x4)" P-INDEP
-; V27 tmp18 [V27,T00] ( 9, 19.50) ref -> [ebp-0x34] "field V06.array (fldOffset=0x0)" P-INDEP
+; V27 tmp18 [V27,T00] ( 9, 19.50) ref -> [ebp-0x34] spill-single-def "field V06.array (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28 ] ( 2, 4 ) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07.<Start>k__BackingField (fldOffset=0x0)" P-DEP ; V29 tmp20 [V29 ] ( 2, 4 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V07.<Length>k__BackingField (fldOffset=0x4)" P-DEP ;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref "field V10.FieldOpt (fldOffset=0x0)" P-INDEP @@ -79,30 +79,28 @@ G_M25641_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=35 bbWeight=1 PerfScore 12.08 G_M25641_IG02: ; bbWeight=1, gcVars=00000200 {V02}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref xor ecx, ecx
- mov bword ptr [ebp+0x08], esi
mov dword ptr [esi], ecx mov edx, dword ptr [eax+0x04] mov dword ptr [ebp-0x28], edx mov gword ptr [ebp-0x30], eax ; GC ptr vars +{V25}
- ;; size=16 bbWeight=1 PerfScore 6.25 -G_M25641_IG03: ; bbWeight=1, gcVars=00001200 {V02 V25}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[esi]
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M25641_IG03: ; bbWeight=1, gcVars=00001200 {V02 V25}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref
xor ebx, ebx test edx, edx jle G_M25641_IG10 ;; size=10 bbWeight=1 PerfScore 1.50
-G_M25641_IG04: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M25641_IG04: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, gword ptr [eax+4*ecx+0x08] ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x34], ecx + ; GC ptr vars +{V27}
mov edi, dword ptr [ecx+0x04] test edi, edi je SHORT G_M25641_IG09
- ;; size=11 bbWeight=4 PerfScore 21.00 -G_M25641_IG05: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 25.00 +G_M25641_IG05: ; bbWeight=2, gcVars=00001201 {V02 V25 V27}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax]
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V27}
mov eax, gword ptr [ecx+0x0C] ; gcrRegs +[eax] mov ecx, eax @@ -127,14 +125,14 @@ G_M25641_IG05: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov ecx, gword ptr [ebp-0x20] ; gcrRegs +[ecx] jmp SHORT G_M25641_IG08
- ;; size=56 bbWeight=2 PerfScore 53.00 -G_M25641_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=53 bbWeight=2 PerfScore 51.00 +G_M25641_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ecx] mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] jmp SHORT G_M25641_IG09 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[ecx] mov eax, gword ptr [ebp-0x34] ; gcrRegs +[eax] @@ -145,7 +143,7 @@ G_M25641_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[ecx] ; byrRegs -[ecx] ;; size=11 bbWeight=2 PerfScore 13.00
-G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax] lea edx, [ebp-0x18] mov dword ptr [ebp-0x38], edx @@ -153,24 +151,22 @@ G_M25641_IG08: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov edx, dword ptr [edx+0x2C] mov dword ptr [ebp-0x3C], edx mov edx, dword ptr [ebp-0x38]
- mov esi, dword ptr [ebp-0x3C] - call [esi+0x14]<unknown method>
+ mov eax, dword ptr [ebp-0x3C] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] mov eax, dword ptr [ebp-0x18] add eax, dword ptr [ebp-0x14]
- mov esi, dword ptr [ebp-0x10] - cmp eax, esi - mov dword ptr [ebp-0x10], esi
+ mov edx, dword ptr [ebp-0x10] + cmp eax, edx + mov dword ptr [ebp-0x10], edx
mov ecx, gword ptr [ebp-0x34] ; gcrRegs +[ecx] jg SHORT G_M25641_IG12 ;; size=42 bbWeight=2 PerfScore 37.50
-G_M25641_IG09: ; bbWeight=4, gcVars=00001200 {V02 V25}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V27} - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi]
+G_M25641_IG09: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref
mov edi, dword ptr [esi] push ecx
+ ; GC ptr vars -{V27}
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__getGroupLength|106_1(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]):int] ; gcrRegs -[ecx] add eax, edi @@ -179,11 +175,10 @@ G_M25641_IG09: ; bbWeight=4, gcVars=00001200 {V02 V25}, gcrefRegs=0000000 mov ebx, ecx mov edi, dword ptr [ebp-0x28] cmp edi, ebx
- mov bword ptr [ebp+0x08], esi
mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax] jg G_M25641_IG04
- ;; size=38 bbWeight=4 PerfScore 53.00
+ ;; size=32 bbWeight=4 PerfScore 45.00
G_M25641_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] ; byrRegs -[esi] @@ -203,9 +198,9 @@ G_M25641_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M25641_IG12: ; bbWeight=0.50, gcVars=00000001 {V27}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx
+ ; byrRegs +[esi]
; GC ptr vars +{V27} push ecx mov ecx, dword ptr [ebp-0x10] @@ -214,17 +209,11 @@ G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {e mov ebx, eax test ebx, ebx jl SHORT G_M25641_IG10
- mov eax, gword ptr [ebp-0x34] - ; gcrRegs +[eax] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edx, dword ptr [esi] - mov dword ptr [ebp-0x3C], edx - mov gword ptr [ebp-0x34], eax - push eax
+ mov eax, dword ptr [esi] + mov dword ptr [ebp-0x3C], eax + push gword ptr [ebp-0x34]
mov ecx, ebx call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__getPrecedingInitializersLength|106_2(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer],int):int]
- ; gcrRegs -[eax]
add eax, dword ptr [ebp-0x3C] mov dword ptr [esi], eax cmp ebx, edi @@ -241,7 +230,7 @@ G_M25641_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {e call CORINFO_HELP_ASSIGN_BYREF call CORINFO_HELP_ASSIGN_BYREF mov eax, 1
- ;; size=76 bbWeight=0.50 PerfScore 13.62
+ ;; size=66 bbWeight=0.50 PerfScore 11.62
G_M25641_IG13: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -259,6 +248,6 @@ G_M25641_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 23, PerfScore 220.08, instruction count 124, allocated bytes for code 342 (MethodHash=36369bd6) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
+; Total bytes of code 323, prolog size 23, PerfScore 211.08, instruction count 117, allocated bytes for code 323 (MethodHash=36369bd6) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
; ============================================================

-34 (-5.55%) : 19060.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)

@@ -17,29 +17,29 @@ ; V06 loc2 [V06,T13] ( 5, 9.50) int -> [ebp-0x18] ; V07 loc3 [V07,T07] ( 4, 12.50) int -> edi ; V08 loc4 [V08,T14] ( 4, 9 ) int -> [ebp-0x1C]
-; V09 loc5 [V09,T08] ( 4, 12.50) int -> [ebp-0x20]
+; V09 loc5 [V09,T08] ( 4, 12.50) int -> edi
;* V10 loc6 [V10 ] ( 0, 0 ) ushort -> zero-ref ; V11 tmp0 [V11,T19] ( 3, 6 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V12 tmp1 [V12,T20] ( 3, 6 ) ref -> eax class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V13 tmp2 [V13,T22] ( 3, 3 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
-; V14 tmp3 [V14,T05] ( 7, 20 ) ushort -> [ebp-0x24] "Inline return value spill temp" -; V15 tmp4 [V15,T00] ( 6, 36 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
+; V14 tmp3 [V14,T05] ( 7, 20 ) ushort -> [ebp-0x20] "Inline return value spill temp" +; V15 tmp4 [V15,T00] ( 6, 36 ) ref -> [ebp-0x28] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
; V16 tmp5 [V16,T16] ( 3, 8 ) int -> ecx "Inline return value spill temp" ; V17 tmp6 [V17,T03] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
-; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> -; V19 tmp8 [V19,T06] ( 6, 16 ) ushort -> [ebp-0x28] "Inline return value spill temp" -; V20 tmp9 [V20,T01] ( 6, 36 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
+; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> +; V19 tmp8 [V19,T06] ( 6, 16 ) ushort -> [ebp-0x24] "Inline return value spill temp" +; V20 tmp9 [V20,T01] ( 6, 36 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
; V21 tmp10 [V21,T17] ( 3, 8 ) int -> ecx "Inline return value spill temp" ; V22 tmp11 [V22,T04] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow> ; V23 tmp12 [V23,T09] ( 3, 12 ) ref -> ecx "arr expr"
-; V24 tmp13 [V24,T11] ( 3, 12 ) int -> edx "index expr"
+; V24 tmp13 [V24,T11] ( 3, 12 ) int -> eax "index expr"
; V25 tmp14 [V25,T10] ( 3, 12 ) ref -> ecx "arr expr" ; V26 tmp15 [V26,T12] ( 3, 12 ) int -> eax "index expr" ; V27 cse0 [V27,T24] ( 3, 3 ) ref -> ecx "CSE - conservative" ; V28 cse1 [V28,T25] ( 3, 3 ) ref -> ecx "CSE - conservative"
-; V29 cse2 [V29,T21] ( 6, 3 ) ref -> [ebp-0x34] multi-def "CSE - conservative"
+; V29 cse2 [V29,T21] ( 6, 3 ) ref -> ecx multi-def "CSE - conservative"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M15457_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +47,7 @@ G_M15457_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40
+ sub esp, 32
mov esi, ecx ; gcrRegs +[esi] mov ebx, edx @@ -127,7 +127,7 @@ G_M15457_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 G_M15457_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, gword ptr [esi+0x04] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V15} mov ecx, dword ptr [eax+0x14] cmp ecx, dword ptr [eax+0x1C] @@ -139,7 +139,7 @@ G_M15457_IG08: ; bbWeight=2, gcVars=00000001 {V15}, gcrefRegs=00000041 {e call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- mov eax, gword ptr [ebp-0x2C]
+ mov eax, gword ptr [ebp-0x28]
; gcrRegs +[eax] jne SHORT G_M15457_IG09 mov eax, 0xFFFF @@ -160,12 +160,12 @@ G_M15457_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000040 {esi} ; gcrRegs -[ecx] ; GC ptr vars -{V15} mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x24], eax
+ mov dword ptr [ebp-0x20], eax
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax je SHORT G_M15457_IG15
- mov ecx, dword ptr [ebp-0x24]
+ mov ecx, dword ptr [ebp-0x20]
mov edx, ecx sub edx, 48 cmp edx, 9 @@ -198,7 +198,7 @@ G_M15457_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ;; size=5 bbWeight=0.50 PerfScore 1.50 G_M15457_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test bl, bl
- jne SHORT G_M15457_IG17
+ jne SHORT G_M15457_IG16
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x10] @@ -209,23 +209,21 @@ G_M15457_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- mov edi, dword ptr [ebp-0x14] - ;; size=26 bbWeight=0.50 PerfScore 4.25
+ ;; size=23 bbWeight=0.50 PerfScore 3.75
G_M15457_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, dword ptr [ebp-0x18] cmp eax, 0xD1FFAB1E jbe SHORT G_M15457_IG18 test bl, bl
- jne G_M15457_IG32 - mov dword ptr [ebp-0x14], edi
+ jne SHORT G_M15457_IG17
jmp G_M15457_IG04
- ;; size=26 bbWeight=0.50 PerfScore 3.25 -G_M15457_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edi, dword ptr [ebp-0x14] - jmp SHORT G_M15457_IG16 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M15457_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=19 bbWeight=0.50 PerfScore 2.75 +G_M15457_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
+ mov edi, dword ptr [ebp-0x14] + jmp G_M15457_IG32 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M15457_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, eax mov edx, bword ptr [ebp+0x0C] ; byrRegs +[edx] @@ -241,14 +239,12 @@ G_M15457_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x1C], edx mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V29} - inc dword ptr [ecx+0x14] - mov ecx, gword ptr [ebp-0x34]
+ mov edi, ecx + ; gcrRegs +[edi] + inc dword ptr [edi+0x14]
cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V29}
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:PeekChar():ushort:this]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx edi]
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax @@ -256,7 +252,7 @@ G_M15457_IG19: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 test bl, bl jne SHORT G_M15457_IG20 jmp G_M15457_IG04
- ;; size=46 bbWeight=0.50 PerfScore 11.00
+ ;; size=42 bbWeight=0.50 PerfScore 10.12
G_M15457_IG20: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] mov edi, dword ptr [ebp-0x14] @@ -264,50 +260,49 @@ G_M15457_IG20: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M15457_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- xor eax, eax - mov dword ptr [ebp-0x20], eax - ;; size=5 bbWeight=0.50 PerfScore 0.62
+ xor edi, edi + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M15457_IG22: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [esi+0x04] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x30], edx
+ mov eax, gword ptr [esi+0x04] + ; gcrRegs +[eax] + mov gword ptr [ebp-0x2C], eax
; GC ptr vars +{V20}
- mov ecx, dword ptr [edx+0x14] - cmp ecx, dword ptr [edx+0x1C]
+ mov ecx, dword ptr [eax+0x14] + cmp ecx, dword ptr [eax+0x1C]
jl SHORT G_M15457_IG24 ;; size=14 bbWeight=4 PerfScore 36.00
-G_M15457_IG23: ; bbWeight=2, gcVars=00000002 {V20}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov ecx, edx
+G_M15457_IG23: ; bbWeight=2, gcVars=00000002 {V20}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz + mov ecx, eax
; gcrRegs +[ecx] call [<unknown method>]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[eax ecx]
test eax, eax
- mov edx, gword ptr [ebp-0x30] - ; gcrRegs +[edx]
+ mov eax, gword ptr [ebp-0x2C] + ; gcrRegs +[eax]
jne SHORT G_M15457_IG24 mov eax, 0xFFFF
+ ; gcrRegs -[eax]
jmp SHORT G_M15457_IG25 ;; size=22 bbWeight=2 PerfScore 15.50
-G_M15457_IG24: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [edx+0x08]
+G_M15457_IG24: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax] + mov ecx, gword ptr [eax+0x08]
; gcrRegs +[ecx]
- mov edx, dword ptr [edx+0x14] - ; gcrRegs -[edx] - cmp edx, dword ptr [ecx+0x04] - jae G_M15457_IG34 - movzx ecx, word ptr [ecx+2*edx+0x08] - ; gcrRegs -[ecx] - mov edx, ecx - mov eax, edx - ;; size=24 bbWeight=2 PerfScore 21.00
+ mov eax, dword ptr [eax+0x14] + ; gcrRegs -[eax] + cmp eax, dword ptr [ecx+0x04] + jae SHORT G_M15457_IG34 + movzx eax, word ptr [ecx+2*eax+0x08] + ;; size=16 bbWeight=2 PerfScore 20.00
G_M15457_IG25: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
; GC ptr vars -{V20}
- mov dword ptr [ebp-0x28], eax
+ mov dword ptr [ebp-0x24], eax
mov ecx, eax call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsHexDigit(ushort):ubyte] test eax, eax je SHORT G_M15457_IG30
- mov ecx, dword ptr [ebp-0x28]
+ mov ecx, dword ptr [ebp-0x24]
mov edx, ecx sub edx, 48 cmp edx, 9 @@ -321,7 +316,7 @@ G_M15457_IG26: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M15457_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add ecx, -48 ;; size=3 bbWeight=2 PerfScore 0.50
-G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x1C] shl edx, 4 add edx, ecx @@ -329,21 +324,16 @@ G_M15457_IG28: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] inc dword ptr [ecx+0x14]
- mov ecx, dword ptr [ebp-0x20] - ; gcrRegs -[ecx] - inc ecx - cmp ecx, 4 - mov dword ptr [ebp-0x20], ecx - jl G_M15457_IG22 - ;; size=33 bbWeight=4 PerfScore 45.00
+ inc edi + cmp edi, 4 + jl SHORT G_M15457_IG22 + ;; size=23 bbWeight=4 PerfScore 37.00
...

-8 (-4.04%) : 15001.dasm - SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelDataProvider:CreateComplexKernels(System.Numerics.Vector4[],int,int,float):SixLabors.ImageSharp.Complex64[]

@@ -57,10 +57,10 @@ G_M44253_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor edx, edx mov ecx, dword ptr [ebp-0x14] test ecx, ecx
- jle G_M44253_IG08
+ jle SHORT G_M44253_IG07
cmp dword ptr [eax+0x04], ecx
- jl SHORT G_M44253_IG06 - ;; size=42 bbWeight=1 PerfScore 12.25
+ jl SHORT G_M44253_IG05 + ;; size=38 bbWeight=1 PerfScore 12.25
G_M44253_IG03: ; bbWeight=3.96, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz ; gcrRegs -[eax] mov dword ptr [ebp-0x10], edx @@ -85,23 +85,19 @@ G_M44253_IG03: ; bbWeight=3.96, gcVars=00000020 {V04}, gcrefRegs=00000000 ; gcrRegs -[eax ebx] ; byrRegs -[edx] inc ecx
- mov edx, dword ptr [ebp-0x14] - cmp edx, ecx - jg SHORT G_M44253_IG05 - ;; size=52 bbWeight=3.96 PerfScore 70.29
+ cmp dword ptr [ebp-0x14], ecx + mov edx, ecx + jg SHORT G_M44253_IG03 + ;; size=52 bbWeight=3.96 PerfScore 74.25
G_M44253_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; byrRegs -[edi] mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
- jmp SHORT G_M44253_IG08
+ jmp SHORT G_M44253_IG07
;; size=5 bbWeight=1 PerfScore 3.00
-G_M44253_IG05: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M44253_IG05: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs -[eax] ; byrRegs +[edi]
- mov edx, ecx - jmp SHORT G_M44253_IG03 - ;; size=4 bbWeight=1.98 PerfScore 4.46 -G_M44253_IG06: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov dword ptr [ebp-0x10], edx mov ebx, edx shl ebx, 4 @@ -119,7 +115,7 @@ G_M44253_IG06: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000080 mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx] cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M44253_IG10
+ jae SHORT G_M44253_IG09
lea edx, bword ptr [ecx+4*ebx+0x08] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -129,14 +125,14 @@ G_M44253_IG06: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000080 mov eax, dword ptr [ebp-0x14] cmp eax, ebx mov edx, ebx
- jg SHORT G_M44253_IG09
+ jg SHORT G_M44253_IG08
;; size=59 bbWeight=0.04 PerfScore 0.88
-G_M44253_IG07: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M44253_IG06: ; bbWeight=0.02, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; byrRegs -[edi] mov eax, ecx ; gcrRegs +[eax] ;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M44253_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M44253_IG07: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ecx] lea esp, [ebp-0x0C] pop ebx @@ -145,12 +141,12 @@ G_M44253_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M44253_IG09: ; bbWeight=0.02, gcVars=00000020 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+G_M44253_IG08: ; bbWeight=0.02, gcVars=00000020 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
; gcrRegs -[eax] +[ecx] ; byrRegs +[edi]
- jmp SHORT G_M44253_IG06
+ jmp SHORT G_M44253_IG05
;; size=2 bbWeight=0.02 PerfScore 0.04
-G_M44253_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M44253_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] ; byrRegs -[edi] ; GC ptr vars -{V04} @@ -158,6 +154,6 @@ G_M44253_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 198, prolog size 12, PerfScore 101.42, instruction count 75, allocated bytes for code 198 (MethodHash=99575322) for method SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelDataProvider:CreateComplexKernels(System.Numerics.Vector4[],int,int,float):SixLabors.ImageSharp.Complex64[][] (FullOpts)
+; Total bytes of code 190, prolog size 12, PerfScore 100.93, instruction count 73, allocated bytes for code 190 (MethodHash=99575322) for method SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelDataProvider:CreateComplexKernels(System.Numerics.Vector4[],int,int,float):SixLabors.ImageSharp.Complex64[][] (FullOpts)
; ============================================================

+11 (+122.22%) : 4620.dasm - Microsoft.FSharp.Collections.ListModule+groupByRefType@560-4[System.Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Canon]):System.__Canon:this (FullOpts)

@@ -12,9 +12,9 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V03 tmp1 [V03,T04] ( 1, 1 ) ref -> [esp+0x04] single-def "field V01.value (fldOffset=0x0)" P-INDEP
-;* V04 rat0 [V04,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V04 rat0 [V04,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V05 rat1 [V05,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V06 rat2 [V06,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 rat2 [V06,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -22,14 +22,18 @@ G_M13481_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M13481_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax+0x04] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, gword ptr [esp+0x04] ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 4.00
+ ;; size=17 bbWeight=1 PerfScore 9.25
G_M13481_IG03: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 9, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 9 (MethodHash=2bb3cb56) for method Microsoft.FSharp.Collections.ListModule+groupByRefType@560-4[System.__Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]):System.__Canon:this (FullOpts)
+; Total bytes of code 20, prolog size 0, PerfScore 11.25, instruction count 7, allocated bytes for code 20 (MethodHash=2bb3cb56) for method Microsoft.FSharp.Collections.ListModule+groupByRefType@560-4[System.__Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]):System.__Canon:this (FullOpts)
; ============================================================

+10 (+200.00%) : 16571.dasm - System.Threading.Tasks.Task1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter1[System.__Canon]:this (FullOpts)

@@ -14,9 +14,9 @@ ;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "field V01.m_task (fldOffset=0x0)" P-INDEP
-;* V06 rat0 [V06,T02] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V06 rat0 [V06,T02] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V07 rat1 [V07,T03] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V08 rat2 [V08,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V08 rat2 [V08,T01] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,14 +24,18 @@ G_M9200_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=0 bbWeight=1 PerfScore 0.00 G_M9200_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax] + mov eax, dword ptr [eax+0x10] + test eax, eax
mov eax, ecx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=14 bbWeight=1 PerfScore 8.50
G_M9200_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 15 (MethodHash=f51cdc0f) for method System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
; ============================================================

+11 (+220.00%) : 3356.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.Canon]:Invoke(System.Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)

@@ -13,9 +13,9 @@ ;* V02 tmp0 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]> ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.value (fldOffset=0x0)" P-INDEP
-;* V05 rat0 [V05,T03] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
+; V05 rat0 [V05,T03] ( 2, 4 ) int -> eax "Spilling to split statement for tree"
;* V06 rat1 [V06,T04] ( 0, 0 ) int -> zero-ref "runtime lookup"
-;* V07 rat2 [V07,T00] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 rat2 [V07,T00] ( 2, 4 ) int -> eax "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -23,14 +23,18 @@ G_M33213_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=0 bbWeight=1 PerfScore 0.00 G_M33213_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx edx]
- cmp dword ptr [ecx], ecx
+ mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x24] + mov eax, dword ptr [eax+0x04] + mov eax, dword ptr [eax+0x08] + test eax, eax
mov eax, edx ; gcrRegs +[eax]
- ;; size=4 bbWeight=1 PerfScore 3.25
+ ;; size=15 bbWeight=1 PerfScore 8.50
G_M33213_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 5, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 5 (MethodHash=44387e42) for method Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 9.50, instruction count 7, allocated bytes for code 16 (MethodHash=44387e42) for method Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 468 123 277 68 -838 +4,028
benchmarks.run_pgo.windows.x86.checked.mch 919 275 430 214 -1,776 +4,775
benchmarks.run_tiered.windows.x86.checked.mch 419 123 222 74 -831 +3,211
coreclr_tests.run.windows.x86.checked.mch 4,228 1,690 1,261 1,277 -24,648 +16,071
libraries.crossgen2.windows.x86.checked.mch 1,384 680 257 447 -3,317 +2,281
libraries.pmi.windows.x86.checked.mch 2,517 792 1,290 435 -4,473 +16,105
libraries_tests.run.windows.x86.Release.mch 8,968 2,649 4,422 1,897 -22,720 +63,545
librariestestsnotieredcompilation.run.windows.x86.Release.mch 2,808 764 1,383 661 -5,858 +18,048
realworld.run.windows.x86.checked.mch 574 187 277 110 -1,768 +3,809
22,285 7,283 9,819 5,183 -66,229 +131,873

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,257 4 24,253 223 (0.91%) 229 (0.94%)
benchmarks.run_pgo.windows.x86.checked.mch 119,572 41,883 77,689 237 (0.20%) 261 (0.22%)
benchmarks.run_tiered.windows.x86.checked.mch 47,808 28,723 19,085 166 (0.35%) 172 (0.36%)
coreclr_tests.run.windows.x86.checked.mch 574,136 320,026 254,110 531 (0.09%) 599 (0.10%)
libraries.crossgen2.windows.x86.checked.mch 242,302 15 242,287 0 (0.00%) 42 (0.02%)
libraries.pmi.windows.x86.checked.mch 302,897 6 302,891 2,071 (0.68%) 2,152 (0.71%)
libraries_tests.run.windows.x86.Release.mch 630,690 427,921 202,769 1,208 (0.19%) 1,595 (0.25%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 314,343 21,871 292,472 2,024 (0.64%) 2,085 (0.66%)
realworld.run.windows.x86.checked.mch 35,570 3 35,567 390 (1.08%) 417 (1.16%)
2,291,575 840,452 1,451,123 6,850 (0.30%) 7,552 (0.33%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6959786 (overridden on cmd)
Total bytes of diff: 6962976 (overridden on cmd)
Total bytes of delta: 3190 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          77 : 10815.dasm (10.07 % of base)
          75 : 20070.dasm (5.36 % of base)
          70 : 16327.dasm (2.06 % of base)
          67 : 6704.dasm (4.37 % of base)
          64 : 18028.dasm (5.85 % of base)
          59 : 7449.dasm (7.78 % of base)
          57 : 18189.dasm (5.57 % of base)
          55 : 18795.dasm (13.25 % of base)
          52 : 17942.dasm (0.81 % of base)
          52 : 9391.dasm (10.48 % of base)
          45 : 13241.dasm (11.31 % of base)
          43 : 4913.dasm (5.22 % of base)
          42 : 13334.dasm (6.36 % of base)
          38 : 10816.dasm (1.39 % of base)
          36 : 14943.dasm (28.35 % of base)
          36 : 14956.dasm (9.33 % of base)
          34 : 8833.dasm (1.85 % of base)
          31 : 152.dasm (2.80 % of base)
          31 : 2697.dasm (7.69 % of base)
          30 : 544.dasm (5.15 % of base)

Top file improvements (bytes):
        -167 : 18493.dasm (-2.97 % of base)
         -48 : 9270.dasm (-0.51 % of base)
         -29 : 18767.dasm (-3.77 % of base)
         -22 : 1475.dasm (-1.67 % of base)
         -21 : 19229.dasm (-2.47 % of base)
         -21 : 43.dasm (-3.08 % of base)
         -20 : 16966.dasm (-2.24 % of base)
         -20 : 10601.dasm (-1.91 % of base)
         -19 : 4445.dasm (-4.19 % of base)
         -15 : 22477.dasm (-0.79 % of base)
         -14 : 13843.dasm (-1.60 % of base)
         -13 : 15090.dasm (-0.93 % of base)
         -12 : 4074.dasm (-1.36 % of base)
         -12 : 20397.dasm (-1.06 % of base)
         -12 : 23807.dasm (-1.04 % of base)
         -11 : 7389.dasm (-1.16 % of base)
         -10 : 15419.dasm (-3.05 % of base)
         -10 : 2000.dasm (-0.11 % of base)
          -9 : 21418.dasm (-2.74 % of base)
          -8 : 2935.dasm (-1.83 % of base)

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

Top method regressions (bytes):
          77 (10.07 % of base) : 10815.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
          75 (5.36 % of base) : 20070.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          70 (2.06 % of base) : 16327.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
          67 (4.37 % of base) : 6704.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (FullOpts)
          64 (5.85 % of base) : 18028.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          59 (7.78 % of base) : 7449.dasm - System.Text.Json.Serialization.Converters.DictionaryDefaultConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
          57 (5.57 % of base) : 18189.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
          55 (13.25 % of base) : 18795.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
          52 (0.81 % of base) : 17942.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)
          52 (10.48 % of base) : 9391.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
          45 (11.31 % of base) : 13241.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (FullOpts)
          43 (5.22 % of base) : 4913.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (FullOpts)
          42 (6.36 % of base) : 13334.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (FullOpts)
          38 (1.39 % of base) : 10816.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
          36 (9.33 % of base) : 14956.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.__Canon]:WithComparers(System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.__Canon]:this (FullOpts)
          36 (28.35 % of base) : 14943.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:this (FullOpts)
          34 (1.85 % of base) : 8833.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (FullOpts)
          31 (7.69 % of base) : 2697.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:TryGetValue(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,byref):ubyte:this (FullOpts)
          31 (2.80 % of base) : 152.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
          30 (5.15 % of base) : 544.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)

Top method improvements (bytes):
        -167 (-2.97 % of base) : 18493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -48 (-0.51 % of base) : 9270.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -29 (-3.77 % of base) : 18767.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
         -22 (-1.67 % of base) : 1475.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -21 (-2.47 % of base) : 19229.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -21 (-3.08 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         -20 (-2.24 % of base) : 16966.dasm - LUDecomp:Run():double:this (FullOpts)
         -20 (-1.91 % of base) : 10601.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
         -19 (-4.19 % of base) : 4445.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -15 (-0.79 % of base) : 22477.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -14 (-1.60 % of base) : 13843.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (FullOpts)
         -13 (-0.93 % of base) : 15090.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         -12 (-1.36 % of base) : 4074.dasm - BenchmarksGame.KNucleotide_9:writeFrequencies(System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper],int,int[],byref):System.String (FullOpts)
         -12 (-1.06 % of base) : 20397.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (FullOpts)
         -12 (-1.04 % of base) : 23807.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -11 (-1.16 % of base) : 7389.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
         -10 (-0.11 % of base) : 2000.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -10 (-3.05 % of base) : 15419.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<TryFoldAlternation>g__TrySplitConcatSubsumption|52_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],byref):ubyte (FullOpts)
          -9 (-2.74 % of base) : 21418.dasm - System.Collections.Concurrent.ConcurrentBag`1[int]:ToArray():int[]:this (FullOpts)
          -8 (-1.83 % of base) : 2935.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo (FullOpts)

Top method regressions (percentages):
          24 (104.35 % of base) : 4434.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
          24 (104.35 % of base) : 5450.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          10 (66.67 % of base) : 17958.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          26 (57.78 % of base) : 8633.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]:Clear():this (FullOpts)
          10 (50.00 % of base) : 21896.dasm - System.Collections.Immutable.ImmutableQueue`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableQueue`1+Enumerator[System.__Canon]:this (FullOpts)
          12 (44.44 % of base) : 18039.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
          10 (40.00 % of base) : 18300.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,uint]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          22 (38.60 % of base) : 16157.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (FullOpts)
          10 (38.46 % of base) : 3619.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor():this (FullOpts)
          12 (37.50 % of base) : 23212.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          10 (35.71 % of base) : 18818.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
          22 (34.92 % of base) : 17432.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
          10 (34.48 % of base) : 23612.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (FullOpts)
          10 (33.33 % of base) : 6890.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:GetEnumerator():System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:this (FullOpts)
          12 (33.33 % of base) : 16915.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (FullOpts)
          10 (33.33 % of base) : 8511.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:get_Value():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this (FullOpts)
          11 (29.73 % of base) : 22837.dasm - System.Collections.Frozen.OrdinalStringFrozenDictionary`1[System.__Canon]:GetEnumeratorCore():System.Collections.Frozen.FrozenDictionary`2+Enumerator[System.__Canon,System.__Canon]:this (FullOpts)
          10 (29.41 % of base) : 13370.dasm - System.Collections.Generic.Queue`1[System.__Canon]:GetEnumerator():System.Collections.Generic.Queue`1+Enumerator[System.__Canon]:this (FullOpts)
          10 (29.41 % of base) : 3026.dasm - System.Collections.Generic.Stack`1[System.__Canon]:GetEnumerator():System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:this (FullOpts)
          10 (28.57 % of base) : 22190.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArray():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
         -19 (-4.19 % of base) : 4445.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -29 (-3.77 % of base) : 18767.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
         -21 (-3.08 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         -10 (-3.05 % of base) : 15419.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<TryFoldAlternation>g__TrySplitConcatSubsumption|52_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],byref):ubyte (FullOpts)
          -6 (-2.99 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
        -167 (-2.97 % of base) : 18493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          -9 (-2.74 % of base) : 21418.dasm - System.Collections.Concurrent.ConcurrentBag`1[int]:ToArray():int[]:this (FullOpts)
         -21 (-2.47 % of base) : 19229.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-2.42 % of base) : 4454.dasm - System.Collections.Frozen.KeyAnalyzer:CreateAnalysisResults(System.ReadOnlySpan`1[System.String],ubyte,int,int,int,int,ubyte,System.Collections.Frozen.KeyAnalyzer+GetSpan):System.Collections.Frozen.KeyAnalyzer+AnalysisResults (FullOpts)
          -6 (-2.28 % of base) : 602.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (FullOpts)
         -20 (-2.24 % of base) : 16966.dasm - LUDecomp:Run():double:this (FullOpts)
         -20 (-1.91 % of base) : 10601.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
          -8 (-1.83 % of base) : 2935.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo (FullOpts)
          -5 (-1.80 % of base) : 2808.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (FullOpts)
          -5 (-1.79 % of base) : 23995.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (FullOpts)
          -8 (-1.78 % of base) : 4507.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.Collections.NotKnownComparable,System.Collections.NotKnownComparable]:.ctor(System.Collections.Generic.Dictionary`2[System.Collections.NotKnownComparable,System.Collections.NotKnownComparable],ubyte):this (FullOpts)
          -5 (-1.73 % of base) : 17475.dasm - Benchstone.BenchF.LLoops:AllocArray[double](int,int,int):double[][][] (FullOpts)
         -22 (-1.67 % of base) : 1475.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -2 (-1.67 % of base) : 5357.dasm - System.Diagnostics.Tracing.EventSource+EventMetadata:<get_ParameterTypes>g__GetParameterTypes|22_0(System.Reflection.ParameterInfo[]):System.Type[] (FullOpts)
          -2 (-1.67 % of base) : 8659.dasm - System.Diagnostics.Tracing.TraceLoggingEventTypes:MakeParamNameArray(System.Reflection.ParameterInfo[]):System.String[] (FullOpts)


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45633676 (overridden on cmd)
Total bytes of diff: 45636675 (overridden on cmd)
Total bytes of delta: 2999 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          77 : 40234.dasm (10.07 % of base)
          75 : 78310.dasm (5.36 % of base)
          70 : 61104.dasm (2.06 % of base)
          67 : 23177.dasm (4.37 % of base)
          64 : 72936.dasm (5.85 % of base)
          59 : 20262.dasm (7.78 % of base)
          57 : 73320.dasm (5.57 % of base)
          55 : 74776.dasm (13.25 % of base)
          53 : 17220.dasm (22.08 % of base)
          52 : 30175.dasm (10.48 % of base)
          45 : 40616.dasm (11.31 % of base)
          43 : 3233.dasm (4.77 % of base)
          42 : 43567.dasm (6.36 % of base)
          38 : 40236.dasm (1.36 % of base)
          37 : 79110.dasm (1.35 % of base)
          34 : 30101.dasm (1.80 % of base)
          34 : 69217.dasm (7.71 % of base)
          31 : 323.dasm (2.80 % of base)
          30 : 1144.dasm (5.15 % of base)
          30 : 44744.dasm (5.16 % of base)

Top file improvements (bytes):
         -73 : 94741.dasm (-2.07 % of base)
         -52 : 20346.dasm (-2.43 % of base)
         -52 : 40034.dasm (-2.43 % of base)
         -48 : 28305.dasm (-0.51 % of base)
         -32 : 72760.dasm (-0.48 % of base)
         -29 : 74725.dasm (-3.77 % of base)
         -29 : 75899.dasm (-3.30 % of base)
         -22 : 11085.dasm (-1.67 % of base)
         -21 : 93.dasm (-3.08 % of base)
         -20 : 35890.dasm (-1.61 % of base)
         -20 : 66078.dasm (-2.24 % of base)
         -20 : 81812.dasm (-0.51 % of base)
         -19 : 3408.dasm (-4.19 % of base)
         -17 : 78828.dasm (-1.45 % of base)
         -15 : 8631.dasm (-8.52 % of base)
         -15 : 100749.dasm (-0.14 % of base)
         -15 : 116462.dasm (-0.14 % of base)
         -14 : 45037.dasm (-1.60 % of base)
         -13 : 53708.dasm (-0.93 % of base)
         -12 : 107730.dasm (-6.45 % of base)

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

Top method regressions (bytes):
          77 (10.07 % of base) : 40234.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          75 (5.36 % of base) : 78310.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          70 (2.06 % of base) : 61104.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
          67 (4.37 % of base) : 23177.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (Tier0-FullOpts)
          64 (5.85 % of base) : 72936.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
          59 (7.78 % of base) : 20262.dasm - System.Text.Json.Serialization.Converters.DictionaryDefaultConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          57 (5.57 % of base) : 73320.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
          55 (13.25 % of base) : 74776.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
          53 (22.08 % of base) : 17220.dasm - System.Collections.Concurrent.ConcurrentDictionary`2+Enumerator[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          52 (10.48 % of base) : 30175.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          45 (11.31 % of base) : 40616.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (Tier0-FullOpts)
          43 (4.77 % of base) : 3233.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier0-FullOpts)
          42 (6.36 % of base) : 43567.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (Tier0-FullOpts)
          38 (1.36 % of base) : 40236.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
          37 (1.35 % of base) : 79110.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
          34 (7.71 % of base) : 69217.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
          34 (1.80 % of base) : 30101.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier0-FullOpts)
          31 (2.80 % of base) : 323.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier0-FullOpts)
          30 (5.15 % of base) : 1144.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier0-FullOpts)
          30 (5.16 % of base) : 44744.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:Remove(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier0-FullOpts)

Top method improvements (bytes):
         -73 (-2.07 % of base) : 94741.dasm - Newtonsoft.Json.JsonTextReader:ParseReadNumber(int,ushort,int):this (Tier1)
         -52 (-2.43 % of base) : 20346.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
         -52 (-2.43 % of base) : 40034.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
         -48 (-0.51 % of base) : 28305.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -32 (-0.48 % of base) : 72760.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 (Tier0-FullOpts)
         -29 (-3.77 % of base) : 74725.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier0-FullOpts)
         -29 (-3.30 % of base) : 75899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
         -22 (-1.67 % of base) : 11085.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -21 (-3.08 % of base) : 93.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
         -20 (-2.24 % of base) : 66078.dasm - LUDecomp:Run():double:this (Tier0-FullOpts)
         -20 (-0.51 % of base) : 81812.dasm - Microsoft.Cci.MetadataVisitor:Visit(Microsoft.Cci.ICustomAttribute):this (Tier1)
         -20 (-1.61 % of base) : 35890.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier0-FullOpts)
         -19 (-4.19 % of base) : 3408.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -17 (-1.45 % of base) : 78828.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (Tier0-FullOpts)
         -15 (-0.14 % of base) : 116462.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
         -15 (-0.14 % of base) : 100749.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
         -15 (-8.52 % of base) : 8631.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -14 (-1.60 % of base) : 45037.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier0-FullOpts)
         -13 (-0.93 % of base) : 53708.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier0-FullOpts)
         -12 (-6.45 % of base) : 107730.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)

Top method regressions (percentages):
          24 (104.35 % of base) : 26843.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          10 (66.67 % of base) : 73926.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
          12 (44.44 % of base) : 82231.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          10 (40.00 % of base) : 80055.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          10 (38.46 % of base) : 82128.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor():this (Tier1)
          12 (37.50 % of base) : 104602.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
          22 (34.92 % of base) : 77537.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
          10 (34.48 % of base) : 118821.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier1)
          10 (34.48 % of base) : 36568.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier1)
          10 (33.33 % of base) : 42886.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:GetEnumerator():System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:this (Tier1)
          10 (33.33 % of base) : 22431.dasm - System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this (Tier1)
          10 (33.33 % of base) : 76728.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon]:this (Tier1)
          10 (29.41 % of base) : 22657.dasm - System.Collections.Generic.Stack`1[System.__Canon]:GetEnumerator():System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:this (Tier1)
          24 (26.67 % of base) : 73906.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          12 (26.09 % of base) : 111492.dasm - System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this (Tier1)
          12 (26.09 % of base) : 64160.dasm - System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this (Tier1)
          12 (25.00 % of base) : 105384.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (25.00 % of base) : 21812.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (25.00 % of base) : 66024.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)
          12 (25.00 % of base) : 115647.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)

Top method improvements (percentages):
         -15 (-8.52 % of base) : 8631.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -12 (-6.45 % of base) : 107730.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
         -12 (-6.45 % of base) : 61677.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
         -12 (-5.80 % of base) : 107414.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
         -12 (-5.80 % of base) : 111152.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -9 (-4.84 % of base) : 61096.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.78 % of base) : 104916.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.78 % of base) : 108305.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.78 % of base) : 24250.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.78 % of base) : 32080.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.78 % of base) : 66489.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
         -10 (-4.59 % of base) : 15705.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 46363.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 102142.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 1202.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 87493.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 103498.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 58998.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 88842.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
          -8 (-4.40 % of base) : 93370.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9313285 (overridden on cmd)
Total bytes of diff: 9315665 (overridden on cmd)
Total bytes of delta: 2380 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          77 : 25436.dasm (10.07 % of base)
          75 : 39404.dasm (5.36 % of base)
          70 : 31625.dasm (2.06 % of base)
          67 : 7822.dasm (4.37 % of base)
          64 : 34882.dasm (5.85 % of base)
          59 : 14750.dasm (7.78 % of base)
          57 : 35232.dasm (5.57 % of base)
          55 : 36443.dasm (13.25 % of base)
          52 : 34711.dasm (0.81 % of base)
          52 : 19252.dasm (10.48 % of base)
          45 : 25523.dasm (11.31 % of base)
          43 : 17168.dasm (5.22 % of base)
          42 : 26896.dasm (6.36 % of base)
          38 : 25437.dasm (1.39 % of base)
          34 : 19198.dasm (1.85 % of base)
          31 : 379.dasm (2.80 % of base)
          30 : 26702.dasm (5.26 % of base)
          30 : 33812.dasm (1.12 % of base)
          30 : 26536.dasm (0.62 % of base)
          30 : 33058.dasm (6.96 % of base)

Top file improvements (bytes):
        -167 : 35911.dasm (-2.97 % of base)
         -48 : 19139.dasm (-0.51 % of base)
         -29 : 36392.dasm (-3.77 % of base)
         -22 : 4072.dasm (-1.67 % of base)
         -21 : 37395.dasm (-2.47 % of base)
         -21 : 99.dasm (-3.08 % of base)
         -20 : 23126.dasm (-1.91 % of base)
         -20 : 32886.dasm (-2.24 % of base)
         -19 : 13748.dasm (-4.19 % of base)
         -15 : 44823.dasm (-0.79 % of base)
         -14 : 28134.dasm (-1.60 % of base)
         -13 : 29730.dasm (-0.93 % of base)
         -12 : 39896.dasm (-1.06 % of base)
         -12 : 47197.dasm (-1.04 % of base)
         -12 : 10282.dasm (-1.36 % of base)
         -11 : 8719.dasm (-1.16 % of base)
         -10 : 11968.dasm (-0.11 % of base)
         -10 : 29911.dasm (-3.05 % of base)
          -8 : 14604.dasm (-2.42 % of base)
          -8 : 17146.dasm (-1.78 % of base)

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

Top method regressions (bytes):
          77 (10.07 % of base) : 25436.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          75 (5.36 % of base) : 39404.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          70 (2.06 % of base) : 31625.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
          67 (4.37 % of base) : 7822.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (Tier0-FullOpts)
          64 (5.85 % of base) : 34882.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
          59 (7.78 % of base) : 14750.dasm - System.Text.Json.Serialization.Converters.DictionaryDefaultConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          57 (5.57 % of base) : 35232.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
          55 (13.25 % of base) : 36443.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
          52 (0.81 % of base) : 34711.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 (Tier0-FullOpts)
          52 (10.48 % of base) : 19252.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0-FullOpts)
          45 (11.31 % of base) : 25523.dasm - System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:DeepClone(int):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this (Tier0-FullOpts)
          43 (5.22 % of base) : 17168.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier0-FullOpts)
          42 (6.36 % of base) : 26896.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (Tier0-FullOpts)
          38 (1.39 % of base) : 25437.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0-FullOpts)
          34 (1.85 % of base) : 19198.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier0-FullOpts)
          31 (2.80 % of base) : 379.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier0-FullOpts)
          30 (1.12 % of base) : 33812.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderCollectionsOfPrimitives:Read2_CollectionsOfPrimitives(ubyte,ubyte):MicroBenchmarks.Serializers.CollectionsOfPrimitives:this (Tier0-FullOpts)
          30 (6.96 % of base) : 33058.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
          30 (5.26 % of base) : 26702.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:Remove(System.ValueTuple`2[System.__Canon,System.__Canon]):ubyte:this (Tier0-FullOpts)
          30 (0.62 % of base) : 26536.dasm - Utf8Json.Formatters.DictionaryFormatterBase`5[int,System.__Canon,System.__Canon,System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon],System.__Canon]:Serialize(byref,System.__Canon,Utf8Json.IJsonFormatterResolver):this (Tier0-FullOpts)

Top method improvements (bytes):
        -167 (-2.97 % of base) : 35911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
         -48 (-0.51 % of base) : 19139.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -29 (-3.77 % of base) : 36392.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier0-FullOpts)
         -22 (-1.67 % of base) : 4072.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -21 (-2.47 % of base) : 37395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
         -21 (-3.08 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
         -20 (-2.24 % of base) : 32886.dasm - LUDecomp:Run():double:this (Tier0-FullOpts)
         -20 (-1.91 % of base) : 23126.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier0-FullOpts)
         -19 (-4.19 % of base) : 13748.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -15 (-0.79 % of base) : 44823.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
         -14 (-1.60 % of base) : 28134.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier0-FullOpts)
         -13 (-0.93 % of base) : 29730.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier0-FullOpts)
         -12 (-1.36 % of base) : 10282.dasm - BenchmarksGame.KNucleotide_9:writeFrequencies(System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper],int,int[],byref):System.String (Tier0-FullOpts)
         -12 (-1.06 % of base) : 39896.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (Tier0-FullOpts)
         -12 (-1.04 % of base) : 47197.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -11 (-1.16 % of base) : 8719.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (Tier0-FullOpts)
         -10 (-0.11 % of base) : 11968.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -10 (-3.05 % of base) : 29911.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<TryFoldAlternation>g__TrySplitConcatSubsumption|52_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],byref):ubyte (Tier0-FullOpts)
          -8 (-1.83 % of base) : 5193.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo (Tier0-FullOpts)
          -8 (-2.42 % of base) : 14604.dasm - System.Collections.Frozen.KeyAnalyzer:CreateAnalysisResults(System.ReadOnlySpan`1[System.String],ubyte,int,int,int,int,ubyte,System.Collections.Frozen.KeyAnalyzer+GetSpan):System.Collections.Frozen.KeyAnalyzer+AnalysisResults (Tier0-FullOpts)

Top method regressions (percentages):
          10 (200.00 % of base) : 44937.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
          24 (104.35 % of base) : 13796.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          10 (66.67 % of base) : 35114.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
          12 (48.00 % of base) : 40931.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          10 (40.00 % of base) : 35589.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          22 (38.60 % of base) : 31959.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (Tier1)
          10 (38.46 % of base) : 6635.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor():this (Tier1)
          12 (37.50 % of base) : 45959.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
          10 (35.71 % of base) : 37066.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
          22 (34.92 % of base) : 37462.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
          10 (34.48 % of base) : 9957.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier1)
          10 (33.33 % of base) : 27121.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:GetEnumerator():System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:this (Tier1)
          10 (33.33 % of base) : 6006.dasm - System.Collections.Generic.List`1[System.__Canon]:GetEnumerator():System.Collections.Generic.List`1+Enumerator[System.__Canon]:this (Tier1)
          10 (33.33 % of base) : 28655.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:get_Origin():System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon]:this (Tier1)
          10 (33.33 % of base) : 19531.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.__Canon]:get_Value():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this (Tier1)
          10 (30.30 % of base) : 45510.dasm - System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,int]:GetEnumerator():System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,int]:this (Tier1)
          10 (29.41 % of base) : 6110.dasm - System.Collections.Generic.Stack`1[System.__Canon]:GetEnumerator():System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:this (Tier1)
          24 (26.67 % of base) : 34784.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          12 (26.09 % of base) : 14801.dasm - System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:Pop():System.Collections.Immutable.RefAsValueType`1[System.__Canon]:this (Tier1)
          12 (25.00 % of base) : 5929.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier1)

Top method improvements (percentages):
         -19 (-4.19 % of base) : 13748.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -29 (-3.77 % of base) : 36392.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier0-FullOpts)
         -21 (-3.08 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
         -10 (-3.05 % of base) : 29911.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<TryFoldAlternation>g__TrySplitConcatSubsumption|52_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],byref):ubyte (Tier0-FullOpts)
          -6 (-2.99 % of base) : 241.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
        -167 (-2.97 % of base) : 35911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
         -21 (-2.47 % of base) : 37395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
          -8 (-2.42 % of base) : 14604.dasm - System.Collections.Frozen.KeyAnalyzer:CreateAnalysisResults(System.ReadOnlySpan`1[System.String],ubyte,int,int,int,int,ubyte,System.Collections.Frozen.KeyAnalyzer+GetSpan):System.Collections.Frozen.KeyAnalyzer+AnalysisResults (Tier0-FullOpts)
          -6 (-2.28 % of base) : 1509.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier0-FullOpts)
         -20 (-2.24 % of base) : 32886.dasm - LUDecomp:Run():double:this (Tier0-FullOpts)
         -20 (-1.91 % of base) : 23126.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier0-FullOpts)
          -8 (-1.83 % of base) : 5193.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo (Tier0-FullOpts)
          -5 (-1.80 % of base) : 10788.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (Tier0-FullOpts)
          -5 (-1.79 % of base) : 47297.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier0-FullOpts)
          -8 (-1.78 % of base) : 17146.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.Collections.NotKnownComparable,System.Collections.NotKnownComparable]:.ctor(System.Collections.Generic.Dictionary`2[System.Collections.NotKnownComparable,System.Collections.NotKnownComparable],ubyte):this (Tier0-FullOpts)
          -5 (-1.73 % of base) : 33536.dasm - Benchstone.BenchF.LLoops:AllocArray[double](int,int,int):double[][][] (Tier0-FullOpts)
         -22 (-1.67 % of base) : 4072.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
          -2 (-1.67 % of base) : 10775.dasm - System.Diagnostics.Tracing.EventSource+EventMetadata:<get_ParameterTypes>g__GetParameterTypes|22_0(System.Reflection.ParameterInfo[]):System.Type[] (Tier0-FullOpts)
          -2 (-1.67 % of base) : 19663.dasm - System.Diagnostics.Tracing.TraceLoggingEventTypes:MakeParamNameArray(System.Reflection.ParameterInfo[]):System.String[] (Tier0-FullOpts)
         -14 (-1.60 % of base) : 28134.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier0-FullOpts)


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 308728365 (overridden on cmd)
Total bytes of diff: 308719788 (overridden on cmd)
Total bytes of delta: -8577 (-0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         271 : 336825.dasm (11.43 % of base)
         187 : 140816.dasm (11.81 % of base)
         178 : 436239.dasm (11.65 % of base)
         117 : 371109.dasm (6.46 % of base)
         112 : 270272.dasm (6.84 % of base)
         112 : 507150.dasm (6.84 % of base)
         109 : 140854.dasm (7.60 % of base)
         109 : 140911.dasm (7.60 % of base)
         109 : 436269.dasm (7.88 % of base)
         109 : 436314.dasm (7.88 % of base)
          98 : 223570.dasm (1.53 % of base)
          98 : 476001.dasm (1.52 % of base)
          79 : 220415.dasm (2.48 % of base)
          78 : 44861.dasm (1.90 % of base)
          75 : 229724.dasm (5.36 % of base)
          75 : 478319.dasm (5.36 % of base)
          70 : 234020.dasm (2.06 % of base)
          70 : 481006.dasm (2.06 % of base)
          68 : 370026.dasm (2.44 % of base)
          64 : 223800.dasm (5.85 % of base)

Top file improvements (bytes):
        -116 : 225325.dasm (-2.08 % of base)
         -90 : 162147.dasm (-7.23 % of base)
         -90 : 166271.dasm (-7.23 % of base)
         -90 : 166364.dasm (-7.23 % of base)
         -90 : 162223.dasm (-7.23 % of base)
         -90 : 166345.dasm (-7.23 % of base)
         -90 : 162242.dasm (-7.23 % of base)
         -90 : 166288.dasm (-7.23 % of base)
         -90 : 162166.dasm (-7.23 % of base)
         -88 : 447278.dasm (-7.07 % of base)
         -88 : 447293.dasm (-7.07 % of base)
         -88 : 450252.dasm (-7.07 % of base)
         -88 : 450267.dasm (-7.07 % of base)
         -88 : 447338.dasm (-7.07 % of base)
         -88 : 447353.dasm (-7.07 % of base)
         -88 : 450192.dasm (-7.07 % of base)
         -88 : 450207.dasm (-7.07 % of base)
         -85 : 184897.dasm (-6.32 % of base)
         -85 : 184878.dasm (-6.32 % of base)
         -83 : 182845.dasm (-6.05 % of base)

81 total files with Code Size differences (35 improved, 46 regressed), 20 unchanged.

Top method regressions (bytes):
         271 (11.43 % of base) : 336825.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
         187 (11.81 % of base) : 140816.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         178 (11.65 % of base) : 436239.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         117 (6.46 % of base) : 371109.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.NodeFactory+DynamicHelperCellKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.NodeFactory+DynamicHelperCellKey,System.Func`2[ILCompiler.DependencyAnalysis.NodeFactory+DynamicHelperCellKey,System.__Canon]):System.__Canon:this (Tier1)
         112 (6.84 % of base) : 507150.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
         112 (6.84 % of base) : 270272.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
         109 (7.88 % of base) : 436269.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
         109 (7.60 % of base) : 140854.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (Tier0-FullOpts)
         109 (7.88 % of base) : 436314.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         109 (7.60 % of base) : 140911.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
          98 (1.52 % of base) : 476001.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)
          98 (1.53 % of base) : 223570.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 (Tier0-FullOpts)
          79 (2.48 % of base) : 220415.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
          78 (1.90 % of base) : 44861.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
          75 (5.36 % of base) : 478319.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          75 (5.36 % of base) : 229724.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          70 (2.06 % of base) : 481006.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
          70 (2.06 % of base) : 234020.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
          68 (2.44 % of base) : 370026.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          64 (5.85 % of base) : 223800.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (bytes):
        -116 (-2.08 % of base) : 225325.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162147.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162166.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162223.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162242.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166271.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166288.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166345.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166364.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -88 (-7.07 % of base) : 447278.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447293.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447338.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447353.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450192.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450207.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450252.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450267.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -85 (-6.32 % of base) : 184878.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble0:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         -85 (-6.32 % of base) : 184897.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble1:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         -83 (-6.05 % of base) : 182845.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__CompareScalarUnorderedDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)

Top method regressions (percentages):
          31 (516.67 % of base) : 520794.dasm - ILGEN_0x2dda4eb5:Method_0xa084659a():ushort (FullOpts)
          14 (140.00 % of base) : 570903.dasm - HelperILDllTests:CallGenMethodFromGenericType[System.__Canon]():System.String (FullOpts)
          14 (140.00 % of base) : 570897.dasm - HelperILDllTests:CallMethodFromGenericType[System.__Canon]():System.String (FullOpts)
          14 (140.00 % of base) : 219134.dasm - Program:Test[System.__Canon]():int (FullOpts)
          10 (125.00 % of base) : 500111.dasm - Caller`4[MyStruct`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,System.__Canon]:CallGenInstMethodU(System.__Canon):System.String:this (FullOpts)
          10 (125.00 % of base) : 500112.dasm - Caller`4[MyStruct`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,System.__Canon]:CallVirtMethodU(System.__Canon):System.String:this (FullOpts)
          24 (104.35 % of base) : 476024.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,int]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,int]]):this (FullOpts)
          24 (104.35 % of base) : 476357.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          21 (72.41 % of base) : 520604.dasm - ILGEN_0x4601be46:Method_0x9c86375f(ulong,ubyte):int (FullOpts)
          10 (66.67 % of base) : 571865.dasm - Microsoft.Build.Collections.PropertyDictionary`1[System.__Canon]:Contains(System.String):ubyte:this (FullOpts)
          10 (66.67 % of base) : 571793.dasm - System.Collections.Generic.Dictionary`2+ValueCollection[int,System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
          10 (66.67 % of base) : 476017.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          10 (66.67 % of base) : 225064.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier1)
          10 (52.63 % of base) : 511832.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[System.__Canon]:this (FullOpts)
          10 (50.00 % of base) : 517422.dasm - System.Xml.Xsl.ListBase`1[System.__Canon]:GetEnumerator():System.Xml.Xsl.IListEnumerator`1[System.__Canon]:this (FullOpts)
          10 (47.62 % of base) : 388791.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Length():int:this (FullOpts)
          12 (44.44 % of base) : 277464.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          12 (44.44 % of base) : 476126.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
          10 (40.00 % of base) : 476427.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,uint]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          22 (38.60 % of base) : 477406.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (FullOpts)

Top method improvements (percentages):
         -66 (-10.23 % of base) : 369446.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -59 (-9.46 % of base) : 69407.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -70 (-9.30 % of base) : 504955.dasm - JitTest_lcsbas_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
         -70 (-9.30 % of base) : 266639.dasm - JitTest_lcsbas_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
         -69 (-8.58 % of base) : 504977.dasm - JitTest_lcs_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
         -69 (-8.58 % of base) : 266682.dasm - JitTest_lcs_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162147.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162166.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162223.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 162242.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166271.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166288.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166345.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -90 (-7.23 % of base) : 166364.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -88 (-7.07 % of base) : 447278.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447293.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447338.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 447353.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450192.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt322:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
         -88 (-7.07 % of base) : 450207.dasm - JIT.HardwareIntrinsics.X86._Avx2_Vector128.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (FullOpts)


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31654820 (overridden on cmd)
Total bytes of diff: 31653784 (overridden on cmd)
Total bytes of delta: -1036 (-0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         197 : 30605.dasm (2.41 % of base)
         149 : 148608.dasm (8.25 % of base)
         101 : 49938.dasm (6.14 % of base)
          88 : 174124.dasm (9.06 % of base)
          49 : 205867.dasm (2.52 % of base)
          42 : 165272.dasm (7.81 % of base)
          39 : 64665.dasm (0.07 % of base)
          32 : 147707.dasm (4.93 % of base)
          29 : 17059.dasm (0.86 % of base)
          29 : 228713.dasm (1.06 % of base)
          29 : 240938.dasm (1.07 % of base)
          29 : 62862.dasm (1.07 % of base)
          27 : 21018.dasm (5.01 % of base)
          26 : 88803.dasm (4.34 % of base)
          25 : 164849.dasm (2.21 % of base)
          25 : 85707.dasm (2.05 % of base)
          25 : 120048.dasm (2.05 % of base)
          23 : 133109.dasm (2.86 % of base)
          21 : 120621.dasm (2.26 % of base)
          21 : 22879.dasm (2.00 % of base)

Top file improvements (bytes):
        -312 : 238775.dasm (-1.40 % of base)
         -63 : 228250.dasm (-1.17 % of base)
         -56 : 58082.dasm (-2.53 % of base)
         -50 : 166062.dasm (-1.32 % of base)
         -46 : 239494.dasm (-7.15 % of base)
         -40 : 17968.dasm (-1.97 % of base)
         -29 : 239719.dasm (-1.90 % of base)
         -28 : 239790.dasm (-0.90 % of base)
         -26 : 192707.dasm (-3.06 % of base)
         -26 : 59424.dasm (-3.63 % of base)
         -24 : 146024.dasm (-0.97 % of base)
         -23 : 153518.dasm (-2.99 % of base)
         -23 : 46777.dasm (-3.05 % of base)
         -23 : 228289.dasm (-1.05 % of base)
         -22 : 165804.dasm (-3.49 % of base)
         -21 : 239545.dasm (-3.32 % of base)
         -21 : 175827.dasm (-2.28 % of base)
         -20 : 59273.dasm (-1.55 % of base)
         -19 : 225671.dasm (-4.70 % of base)
         -18 : 25791.dasm (-3.45 % of base)

80 total files with Code Size differences (43 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         197 (2.41 % of base) : 30605.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)
         149 (8.25 % of base) : 148608.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAttributeData:GetTargetAttributeSignatureIndex(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.AttributeDescription):int:this (FullOpts)
         101 (6.14 % of base) : 49938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
          88 (9.06 % of base) : 174124.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          49 (2.52 % of base) : 205867.dasm - System.Management.ManagementClassGenerator:GenerateSystemPropertiesClass():System.CodeDom.CodeTypeDeclaration:this (FullOpts)
          42 (7.81 % of base) : 165272.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:GenerateObjectCloneIfNeeded(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          39 (0.07 % of base) : 64665.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
          32 (4.93 % of base) : 147707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor:SubstituteTypeParametersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,byref):ubyte:this (FullOpts)
          29 (1.06 % of base) : 228713.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
          29 (1.07 % of base) : 240938.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
          29 (1.07 % of base) : 62862.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
          29 (0.86 % of base) : 17059.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
          27 (5.01 % of base) : 21018.dasm - System.Globalization.UmAlQuraCalendar:ConvertGregorianToHijri(System.DateTime,byref,byref,byref) (FullOpts)
          26 (4.34 % of base) : 88803.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:FindGroupNameFromFrameName(System.String,byref):System.String:this (FullOpts)
          25 (2.05 % of base) : 85707.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          25 (2.05 % of base) : 120048.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          25 (2.21 % of base) : 164849.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          23 (2.86 % of base) : 133109.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):this (FullOpts)
          21 (2.26 % of base) : 120621.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):ubyte:this (FullOpts)
          21 (2.00 % of base) : 22879.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)

Top method improvements (bytes):
        -312 (-1.40 % of base) : 238775.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)
         -63 (-1.17 % of base) : 228250.dasm - System.Data.OleDb.OleDbCommandBuilder:DeriveParametersFromStoredProcedure(System.Data.OleDb.OleDbConnection,System.Data.OleDb.OleDbCommand):System.Data.OleDb.OleDbParameter[] (FullOpts)
         -56 (-2.53 % of base) : 58082.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -50 (-1.32 % of base) : 166062.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         -46 (-7.15 % of base) : 239494.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -40 (-1.97 % of base) : 17968.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
         -29 (-1.90 % of base) : 239719.dasm - Microsoft.VisualBasic.CompilerServices.LikeOperator:MatchAsterisk(System.String,int,int,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],System.String,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],Microsoft.VisualBasic.CompilerServices.LikeOperator+PatternGroup[],int,byref,byref,System.Globalization.CompareInfo,int) (FullOpts)
         -28 (-0.90 % of base) : 239790.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         -26 (-3.63 % of base) : 59424.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
         -26 (-3.06 % of base) : 192707.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:AESKeyWrapEncrypt(ubyte[],ubyte[]):ubyte[] (FullOpts)
         -24 (-0.97 % of base) : 146024.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:PassArguments(Microsoft.CodeAnalysis.SyntaxNode,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.BitVector]:this (FullOpts)
         -23 (-3.05 % of base) : 46777.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (FullOpts)
         -23 (-2.99 % of base) : 153518.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (FullOpts)
         -23 (-1.05 % of base) : 228289.dasm - System.Data.OleDb.OleDbMetaDataFactory:.ctor(System.IO.Stream,System.String,System.String,System.Data.OleDb.SchemaSupport[]):this (FullOpts)
         -22 (-3.49 % of base) : 165804.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:InheritsFromOrImplementsIgnoringConstruction(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,byref):ubyte (FullOpts)
         -21 (-3.32 % of base) : 239545.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ReadNextLine(byref,Microsoft.VisualBasic.FileIO.TextFieldParser+ChangeBufferFunction):System.String:this (FullOpts)
         -21 (-2.28 % of base) : 175827.dasm - System.Diagnostics.EventLogInternal:InternalWriteEvent(uint,ushort,int,System.String[],ubyte[],System.String):this (FullOpts)
         -20 (-1.55 % of base) : 59273.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
         -19 (-4.70 % of base) : 225671.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -18 (-3.45 % of base) : 25791.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:InheritsFromOrImplementsIgnoringConstruction(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (FullOpts)

Top method regressions (percentages):
          88 (9.06 % of base) : 174124.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
           6 (8.82 % of base) : 240590.dasm - System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte):System.Data.Odbc.OdbcDataReader:this (FullOpts)
         149 (8.25 % of base) : 148608.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAttributeData:GetTargetAttributeSignatureIndex(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.AttributeDescription):int:this (FullOpts)
          42 (7.81 % of base) : 165272.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:GenerateObjectCloneIfNeeded(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          18 (7.32 % of base) : 16011.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
         101 (6.14 % of base) : 49938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
          10 (5.95 % of base) : 136918.dasm - System.Security.Cryptography.RSA:WritePkcs1PrivateKey():System.Formats.Asn1.AsnWriter:this (FullOpts)
          27 (5.01 % of base) : 21018.dasm - System.Globalization.UmAlQuraCalendar:ConvertGregorianToHijri(System.DateTime,byref,byref,byref) (FullOpts)
          32 (4.93 % of base) : 147707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor:SubstituteTypeParametersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,byref):ubyte:this (FullOpts)
          26 (4.34 % of base) : 88803.dasm - Diagnostics.Tracing.StackSources.FilterStackSource:FindGroupNameFromFrameName(System.String,byref):System.String:this (FullOpts)
          10 (4.29 % of base) : 135135.dasm - System.Security.Cryptography.RSA:ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          10 (4.29 % of base) : 135136.dasm - System.Security.Cryptography.RSA:ImportEncryptedPkcs8PrivateKey(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          12 (4.17 % of base) : 181985.dasm - Microsoft.Win32.SystemEvents:WindowThreadProc():this (FullOpts)
           2 (3.92 % of base) : 30854.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
           7 (3.78 % of base) : 194977.dasm - System.Net.PathList+PathListComparer:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
          10 (3.73 % of base) : 145273.dasm - System.Text.InternalDecoderBestFitFallbackBuffer:TryBestFit(ubyte[]):ushort:this (FullOpts)
           8 (3.60 % of base) : 48193.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstructedNamedTypeSymbol:TypeParametersMatchTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
          13 (3.32 % of base) : 133436.dasm - System.Xml.Xsl.Xslt.XslAstRewriter:CheckNodeCost(System.Xml.Xsl.Xslt.XslNode):int:this (FullOpts)
          13 (3.26 % of base) : 131244.dasm - System.Xml.XmlTextReaderImpl:ParseElementAsync():System.Threading.Tasks.Task:this (FullOpts)
           6 (3.00 % of base) : 196604.dasm - System.DefaultBinder:FindMostDerivedNewSlotMeth(System.Reflection.MethodBase[],int):System.Reflection.MethodBase (FullOpts)

Top method improvements (percentages):
         -46 (-7.15 % of base) : 239494.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -17 (-5.04 % of base) : 149540.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:IsConflictingOperatorOverloading(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
         -19 (-4.70 % of base) : 225671.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -11 (-4.49 % of base) : 147704.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor:Equals(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor,int):ubyte:this (FullOpts)
          -8 (-4.26 % of base) : 187834.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
         -26 (-3.63 % of base) : 59424.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
         -22 (-3.49 % of base) : 165804.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:InheritsFromOrImplementsIgnoringConstruction(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,byref):ubyte (FullOpts)
         -11 (-3.47 % of base) : 26382.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):this (FullOpts)
         -18 (-3.45 % of base) : 25791.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:InheritsFromOrImplementsIgnoringConstruction(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (FullOpts)
          -8 (-3.42 % of base) : 66135.dasm - Microsoft.FSharp.Reflection.Impl:getInstancePropertyInfos(System.Type,System.String[],int):System.Reflection.PropertyInfo[] (FullOpts)
         -17 (-3.33 % of base) : 88997.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
         -21 (-3.32 % of base) : 239545.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ReadNextLine(byref,Microsoft.VisualBasic.FileIO.TextFieldParser+ChangeBufferFunction):System.String:this (FullOpts)
          -8 (-3.28 % of base) : 15987.dasm - System.RuntimeType+RuntimeTypeCache:GetDefaultMemberName():System.String:this (FullOpts)
         -11 (-3.14 % of base) : 130411.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ParseTagName(System.String,int,byref,byref,byref):this (FullOpts)
         -26 (-3.06 % of base) : 192707.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:AESKeyWrapEncrypt(ubyte[],ubyte[]):ubyte[] (FullOpts)
         -23 (-3.05 % of base) : 46777.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (FullOpts)
          -8 (-3.05 % of base) : 227030.dasm - System.Collections.Frozen.KeyAnalyzer:CreateAnalysisResults(System.ReadOnlySpan`1[System.String],ubyte,int,int,int,int,ubyte,System.Collections.Frozen.KeyAnalyzer+GetSpan):System.Collections.Frozen.KeyAnalyzer+AnalysisResults (FullOpts)
         -23 (-2.99 % of base) : 153518.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEModuleBuilder:GetForwardedTypes(System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.ExportedType]) (FullOpts)
          -8 (-2.92 % of base) : 146862.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager:CheckAndReportMissingSymbols(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeOrDelegateTemplateSymbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
         -12 (-2.88 % of base) : 196381.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)


libraries.pmi.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47961722 (overridden on cmd)
Total bytes of diff: 47973354 (overridden on cmd)
Total bytes of delta: 11632 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         366 : 298762.dasm (22.80 % of base)
         262 : 298763.dasm (20.60 % of base)
         120 : 100157.dasm (4.89 % of base)
         102 : 267548.dasm (8.61 % of base)
          78 : 210128.dasm (4.90 % of base)
          75 : 257331.dasm (8.53 % of base)
          72 : 31872.dasm (4.56 % of base)
          66 : 230141.dasm (5.88 % of base)
          64 : 120250.dasm (5.85 % of base)
          64 : 167951.dasm (5.85 % of base)
          63 : 230142.dasm (6.46 % of base)
          60 : 261083.dasm (3.42 % of base)
          60 : 262384.dasm (2.55 % of base)
          57 : 230134.dasm (16.10 % of base)
          56 : 297549.dasm (6.27 % of base)
          56 : 228104.dasm (6.84 % of base)
          54 : 112295.dasm (1.77 % of base)
          54 : 159978.dasm (3.83 % of base)
          54 : 227933.dasm (8.10 % of base)
          53 : 82427.dasm (4.21 % of base)

Top file improvements (bytes):
         -90 : 113157.dasm (-3.42 % of base)
         -90 : 160955.dasm (-3.42 % of base)
         -80 : 58614.dasm (-1.44 % of base)
         -72 : 60030.dasm (-3.38 % of base)
         -57 : 82793.dasm (-2.37 % of base)
         -54 : 113159.dasm (-6.14 % of base)
         -54 : 66187.dasm (-2.11 % of base)
         -54 : 160957.dasm (-6.14 % of base)
         -49 : 236586.dasm (-1.75 % of base)
         -49 : 218596.dasm (-1.75 % of base)
         -48 : 117.dasm (-0.50 % of base)
         -43 : 30024.dasm (-0.69 % of base)
         -39 : 43999.dasm (-3.60 % of base)
         -35 : 105623.dasm (-1.58 % of base)
         -34 : 49566.dasm (-5.55 % of base)
         -32 : 25927.dasm (-7.17 % of base)
         -31 : 122317.dasm (-1.83 % of base)
         -31 : 170022.dasm (-1.83 % of base)
         -30 : 59799.dasm (-3.48 % of base)
         -27 : 36779.dasm (-0.57 % of base)

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

Top method regressions (bytes):
         366 (22.80 % of base) : 298762.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:RetrievePostponedItemsNonGreedy(ubyte):this (FullOpts)
         262 (20.60 % of base) : 298763.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[System.__Canon]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
         120 (4.89 % of base) : 100157.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         102 (8.61 % of base) : 267548.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          78 (4.90 % of base) : 210128.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (FullOpts)
          75 (8.53 % of base) : 257331.dasm - System.Linq.Parallel.ExceptQueryOperator`1+OrderedExceptQueryOperatorEnumerator`1[System.__Canon,System.Nullable`1[int]]:MoveNext(byref,byref):ubyte:this (FullOpts)
          72 (4.56 % of base) : 31872.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasVariantConversionNoCycleCheck(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte:this (FullOpts)
          66 (5.88 % of base) : 230141.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:EnqueueRange(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]]):this (FullOpts)
          64 (5.85 % of base) : 120250.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          64 (5.85 % of base) : 167951.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          63 (6.46 % of base) : 230142.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:EnqueueRange(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Nullable`1[int]):this (FullOpts)
          60 (3.42 % of base) : 261083.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          60 (2.55 % of base) : 262384.dasm - System.Management.ManagementClassGenerator:GenerateSystemPropertiesClass():System.CodeDom.CodeTypeDeclaration:this (FullOpts)
          57 (16.10 % of base) : 230134.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:Enqueue(System.__Canon,System.Nullable`1[int]):this (FullOpts)
          56 (6.84 % of base) : 228104.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
          56 (6.27 % of base) : 297549.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.__Canon]:this (FullOpts)
          54 (3.83 % of base) : 159978.dasm - Microsoft.CodeAnalysis.CombineNode`2[System.__Canon,System.Nullable`1[int]]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]]:this (FullOpts)
          54 (1.77 % of base) : 112295.dasm - Microsoft.CodeAnalysis.SourceOutputNode`1[System.__Canon]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]]:this (FullOpts)
          54 (8.10 % of base) : 227933.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:SetOrAdd(System.__Canon,System.Nullable`1[int],System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],ubyte,byref,byref):System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          53 (4.21 % of base) : 82427.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)

Top method improvements (bytes):
         -90 (-3.42 % of base) : 113157.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -90 (-3.42 % of base) : 160955.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -80 (-1.44 % of base) : 58614.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -72 (-3.38 % of base) : 60030.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -57 (-2.37 % of base) : 82793.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:GetMyGroupCollectionAttributeData(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:this (FullOpts)
         -54 (-2.11 % of base) : 66187.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -54 (-6.14 % of base) : 113159.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -54 (-6.14 % of base) : 160957.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -49 (-1.75 % of base) : 236586.dasm - System.Configuration.BaseConfigurationRecord:Init(System.Configuration.Internal.IInternalConfigRoot,System.Configuration.BaseConfigurationRecord,System.String,System.String):this (FullOpts)
         -49 (-1.75 % of base) : 218596.dasm - System.Configuration.BaseConfigurationRecord:Init(System.Configuration.Internal.IInternalConfigRoot,System.Configuration.BaseConfigurationRecord,System.String,System.String):this (FullOpts)
         -48 (-0.50 % of base) : 117.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -43 (-0.69 % of base) : 30024.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousObjectCreation(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -39 (-3.60 % of base) : 43999.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:GetNextDirective(System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:this (FullOpts)
         -35 (-1.58 % of base) : 105623.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:CreateAndSetSourceAssemblyFullBind(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation):ubyte:this (FullOpts)
         -34 (-5.55 % of base) : 49566.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
         -32 (-7.17 % of base) : 25927.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],System.Collections.Generic.IComparer`1[ubyte],System.Nullable`1[int][],ubyte[]) (FullOpts)
         -31 (-1.83 % of base) : 122317.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -31 (-1.83 % of base) : 170022.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -30 (-3.48 % of base) : 59799.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -27 (-0.57 % of base) : 36779.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)

Top method regressions (percentages):
          11 (220.00 % of base) : 23343.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Reduce@2143[System.__Canon]:Invoke(System.__Canon):System.__Canon:this (FullOpts)
          11 (220.00 % of base) : 16422.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
          10 (200.00 % of base) : 123542.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 171240.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 216894.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 123543.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 171241.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 216895.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 109993.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 157870.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Keys():Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 109994.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.SmallDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (200.00 % of base) : 157871.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,System.Nullable`1[int]]:get_Values():Microsoft.CodeAnalysis.SmallDictionary`2+ValueCollection[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
          10 (166.67 % of base) : 120348.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:get_Capacity():int:this (FullOpts)
          10 (166.67 % of base) : 168049.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:get_Capacity():int:this (FullOpts)
          10 (166.67 % of base) : 216401.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:get_Capacity():int:this (FullOpts)
          10 (166.67 % of base) : 258129.dasm - System.Linq.Parallel.GroupByGrouping`2[System.__Canon,System.Nullable`1[int]]:System.Linq.IGrouping<TGroupKey,TElement>.get_Key():System.__Canon:this (FullOpts)
          11 (122.22 % of base) : 16433.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200-1[System.__Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 124823.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+KeyCollection+EnumerableImpl[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerator.get_Current():System.Object:this (FullOpts)
          10 (111.11 % of base) : 169096.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):uint:this (FullOpts)
          10 (111.11 % of base) : 256484.dasm - System.Linq.AggregationMinMaxHelpers`1+<>c[System.__Canon]:<MakeResultSelectorFunction>b__5_0(System.Linq.Parallel.Pair`2[ubyte,System.__Canon]):System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -12 (-7.32 % of base) : 188642.dasm - System.Xml.Xsl.XsltOld.OutputScopeManager:FindPrefix(System.String,byref):ubyte:this (FullOpts)
         -32 (-7.17 % of base) : 25927.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],System.Collections.Generic.IComparer`1[ubyte],System.Nullable`1[int][],ubyte[]) (FullOpts)
         -20 (-7.12 % of base) : 290287.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:MatchVoice(System.Globalization.CultureInfo,int,int,int,ubyte,byref):System.Speech.Internal.Synthesis.TTSVoice:this (FullOpts)
         -14 (-6.83 % of base) : 153885.dasm - Microsoft.Build.Graph.ProjectGraph+ProjectGraphBuildRequest:GetHashCode():int:this (FullOpts)
         -54 (-6.14 % of base) : 160957.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -54 (-6.14 % of base) : 113159.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -19 (-5.56 % of base) : 59694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
         -34 (-5.55 % of base) : 49566.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
          -5 (-4.55 % of base) : 279672.dasm - System.Runtime.Serialization.ObjectHolderListEnumerator:MoveNext():ubyte:this (FullOpts)
         -19 (-4.38 % of base) : 229256.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -16 (-4.35 % of base) : 11581.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.Numerics.Vector`1[float]]:EnqueueSlow(System.Numerics.Vector`1[float]):this (FullOpts)
         -11 (-4.01 % of base) : 80295.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor:Equals(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor,int):ubyte:this (FullOpts)
         -11 (-4.00 % of base) : 222866.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
         -11 (-4.00 % of base) : 176342.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
         -20 (-3.94 % of base) : 146567.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:PutFixedLengthString(long,System.String,int):this (FullOpts)
          -2 (-3.70 % of base) : 35241.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
         -39 (-3.60 % of base) : 43999.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:GetNextDirective(System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax,ubyte]):Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax:this (FullOpts)
         -14 (-3.50 % of base) : 284282.dasm - System.Security.Cryptography.CryptoConfig:AddAlgorithm(System.Type,System.String[]) (FullOpts)
         -30 (-3.48 % of base) : 59799.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -90 (-3.42 % of base) : 160955.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 186473129 (overridden on cmd)
Total bytes of diff: 186513954 (overridden on cmd)
Total bytes of delta: 40825 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         383 : 212367.dasm (3.32 % of base)
         294 : 5990.dasm (2.50 % of base)
         273 : 8806.dasm (11.69 % of base)
         272 : 194568.dasm (2.31 % of base)
         272 : 205182.dasm (2.31 % of base)
         272 : 325943.dasm (2.31 % of base)
         272 : 481972.dasm (2.31 % of base)
         272 : 609976.dasm (2.31 % of base)
         269 : 443000.dasm (2.30 % of base)
         263 : 184404.dasm (2.20 % of base)
         236 : 376610.dasm (2.25 % of base)
         228 : 419549.dasm (1.93 % of base)
         203 : 343614.dasm (1.75 % of base)
         185 : 504489.dasm (1.62 % of base)
         180 : 270361.dasm (1.53 % of base)
         180 : 358076.dasm (1.53 % of base)
         180 : 437475.dasm (1.53 % of base)
         176 : 293036.dasm (1.49 % of base)
         176 : 298948.dasm (1.49 % of base)
         176 : 274124.dasm (1.49 % of base)

Top file improvements (bytes):
        -388 : 483549.dasm (-3.08 % of base)
        -341 : 279365.dasm (-2.82 % of base)
        -197 : 473736.dasm (-1.85 % of base)
        -164 : 588766.dasm (-8.60 % of base)
        -163 : 444213.dasm (-1.53 % of base)
        -160 : 25506.dasm (-1.50 % of base)
        -146 : 157223.dasm (-1.43 % of base)
        -135 : 444599.dasm (-2.52 % of base)
        -121 : 181427.dasm (-6.73 % of base)
        -116 : 11654.dasm (-2.09 % of base)
        -109 : 478301.dasm (-6.10 % of base)
        -107 : 376547.dasm (-14.68 % of base)
        -107 : 271314.dasm (-14.68 % of base)
        -107 : 78265.dasm (-2.76 % of base)
        -106 : 510006.dasm (-6.50 % of base)
        -105 : 341178.dasm (-5.68 % of base)
        -101 : 345590.dasm (-0.93 % of base)
         -97 : 506288.dasm (-5.21 % of base)
         -97 : 107178.dasm (-5.46 % of base)
         -96 : 298531.dasm (-0.79 % of base)

96 total files with Code Size differences (53 improved, 43 regressed), 20 unchanged.

Top method regressions (bytes):
         383 (3.32 % of base) : 212367.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         294 (2.50 % of base) : 5990.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         273 (11.69 % of base) : 8806.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
         272 (2.31 % of base) : 194568.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         272 (2.31 % of base) : 205182.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         272 (2.31 % of base) : 325943.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         272 (2.31 % of base) : 481972.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         272 (2.31 % of base) : 609976.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         269 (2.30 % of base) : 443000.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         263 (2.20 % of base) : 184404.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         236 (2.25 % of base) : 376610.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         228 (1.93 % of base) : 419549.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         203 (1.75 % of base) : 343614.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         185 (1.62 % of base) : 504489.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         180 (1.53 % of base) : 270361.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.53 % of base) : 358076.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.53 % of base) : 437475.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.49 % of base) : 293036.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.49 % of base) : 298948.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.49 % of base) : 274124.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -388 (-3.08 % of base) : 483549.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -341 (-2.82 % of base) : 279365.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -197 (-1.85 % of base) : 473736.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -164 (-8.60 % of base) : 588766.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitVariableDeclarator(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax):this (Tier1)
        -163 (-1.53 % of base) : 444213.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -160 (-1.50 % of base) : 25506.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -146 (-1.43 % of base) : 157223.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.BoundNode):this (Tier1)
        -135 (-2.52 % of base) : 444599.dasm - (dynamicClass):ReadPrimitiveContainerFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        -121 (-6.73 % of base) : 181427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -116 (-2.09 % of base) : 11654.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
        -109 (-6.10 % of base) : 478301.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -107 (-2.76 % of base) : 78265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:EarlyDecodeWellKnownAttribute(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]:this (Tier1)
        -107 (-14.68 % of base) : 376547.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
        -107 (-14.68 % of base) : 271314.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
        -106 (-6.50 % of base) : 510006.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -105 (-5.68 % of base) : 341178.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
        -101 (-0.93 % of base) : 345590.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -97 (-5.21 % of base) : 506288.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -97 (-5.46 % of base) : 107178.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -96 (-0.79 % of base) : 298531.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 regressions (percentages):
          10 (200.00 % of base) : 15296.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Instrumented Tier1)
          10 (200.00 % of base) : 31569.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (Tier1)
          10 (111.11 % of base) : 51187.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon]:get_Count():int:this (Tier1)
          10 (111.11 % of base) : 55260.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):uint:this (Tier1)
          10 (111.11 % of base) : 55264.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):System.__Canon:this (Tier1)
          10 (111.11 % of base) : 154135.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,System.__Canon]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
          10 (111.11 % of base) : 562424.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (Tier1)
          24 (104.35 % of base) : 30187.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (Tier1)
          24 (104.35 % of base) : 31461.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (Tier1)
          10 (66.67 % of base) : 42237.dasm - System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (Instrumented Tier1)
          10 (66.67 % of base) : 98187.dasm - System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (Tier1)
          10 (66.67 % of base) : 31688.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:this (Tier1)
          22 (59.46 % of base) : 158760.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
          10 (52.63 % of base) : 47582.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this (Tier1)
          10 (52.63 % of base) : 143488.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]:this (Tier1)
          10 (50.00 % of base) : 55480.dasm - Microsoft.CodeAnalysis.SyntaxList`1+EnumeratorImpl[System.__Canon]:.ctor(byref):this (Tier1)
          10 (50.00 % of base) : 330714.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:GetEnumerator():System.Net.Http.Headers.ObjectCollection`1+Enumerator[System.__Canon]:this (Tier1)
          10 (50.00 % of base) : 390180.dasm - System.Xml.Xsl.ListBase`1[System.__Canon]:GetEnumerator():System.Xml.Xsl.IListEnumerator`1[System.__Canon]:this (Tier1)
          12 (48.00 % of base) : 148082.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)
          12 (48.00 % of base) : 161317.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon]):this (Tier1)

Top method improvements (percentages):
        -107 (-14.68 % of base) : 376547.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
        -107 (-14.68 % of base) : 271314.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -82 (-13.08 % of base) : 230373.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -15 (-11.90 % of base) : 187641.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 247553.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 321817.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 168923.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 543092.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 220161.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 385076.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 449750.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 198006.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 310253.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 420338.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -15 (-11.90 % of base) : 623441.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
         -69 (-11.17 % of base) : 125374.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -67 (-10.74 % of base) : 136485.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -65 (-9.76 % of base) : 504027.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -53 (-8.91 % of base) : 94409.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
        -164 (-8.60 % of base) : 588766.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:VisitVariableDeclarator(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax):this (Tier1)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 102590267 (overridden on cmd)
Total bytes of diff: 102602457 (overridden on cmd)
Total bytes of delta: 12190 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         176 : 209070.dasm (4.94 % of base)
         110 : 208640.dasm (3.61 % of base)
         109 : 53299.dasm (7.06 % of base)
         105 : 242352.dasm (7.71 % of base)
          98 : 43746.dasm (1.53 % of base)
          98 : 49409.dasm (1.53 % of base)
          98 : 5157.dasm (1.54 % of base)
          94 : 172702.dasm (1.75 % of base)
          93 : 156273.dasm (8.31 % of base)
          92 : 154508.dasm (8.13 % of base)
          88 : 80401.dasm (2.91 % of base)
          80 : 5435.dasm (7.71 % of base)
          79 : 77870.dasm (25.24 % of base)
          77 : 243576.dasm (10.08 % of base)
          75 : 47339.dasm (5.47 % of base)
          75 : 4161.dasm (22.19 % of base)
          72 : 282061.dasm (2.03 % of base)
          72 : 52303.dasm (4.60 % of base)
          72 : 45947.dasm (4.62 % of base)
          69 : 242324.dasm (3.02 % of base)

Top file improvements (bytes):
        -159 : 208747.dasm (-3.01 % of base)
        -131 : 6068.dasm (-2.37 % of base)
         -93 : 45046.dasm (-1.84 % of base)
         -81 : 288339.dasm (-2.42 % of base)
         -81 : 285633.dasm (-2.42 % of base)
         -81 : 288338.dasm (-2.42 % of base)
         -69 : 5891.dasm (-3.32 % of base)
         -69 : 63984.dasm (-1.23 % of base)
         -58 : 294563.dasm (-2.29 % of base)
         -54 : 296654.dasm (-1.51 % of base)
         -49 : 91476.dasm (-1.77 % of base)
         -48 : 3782.dasm (-0.50 % of base)
         -41 : 282301.dasm (-2.84 % of base)
         -40 : 282361.dasm (-3.18 % of base)
         -38 : 288322.dasm (-2.48 % of base)
         -36 : 268391.dasm (-0.80 % of base)
         -35 : 288363.dasm (-2.14 % of base)
         -35 : 288364.dasm (-2.11 % of base)
         -35 : 288362.dasm (-2.15 % of base)
         -34 : 278550.dasm (-5.55 % of base)

90 total files with Code Size differences (44 improved, 46 regressed), 20 unchanged.

Top method regressions (bytes):
         176 (4.94 % of base) : 209070.dasm - (dynamicClass):ReadDerivedTypeWithDifferentOverridesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
         110 (3.61 % of base) : 208640.dasm - (dynamicClass):ReadWithNullablesFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
         109 (7.06 % of base) : 53299.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         105 (7.71 % of base) : 242352.dasm - System.Text.Encodings.Web.Tests.JavaScriptEncoderTests:InvalidFindFirstCharacterToEncode(ushort,System.Text.Encodings.Web.JavaScriptEncoder):this (FullOpts)
          98 (1.53 % of base) : 43746.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)
          98 (1.53 % of base) : 49409.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)
          98 (1.54 % of base) : 5157.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)
          94 (1.75 % of base) : 172702.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithGetSetArrayMembers:Read3_TypeWithGetSetArrayMembers(ubyte,ubyte):SerializationTypes.TypeWithGetSetArrayMembers:this (FullOpts)
          93 (8.31 % of base) : 156273.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          92 (8.13 % of base) : 154508.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
          88 (2.91 % of base) : 80401.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[System.__Canon]:AddBefore_LLNode_LLNode():this (FullOpts)
          80 (7.71 % of base) : 5435.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:Bind(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],Microsoft.CodeAnalysis.MetadataReferenceResolver,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]:this (FullOpts)
          79 (25.24 % of base) : 77870.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:DequeueEnqueue(System.__Canon,System.__Canon):System.__Canon:this (FullOpts)
          77 (10.08 % of base) : 243576.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
          75 (5.47 % of base) : 47339.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          75 (22.19 % of base) : 4161.dasm - NuGet.Frameworks.NuGetFramework:RawParse(System.String):System.Tuple`3[System.String,System.String,System.String] (FullOpts)
          72 (4.60 % of base) : 52303.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasVariantConversionNoCycleCheck(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte:this (FullOpts)
          72 (4.62 % of base) : 45947.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasVariantConversionNoCycleCheck(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte:this (FullOpts)
          72 (2.03 % of base) : 282061.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex368_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          69 (3.02 % of base) : 242324.dasm - System.Text.Encodings.Web.Tests.JavaScriptEncoderTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (FullOpts)

Top method improvements (bytes):
        -159 (-3.01 % of base) : 208747.dasm - (dynamicClass):ReadPrimitiveContainerFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
        -131 (-2.37 % of base) : 6068.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -93 (-1.84 % of base) : 45046.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         -81 (-2.42 % of base) : 285633.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27707_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -81 (-2.42 % of base) : 288338.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28240_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -81 (-2.42 % of base) : 288339.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28241_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -69 (-3.32 % of base) : 5891.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -69 (-1.23 % of base) : 63984.dasm - System.Xml.Schema.Compiler:CompileLocalAttributes(System.Xml.Schema.XmlSchemaComplexType,System.Xml.Schema.XmlSchemaComplexType,System.Xml.Schema.XmlSchemaObjectCollection,System.Xml.Schema.XmlSchemaAnyAttribute,int):this (FullOpts)
         -58 (-2.29 % of base) : 294563.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29512_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -54 (-1.51 % of base) : 296654.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30584_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -49 (-1.77 % of base) : 91476.dasm - System.Configuration.BaseConfigurationRecord:Init(System.Configuration.Internal.IInternalConfigRoot,System.Configuration.BaseConfigurationRecord,System.String,System.String):this (FullOpts)
         -48 (-0.50 % of base) : 3782.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -41 (-2.84 % of base) : 282301.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex730_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -40 (-3.18 % of base) : 282361.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27120_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-2.48 % of base) : 288322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28224_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -36 (-0.80 % of base) : 268391.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (FullOpts)
         -35 (-2.15 % of base) : 288362.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28298_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -35 (-2.14 % of base) : 288363.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28301_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -35 (-2.11 % of base) : 288364.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28304_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -34 (-5.55 % of base) : 278550.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)

Top method regressions (percentages):
          10 (200.00 % of base) : 3394.dasm - System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
          10 (111.11 % of base) : 36915.dasm - Grace.Data.Immutable.ImmutableHashTree`2+<>c[System.__Canon,System.__Canon]:<get_Values>b__22_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 6445.dasm - Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon]:get_Count():int:this (FullOpts)
          10 (111.11 % of base) : 10411.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):uint:this (FullOpts)
          10 (111.11 % of base) : 10412.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 70197.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<EqualButPossiblyDifferentKeys_Found>b__34_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 70198.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<EqualButPossiblyDifferentKeys_Found>b__34_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 73813.dasm - System.Collections.Frozen.Tests.FrozenFromKnownValuesTests+<>c__7`2[int,System.__Canon]:<FrozenSetWorker>b__7_0(System.Collections.Generic.KeyValuePair`2[int,System.__Canon]):int:this (FullOpts)
          10 (111.11 % of base) : 73853.dasm - System.Collections.Frozen.Tests.FrozenFromKnownValuesTests+<>c__7`2[uint,System.__Canon]:<FrozenSetWorker>b__7_0(System.Collections.Generic.KeyValuePair`2[uint,System.__Canon]):uint:this (FullOpts)
          10 (111.11 % of base) : 72096.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,int]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,int]):int:this (FullOpts)
          10 (111.11 % of base) : 71939.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,System.__Canon]:<get_Keys>b__30_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 30343.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Node+<>c[System.__Canon,System.__Canon]:<get_Values>b__32_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 77032.dasm - System.Collections.Tests.Dictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<IReadOnlyDictionary_Generic_Values_ContainsAllCorrectValues>b__26_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 68779.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<IDictionary_Generic_Keys_ContainsAllCorrectKeys>b__33_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 68683.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2+<>c[System.__Canon,System.__Canon]:<IDictionary_Generic_Values_ContainsAllCorrectValues>b__38_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 138943.dasm - System.Linq.AggregationMinMaxHelpers`1+<>c[System.__Canon]:<MakeResultSelectorFunction>b__5_0(System.Linq.Parallel.Pair`2[ubyte,System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 256646.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 270889.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2+<>c[System.__Canon,System.Text.Json.JsonElement]:<.ctor>b__3_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Text.Json.JsonElement]):System.__Canon:this (FullOpts)
          24 (104.35 % of base) : 2658.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]):this (FullOpts)
          24 (104.35 % of base) : 2774.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)

Top method improvements (percentages):
         -19 (-5.56 % of base) : 278126.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
         -34 (-5.55 % of base) : 278550.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
          -5 (-4.55 % of base) : 40115.dasm - System.Runtime.Serialization.ObjectHolderListEnumerator:MoveNext():ubyte:this (FullOpts)
         -19 (-4.38 % of base) : 70567.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -11 (-4.00 % of base) : 64834.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
         -11 (-4.00 % of base) : 205675.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
         -12 (-3.93 % of base) : 33196.dasm - Moq.MatcherFactory:CreateMatchers(System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.Expression],System.Reflection.ParameterInfo[]):Moq.Pair`2[Moq.IMatcher[],System.Linq.Expressions.Expression[]] (FullOpts)
         -29 (-3.77 % of base) : 6179.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
          -2 (-3.70 % of base) : 12487.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          -2 (-3.70 % of base) : 51125.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:IsInDocumentationComment(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          -5 (-3.52 % of base) : 127940.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual[ubyte](ubyte[],ubyte[],int):ubyte (FullOpts)
          -5 (-3.52 % of base) : 128054.dasm - System.IO.Compression.Tests.ZipFileTestBase:ArraysEqual[ubyte](ubyte[],ubyte[],int):ubyte (FullOpts)
         -69 (-3.32 % of base) : 5891.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -16 (-3.29 % of base) : 23071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:IsDefined(System.String):int:this (FullOpts)
         -16 (-3.29 % of base) : 48167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:IsDefined(System.String):int:this (FullOpts)
         -16 (-3.29 % of base) : 53874.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:IsDefined(System.String):int:this (FullOpts)
          -5 (-3.25 % of base) : 159393.dasm - System.Net.Mime.ByteEncoder:AppendEncodedCodepoint(ubyte[],int):this (FullOpts)
          -5 (-3.25 % of base) : 158897.dasm - System.Net.Mime.ByteEncoder:AppendEncodedCodepoint(ubyte[],int):this (FullOpts)
         -20 (-3.23 % of base) : 56193.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanXmlAttributeText(byref):this (FullOpts)
         -11 (-3.23 % of base) : 102291.dasm - System.Diagnostics.Process:GetProcessesByName(System.String,System.String):System.Diagnostics.Process[] (FullOpts)


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10958137 (overridden on cmd)
Total bytes of diff: 10960178 (overridden on cmd)
Total bytes of delta: 2041 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         137 : 5009.dasm (2.23 % of base)
          82 : 34977.dasm (6.68 % of base)
          75 : 30466.dasm (5.36 % of base)
          72 : 26623.dasm (4.60 % of base)
          64 : 20012.dasm (5.85 % of base)
          57 : 20345.dasm (5.57 % of base)
          55 : 21734.dasm (13.25 % of base)
          52 : 19899.dasm (0.83 % of base)
          52 : 21530.dasm (4.84 % of base)
          46 : 1266.dasm (1.68 % of base)
          44 : 16506.dasm (4.59 % of base)
          36 : 33774.dasm (8.00 % of base)
          36 : 7587.dasm (7.64 % of base)
          33 : 17458.dasm (1.76 % of base)
          33 : 8731.dasm (7.35 % of base)
          33 : 17253.dasm (3.91 % of base)
          31 : 152.dasm (2.80 % of base)
          30 : 1493.dasm (3.89 % of base)
          30 : 34974.dasm (11.95 % of base)
          30 : 545.dasm (5.15 % of base)

Top file improvements (bytes):
        -182 : 21007.dasm (-3.26 % of base)
        -125 : 11280.dasm (-1.50 % of base)
        -117 : 4839.dasm (-1.64 % of base)
         -96 : 14783.dasm (-1.59 % of base)
         -48 : 31802.dasm (-0.50 % of base)
         -34 : 13971.dasm (-3.86 % of base)
         -34 : 19060.dasm (-5.55 % of base)
         -29 : 21400.dasm (-3.77 % of base)
         -27 : 21588.dasm (-0.57 % of base)
         -26 : 15667.dasm (-0.38 % of base)
         -26 : 25539.dasm (-1.73 % of base)
         -24 : 23896.dasm (-1.77 % of base)
         -23 : 31591.dasm (-0.52 % of base)
         -22 : 2154.dasm (-1.67 % of base)
         -21 : 14815.dasm (-1.03 % of base)
         -21 : 22780.dasm (-2.47 % of base)
         -21 : 14711.dasm (-1.54 % of base)
         -21 : 43.dasm (-3.08 % of base)
         -20 : 1119.dasm (-0.09 % of base)
         -20 : 1410.dasm (-2.27 % of base)

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

Top method regressions (bytes):
         137 (2.23 % of base) : 5009.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)
          82 (6.68 % of base) : 34977.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalCube2`1[System.__Canon]:TryCreatePoint(System.String[],System.String):Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalPointResult`1[System.__Canon]:this (FullOpts)
          75 (5.36 % of base) : 30466.dasm - Microsoft.CodeAnalysis.Emit.PEModuleBuilder`9+<GetTopLevelTypeDefinitions>d__23[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          72 (4.60 % of base) : 26623.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasVariantConversionNoCycleCheck(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte:this (FullOpts)
          64 (5.85 % of base) : 20012.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          57 (5.57 % of base) : 20345.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
          55 (13.25 % of base) : 21734.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
          52 (0.83 % of base) : 19899.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)
          52 (4.84 % of base) : 21530.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
          46 (1.68 % of base) : 1266.dasm - BepuPhysics.IslandSleeper:CollectIsland[BepuPhysics.IslandSleeper+TraversalTest`1[BepuPhysics.IslandSleeper+SleepPredicate]](BepuUtilities.Memory.BufferPool,int,byref,byref,byref):ubyte:this (FullOpts)
          44 (4.59 % of base) : 16506.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
          36 (7.64 % of base) : 7587.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,FSharp.Compiler.Text.Range]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,FSharp.Compiler.Text.Range][],int):this (FullOpts)
          36 (8.00 % of base) : 33774.dasm - System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (FullOpts)
          33 (1.76 % of base) : 17458.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryRemoveInternal(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
          33 (3.91 % of base) : 17253.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerable[System.__Canon]:GrabChunk_Buffered(System.Collections.Generic.KeyValuePair`2[long,System.__Canon][],int,byref):ubyte:this (FullOpts)
          33 (7.35 % of base) : 8731.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Remove(long):ubyte:this (FullOpts)
          31 (2.80 % of base) : 152.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
          30 (3.89 % of base) : 1493.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
          30 (11.95 % of base) : 34974.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalCube2`1[System.__Canon]:TryGetOrCreatePoint(System.String[]):Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.MultidimensionalPointResult`1[System.__Canon]:this (FullOpts)
          30 (5.15 % of base) : 545.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)

Top method improvements (bytes):
        -182 (-3.26 % of base) : 21007.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -125 (-1.50 % of base) : 11280.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
        -117 (-1.64 % of base) : 4839.dasm - FSharp.Compiler.LexFilter:undentationLimit@727(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+Context,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):FSharp.Compiler.LexFilter+PositionWithColumn (FullOpts)
         -96 (-1.59 % of base) : 14783.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
         -48 (-0.50 % of base) : 31802.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -34 (-5.55 % of base) : 19060.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
         -34 (-3.86 % of base) : 13971.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,uint,System.Number+HexParser`1[uint]](System.ReadOnlySpan`1[ushort],int,byref):int (FullOpts)
         -29 (-3.77 % of base) : 21400.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
         -27 (-0.57 % of base) : 21588.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
         -26 (-1.73 % of base) : 25539.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte] (FullOpts)
         -26 (-0.38 % of base) : 15667.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)
         -24 (-1.77 % of base) : 23896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
         -23 (-0.52 % of base) : 31591.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -22 (-1.67 % of base) : 2154.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -21 (-2.47 % of base) : 22780.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -21 (-1.03 % of base) : 14815.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:SixLabors.ImageSharp.Processing.Processors.Dithering.IDither.ApplyPaletteDither[SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1+DitherProcessor[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
         -21 (-1.54 % of base) : 14711.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetQuantizedColor(SixLabors.ImageSharp.PixelFormats.Rgba32,byref):ubyte:this (FullOpts)
         -21 (-3.08 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         -20 (-2.27 % of base) : 1410.dasm - BepuPhysics.BatchCompressor:DoJob(byref,int,BepuUtilities.Memory.BufferPool):this (FullOpts)
         -20 (-0.09 % of base) : 1119.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)

Top method regressions (percentages):
          11 (220.00 % of base) : 3356.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators+dictRefType@200[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
          10 (200.00 % of base) : 16571.dasm - System.Threading.Tasks.Task`1[System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon]:this (FullOpts)
          11 (122.22 % of base) : 4620.dasm - Microsoft.FSharp.Collections.ListModule+groupByRefType@560-4[System.__Canon]:Invoke(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]):System.__Canon:this (FullOpts)
          10 (111.11 % of base) : 19929.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_0(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):uint:this (FullOpts)
          10 (111.11 % of base) : 19931.dasm - Roslyn.Utilities.ImmutableSetWithInsertionOrder`1+<>c[System.__Canon]:<get_InInsertionOrder>b__10_1(System.Collections.Generic.KeyValuePair`2[System.__Canon,uint]):System.__Canon:this (FullOpts)
          24 (104.35 % of base) : 18073.dasm - System.Collections.Immutable.ImmutableDictionary`2+<>c[System.__Canon,int]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,int]]):this (FullOpts)
          24 (104.35 % of base) : 18022.dasm - System.Collections.Immutable.ImmutableHashSet`1+<>c[System.__Canon]:<.cctor>b__91_0(System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]):this (FullOpts)
          10 (66.67 % of base) : 18190.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:ToImmutable():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          22 (59.46 % of base) : 26275.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.ValueTuple`2[System.__Canon,ubyte],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,ubyte],byref):ubyte:this (FullOpts)
          10 (52.63 % of base) : 18166.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[System.__Canon]:this (FullOpts)
          12 (52.17 % of base) : 34402.dasm - System.Collections.Generic.SortedDictionary`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
          11 (50.00 % of base) : 4617.dasm - Microsoft.FSharp.Collections.ListModule+groupByRefType@560-3[System.__Canon,System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon]:this (FullOpts)
          10 (47.62 % of base) : 29614.dasm - Microsoft.CodeAnalysis.Collections.OrderedSet`1[System.__Canon]:System.Collections.Generic.IEnumerable<T>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts)
          10 (47.62 % of base) : 2699.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Length():int:this (FullOpts)
          12 (44.44 % of base) : 20034.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1+Builder[System.__Canon]:ToImmutable():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]:this (FullOpts)
          10 (40.00 % of base) : 2652.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,int]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
          11 (39.29 % of base) : 34405.dasm - System.Collections.Generic.SortedDictionary`2+KeyValuePairComparer[int,System.__Canon]:Compare(System.Collections.Generic.KeyValuePair`2[int,System.__Canon],System.Collections.Generic.KeyValuePair`2[int,System.__Canon]):int:this (FullOpts)
          22 (38.60 % of base) : 22656.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:ContainsKey(System.__Canon):ubyte:this (FullOpts)
          10 (38.46 % of base) : 12532.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor():this (FullOpts)
          11 (37.93 % of base) : 6779.dasm - <StartupCode$FSharp-Compiler-Service>.$Illib+AddMany@1150[System.__Canon,System.__Canon]:Invoke(Internal.Utilities.Library.LayeredMultiMap`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):Internal.Utilities.Library.LayeredMultiMap`2[System.__Canon,System.__Canon]:this (FullOpts)

Top method improvements (percentages):
         -19 (-5.56 % of base) : 29991.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
         -34 (-5.55 % of base) : 19060.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
          -8 (-4.04 % of base) : 15001.dasm - SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelDataProvider:CreateComplexKernels(System.Numerics.Vector4[],int,int,float):SixLabors.ImageSharp.Complex64[][] (FullOpts)
         -34 (-3.86 % of base) : 13971.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,uint,System.Number+HexParser`1[uint]](System.ReadOnlySpan`1[ushort],int,byref):int (FullOpts)
         -29 (-3.77 % of base) : 21400.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
        -182 (-3.26 % of base) : 21007.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -20 (-3.23 % of base) : 19556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanXmlAttributeText(byref):this (FullOpts)
         -11 (-3.10 % of base) : 27933.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):this (FullOpts)
         -21 (-3.08 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          -6 (-2.99 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
         -16 (-2.77 % of base) : 19099.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:IsDefined(System.String):int:this (FullOpts)
         -19 (-2.68 % of base) : 5670.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
         -11 (-2.65 % of base) : 34085.dasm - System.Management.Automation.PSMethod:GetMethodGroupType(System.Reflection.MethodInfo):System.Type (FullOpts)
         -21 (-2.47 % of base) : 22780.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -6 (-2.28 % of base) : 602.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (FullOpts)
         -20 (-2.27 % of base) : 1410.dasm - BepuPhysics.BatchCompressor:DoJob(byref,int,BepuUtilities.Memory.BufferPool):this (FullOpts)
          -5 (-2.13 % of base) : 17537.dasm - Microsoft.ML.Internal.Utilities.SequencePool:UIntArrayToLeb128(uint[],int,int,ubyte[],byref) (FullOpts)
          -7 (-1.97 % of base) : 15181.dasm - System.Collections.Generic.Dictionary`2+ValueCollection[System.__Canon,Microsoft.ML.SchemaShape+Column]:CopyTo(Microsoft.ML.SchemaShape+Column[],int):this (FullOpts)
          -7 (-1.97 % of base) : 27814.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeExplicitParameterTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,byref):ubyte:this (FullOpts)
          -4 (-1.89 % of base) : 21158.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:EarlyDecodeWellKnownAttributeTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):this (FullOpts)