Assembly Diffs

linux arm

Diffs are based on 1,449,330 contexts (345,734 MinOpts, 1,103,596 FullOpts).

MISSED contexts: 55,656 (3.70%)

Overall (+306 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 13,690,874 +242
benchmarks.run_pgo.linux.arm.checked.mch 24,676,696 +70
benchmarks.run_tiered.linux.arm.checked.mch 17,982,904 +278
coreclr_tests.run.linux.arm.checked.mch 321,240,776 +90
libraries.crossgen2.linux.arm.checked.mch 35,803,568 -72
libraries.pmi.linux.arm.checked.mch 49,871,588 +422
libraries_tests.run.linux.arm.Release.mch 17,138,182 -1,874
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,850,820 +1,366
realworld.run.linux.arm.checked.mch 13,596,898 -216

FullOpts (+306 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 13,378,298 +242
benchmarks.run_pgo.linux.arm.checked.mch 19,755,544 +70
benchmarks.run_tiered.linux.arm.checked.mch 10,615,614 +278
coreclr_tests.run.linux.arm.checked.mch 108,805,826 +90
libraries.crossgen2.linux.arm.checked.mch 35,802,338 -72
libraries.pmi.linux.arm.checked.mch 49,765,364 +422
libraries_tests.run.linux.arm.Release.mch 16,541,122 -1,874
librariestestsnotieredcompilation.run.linux.arm.Release.mch 83,821,050 +1,366
realworld.run.linux.arm.checked.mch 13,161,826 -216

Example diffs

benchmarks.run.linux.arm.checked.mch

-22 (-2.27%) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)

@@ -9,53 +9,53 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <BenchmarksGame.FannkuchRedux_2> ; V01 arg1 [V01,T21] ( 23, 81.50) int -> r4 single-def
-; V02 loc0 [V02,T15] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]> -; V03 loc1 [V03,T30] ( 11, 36.25) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]> -; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x00] class-hnd exact spill-single-def <int[]> -; V05 loc3 [V05,T33] ( 5, 23 ) int -> [sp+0x2C]
+; V02 loc0 [V02,T17] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]> +; V03 loc1 [V03,T31] ( 11, 36.25) ref -> [sp+0x08] class-hnd exact spill-single-def <int[]> +; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]> +; V05 loc3 [V05,T34] ( 5, 23 ) int -> [sp+0x2C]
; V06 loc4 [V06,T40] ( 4, 6 ) int -> [sp+0x28] ; V07 loc5 [V07,T41] ( 4, 6 ) int -> [sp+0x24] ; V08 loc6 [V08,T24] ( 3, 65 ) int -> r10 single-def
-; V09 loc7 [V09,T32] ( 18, 29.12) int -> r1
+; V09 loc7 [V09,T33] ( 18, 29.12) int -> r1
; V10 loc8 [V10,T19] ( 8,104 ) int -> r2
-; V11 loc9 [V11,T29] ( 6, 40 ) int -> [sp+0x20]
+; V11 loc9 [V11,T29] ( 6, 45.92) int -> [sp+0x20]
; V12 loc10 [V12,T23] ( 12, 66.48) int -> r12 ; V13 loc11 [V13,T26] ( 3, 48 ) int -> r9 ; V14 loc12 [V14,T01] ( 6,328 ) int -> r8 ; V15 loc13 [V15,T02] ( 6,328 ) int -> r2
-; V16 loc14 [V16,T17] ( 2,128 ) int -> r7
+; V16 loc14 [V16,T18] ( 2,128 ) int -> r7
; V17 loc15 [V17,T39] ( 2, 8 ) int -> r3 ; V18 loc16 [V18,T22] ( 6, 80 ) int -> registers
-; V19 loc17 [V19,T00] ( 23,372.92) int -> r12 -; V20 loc18 [V20,T16] ( 5,132 ) int -> registers
+; V19 loc17 [V19,T00] ( 23,428.28) int -> r12 +; V20 loc18 [V20,T14] ( 5,159.68) int -> registers
; V21 loc19 [V21,T04] ( 16,289.27) int -> registers ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T31] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V23 tmp1 [V23,T32] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
; V24 tmp2 [V24,T05] ( 6,256.00) int -> registers "Strict ordering of exceptions for Array store" ; V25 tmp3 [V25,T38] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
-; V26 tmp4 [V26,T34] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V26 tmp4 [V26,T35] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
; V27 tmp5 [V27,T25] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store" ; V28 tmp6 [V28,T06] ( 2,256 ) int -> lr "Strict ordering of exceptions for Array store" ; V29 cse0 [V29,T03] ( 15,325.55) byref -> registers hoist multi-def "CSE - aggressive" ; V30 cse1 [V30,T13] ( 12,163.40) int -> registers multi-def "CSE - aggressive"
-; V31 cse2 [V31,T14] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
+; V31 cse2 [V31,T15] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
; V32 cse3 [V32,T07] ( 21,217.59) byref -> registers hoist multi-def "CSE - aggressive"
-; V33 cse4 [V33,T18] ( 11,109.18) byref -> registers hoist multi-def "CSE - moderate"
+; V33 cse4 [V33,T16] ( 11,136.86) byref -> registers hoist multi-def "CSE - moderate"
; V34 cse5 [V34,T08] ( 3,192 ) int -> r0 "CSE - aggressive" ; V35 cse6 [V35,T09] ( 3,192 ) int -> r6 "CSE - aggressive" ; V36 cse7 [V36,T10] ( 4,190.08) int -> r2 "CSE - aggressive" ; V37 cse8 [V37,T11] ( 3,188.18) int -> r9 "CSE - aggressive"
-; V38 cse9 [V38,T12] ( 3,188.18) int -> lr "CSE - aggressive"
+; V38 cse9 [V38,T12] ( 3,188.18) int -> r6 "CSE - aggressive"
; V39 cse10 [V39,T20] ( 3, 95.04) int -> r12 "CSE - moderate" ; V40 cse11 [V40,T27] ( 3, 48 ) int -> r8 "CSE - moderate" ; V41 cse12 [V41,T28] ( 3, 47.52) int -> r8 "CSE - moderate"
-; V42 cse13 [V42,T35] ( 4, 15.84) int -> r3 "CSE - moderate" -; V43 cse14 [V43,T36] ( 9, 13.76) int -> [sp+0x1C] hoist multi-def "CSE - moderate" -; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate" -; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate" -; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x10] spill-single-def "CSE - moderate" -; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate" -; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x08] spill-single-def "CSE - moderate"
+; V42 cse13 [V42,T36] ( 4, 15.84) int -> r3 "CSE - moderate" +; V43 cse14 [V43,T30] ( 9, 41.44) int -> lr hoist multi-def "CSE - moderate" +; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x1C] spill-single-def "CSE - moderate" +; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate" +; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate" +; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x10] spill-single-def "CSE - moderate" +; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
; V49 cse20 [V49,T47] ( 4, 0.16) int -> r2 "CSE - conservative" ; ; Lcl frame size = 52 @@ -88,7 +88,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- str r6, [sp+0x04]
+ str r6, [sp+0x08]
; GC ptr vars +{V03} mov r1, r4 movw r0, 0xd1ff @@ -99,7 +99,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp]
+ str r0, [sp+0x04]
; GC ptr vars +{V04} movs r7, 1 str r7, [sp+0x2C] // [V05 loc3] @@ -112,7 +112,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp r4, 0 ble SHORT G_M61974_IG06 ;; size=98 bbWeight=1 PerfScore 32.00
-G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002040000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002080000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r3, [r5+0x04] cmp r3, r4 blt SHORT G_M61974_IG05 @@ -161,7 +161,7 @@ G_M61974_IG05: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 str r1, [r12+r2] adds r1, r1, 1 cmp r1, r4
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
blt SHORT G_M61974_IG05 ;; size=60 bbWeight=0.04 PerfScore 0.76 G_M61974_IG06: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz @@ -200,10 +200,10 @@ G_M61974_IG09: ; bbWeight=15.84, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=400 cmp r12, r4 blt SHORT G_M61974_IG09 ;; size=20 bbWeight=15.84 PerfScore 95.04
-G_M61974_IG10: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M61974_IG10: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 lr] b SHORT G_M61974_IG13
- ;; size=2 bbWeight=2 PerfScore 2.00
+ ;; size=2 bbWeight=7.92 PerfScore 7.92
G_M61974_IG11: ; bbWeight=0.01, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref add lr, r5, 8 ; byrRegs +[lr] @@ -224,11 +224,11 @@ G_M61974_IG12: ; bbWeight=0.16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=4002 cmp r12, r4 blt SHORT G_M61974_IG12 ;; size=40 bbWeight=0.16 PerfScore 1.92
-G_M61974_IG13: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
+G_M61974_IG13: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1 lr] mov lr, 1 str lr, [sp+0x20] // [V11 loc9]
- ;; size=8 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=7.92 PerfScore 15.84
G_M61974_IG14: ; bbWeight=16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6+0x04] cmp r2, r1 @@ -271,9 +271,9 @@ G_M61974_IG17: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byr ldr lr, [sp+0x20] // [V11 loc9] add lr, lr, 1 str lr, [sp+0x20] // [V11 loc9]
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
; gcrRegs +[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] b SHORT G_M61974_IG14 ;; size=20 bbWeight=16 PerfScore 112.00 @@ -294,7 +294,7 @@ G_M61974_IG19: ; bbWeight=2, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b ble SHORT G_M61974_IG22 str lr, [sp+0x28] // [V06 loc4] str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] ;; size=40 bbWeight=2 PerfScore 26.00 G_M61974_IG20: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz @@ -317,7 +317,7 @@ G_M61974_IG21: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {} G_M61974_IG22: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] b SHORT G_M61974_IG20 ;; size=6 bbWeight=1 PerfScore 3.00 @@ -333,21 +333,20 @@ G_M61974_IG23: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {} str r1, [r5+0x0C] str lr, [r5+0x10] movs r7, 1
+ str r7, [sp+0x2C] // [V05 loc3]
mov r12, 2 cmp r4, 2
- str r7, [sp+0x2C] // [V05 loc3]
ble G_M61974_IG06 ;; size=42 bbWeight=8 PerfScore 120.00 G_M61974_IG24: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
ldr lr, [r0+0x04]
- str lr, [sp+0x1C] // [V43 cse14]
cmp lr, r4
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
add r1, r0, 8 ; byrRegs +[r1]
- ;; size=20 bbWeight=4 PerfScore 28.00
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M61974_IG25: ; bbWeight=63.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r0] lsl r2, r12, 2 @@ -362,7 +361,7 @@ G_M61974_IG26: ; bbWeight=31.68, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 { ldr r8, [r5+0x08] mov r9, 0 cmp r12, 0
- blt SHORT G_M61974_IG32
+ blt SHORT G_M61974_IG33
;; size=18 bbWeight=31.68 PerfScore 158.40 G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz cmp r3, r12 @@ -372,47 +371,52 @@ G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r ;; size=8 bbWeight=3.96 PerfScore 11.88 G_M61974_IG28: ; bbWeight=62.73, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz ; gcrRegs -[r6]
- add lr, r9, 1 - cmp lr, r3
+ add r6, r9, 1 + cmp r6, r3
bhs G_M61974_IG44 lsl r9, r9, 2
- add r6, r9, 4 - ldr r6, [r0+r6] - str r6, [r0+r9] - mov r9, lr
+ add r7, r9, 4 + ldr r7, [r0+r7] + str r7, [r0+r9] + mov r9, r6
cmp r9, r12 ble SHORT G_M61974_IG28 ;; size=30 bbWeight=62.73 PerfScore 627.26 G_M61974_IG29: ; bbWeight=31.68, gcrefRegs=0020 {r5}, byrefRegs=0002 {r1}, byref, isz ; byrRegs -[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
- b SHORT G_M61974_IG32
+ b SHORT G_M61974_IG33
;; size=4 bbWeight=31.68 PerfScore 63.36 G_M61974_IG30: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref add r0, r5, 8 ; byrRegs +[r0] ;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0060 {r5 r6}, byrefRegs=0003 {r0 r1}, byref, isz - add lr, r9, 1 - str lr, [sp+0x08] // [V48 cse19] - cmp lr, r3 - bhs G_M61974_IG44 - lsl lr, r9, 2 - str lr, [sp+0x0C] // [V47 cse18] - add lr, lr, 4 - ldr lr, [r0+lr]
+G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz + ; gcrRegs -[r6] + add r6, r9, 1 + str r6, [sp+0x0C] // [V48 cse19] + cmp r6, r3
...

-28 (-1.61%) : 12745.dasm - System.Text.RegularExpressions.Generated.FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952_Regex13+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)

@@ -8,151 +8,151 @@ ; 0 inlinees with PGO data; 44 single block inlinees; 32 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 54,214.25) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner> -; V01 arg1 [V01,T80] ( 4, 4 ) struct ( 8) [sp+0x88] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 loc0 [V02,T01] ( 49,130.50) int -> [sp+0x5C] -; V03 loc1 [V03,T84] ( 6, 5 ) int -> [sp+0x58] spill-single-def -; V04 loc2 [V04,T60] ( 4, 14 ) int -> r8 -; V05 loc3 [V05,T48] ( 5, 13 ) int -> [sp+0x54] -; V06 loc4 [V06,T18] ( 2, 32.50) int -> [sp+0x50] spill-single-def -; V07 loc5 [V07,T26] ( 7, 24.50) int -> [sp+0x4C] -; V08 loc6 [V08,T62] ( 5, 13 ) int -> [sp+0x48] -; V09 loc7 [V09,T30] ( 7, 27 ) int -> [sp+0x44] -; V10 loc8 [V10 ] ( 9, 23 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 53,156.75) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner> +; V01 arg1 [V01,T70] ( 4, 4 ) struct ( 8) [sp+0x78] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 loc0 [V02,T01] ( 49,123.50) int -> [sp+0x4C] +; V03 loc1 [V03,T75] ( 6, 5 ) int -> [sp+0x48] spill-single-def +; V04 loc2 [V04,T47] ( 4, 14 ) int -> r8 +; V05 loc3 [V05,T58] ( 5, 6 ) int -> r10 +; V06 loc4 [V06,T78] ( 2, 4.50) int -> [sp+0x44] spill-single-def +; V07 loc5 [V07,T68] ( 7, 3.50) int -> [sp+0x40] +; V08 loc6 [V08,T91] ( 5, 2.50) int -> [sp+0x3C] +; V09 loc7 [V09,T22] ( 7, 27 ) int -> [sp+0x38] +; V10 loc8 [V10 ] ( 9, 23 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed ld-addr-op
;* V11 loc9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V12 loc10 [V12,T23] ( 8, 30 ) int -> r7 -; V13 loc11 [V13,T47] ( 4, 18 ) int -> r7 -; V14 loc12 [V14,T61] ( 4, 14 ) int -> r8 -; V15 loc13 [V15,T24] ( 8, 30 ) int -> [sp+0x3C] -; V16 loc14 [V16,T25] ( 8, 30 ) int -> [sp+0x38]
+; V12 loc10 [V12,T38] ( 8, 16 ) int -> r7 +; V13 loc11 [V13,T35] ( 4, 18 ) int -> r7 +; V14 loc12 [V14,T48] ( 4, 14 ) int -> r8 +; V15 loc13 [V15,T16] ( 8, 30 ) int -> [sp+0x30] +; V16 loc14 [V16,T17] ( 8, 30 ) int -> [sp+0x2C]
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V18 tmp1 [V18,T15] ( 3, 36 ) byref -> r0 "impAppendStmt"
+; V18 tmp1 [V18,T10] ( 3, 36 ) byref -> r0 "impAppendStmt"
;* V19 tmp2 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V20 tmp3 [V20,T92] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V21 tmp4 [V21,T73] ( 2, 8 ) int -> lr "dup spill" -; V22 tmp5 [V22,T50] ( 4, 16 ) int -> r2 "dup spill" -; V23 tmp6 [V23,T63] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>> -; V24 tmp7 [V24,T51] ( 4, 16 ) int -> r3 "dup spill" -; V25 tmp8 [V25,T64] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+;* V20 tmp3 [V20,T85] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V21 tmp4 [V21,T63] ( 2, 8 ) int -> lr "dup spill" +; V22 tmp5 [V22,T39] ( 4, 16 ) int -> r2 "dup spill" +; V23 tmp6 [V23,T49] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>> +; V24 tmp7 [V24,T40] ( 4, 16 ) int -> r3 "dup spill" +; V25 tmp8 [V25,T50] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V26 tmp9 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp10 [V27,T49] ( 3, 17 ) int -> r0 "dup spill"
+; V27 tmp10 [V27,T88] ( 3, 3 ) int -> r0 "dup spill"
;* V28 tmp11 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V29 tmp12 [V29,T82] ( 3, 6 ) int -> r10 "Inlining Arg" -; V30 tmp13 [V30,T89] ( 2, 4 ) byref -> r9 single-def "Inlining Arg" -; V31 tmp14 [V31,T43] ( 5, 22 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>> -; V32 tmp15 [V32,T44] ( 5, 22 ) int -> r3 "Inline stloc first use temp" -; V33 tmp16 [V33,T36] ( 3, 24 ) int -> r2 "Inlining Arg"
+; V29 tmp12 [V29,T72] ( 3, 6 ) int -> r10 "Inlining Arg" +; V30 tmp13 [V30,T82] ( 2, 4 ) byref -> r9 single-def "Inlining Arg" +; V31 tmp14 [V31,T32] ( 5, 22 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>> +; V32 tmp15 [V32,T33] ( 5, 22 ) int -> r3 "Inline stloc first use temp" +; V33 tmp16 [V33,T27] ( 3, 24 ) int -> r2 "Inlining Arg"
;* V34 tmp17 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp18 [V35,T08] ( 6, 44 ) int -> r10 "Inlining Arg" -; V36 tmp19 [V36,T31] ( 3, 24 ) byref -> r9 "Inlining Arg"
+; V35 tmp18 [V35,T05] ( 6, 44 ) int -> r10 "Inlining Arg" +; V36 tmp19 [V36,T23] ( 3, 24 ) byref -> r9 "Inlining Arg"
;* V37 tmp20 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V38 tmp21 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V39 tmp22 [V39,T76] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V39 tmp22 [V39,T65] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V40 tmp23 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V41 tmp24 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V42 tmp25 [V42 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V43 tmp26 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp27 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V45 tmp28 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V46 tmp29 [V46,T37] ( 3, 24 ) int -> r10 "Inlining Arg" -; V47 tmp30 [V47,T55] ( 2, 16 ) byref -> r9 "Inlining Arg" -; V48 tmp31 [V48,T27] ( 4, 28 ) int -> [sp+0x34] "Inlining Arg" -; V49 tmp32 [V49,T12] ( 5, 36 ) int -> [sp+0x30] "Inlining Arg"
+; V46 tmp29 [V46,T28] ( 3, 24 ) int -> r10 "Inlining Arg" +; V47 tmp30 [V47,T44] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V48 tmp31 [V48,T19] ( 4, 28 ) int -> [sp+0x28] "Inlining Arg" +; V49 tmp32 [V49,T07] ( 5, 36 ) int -> [sp+0x24] "Inlining Arg"
;* V50 tmp33 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V51 tmp34 [V51,T52] ( 4, 16 ) int -> lr "Inline stloc first use temp" -; V52 tmp35 [V52,T32] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V51 tmp34 [V51,T41] ( 4, 16 ) int -> lr "Inline stloc first use temp" +; V52 tmp35 [V52,T24] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V53 tmp36 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp37 [V54,T38] ( 3, 24 ) int -> r10 "Inlining Arg" -; V55 tmp38 [V55,T56] ( 2, 16 ) byref -> r9 "Inlining Arg" -; V56 tmp39 [V56,T28] ( 4, 28 ) int -> [sp+0x2C] "Inlining Arg" -; V57 tmp40 [V57,T13] ( 5, 36 ) int -> [sp+0x28] "Inlining Arg"
+; V54 tmp37 [V54,T29] ( 3, 24 ) int -> r10 "Inlining Arg" +; V55 tmp38 [V55,T45] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V56 tmp39 [V56,T20] ( 4, 28 ) int -> [sp+0x20] "Inlining Arg" +; V57 tmp40 [V57,T08] ( 5, 36 ) int -> [sp+0x1C] "Inlining Arg"
;* V58 tmp41 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V59 tmp42 [V59,T53] ( 4, 16 ) int -> r1 "Inline stloc first use temp" -; V60 tmp43 [V60,T33] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>> -; V61 tmp44 [V61,T83] ( 3, 6 ) int -> r0 "Inline stloc first use temp" -; V62 tmp45 [V62,T69] ( 4, 8 ) int -> r3 "Inline stloc first use temp" -; V63 tmp46 [V63,T65] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V59 tmp42 [V59,T42] ( 4, 16 ) int -> r1 "Inline stloc first use temp" +; V60 tmp43 [V60,T25] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>> +; V61 tmp44 [V61,T73] ( 3, 6 ) int -> r0 "Inline stloc first use temp" +; V62 tmp45 [V62,T59] ( 4, 8 ) int -> r3 "Inline stloc first use temp" +; V63 tmp46 [V63,T51] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V64 tmp47 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V65 tmp48 [V65,T66] ( 3, 12 ) byref -> r0 "dup spill" -; V66 tmp49 [V66,T16] ( 2, 36 ) int -> r3 "Inlining Arg" -; V67 tmp50 [V67,T39] ( 3, 24 ) int -> r0 "Inline stloc first use temp" -; V68 tmp51 [V68,T20] ( 4, 32 ) int -> r1 "Inline stloc first use temp"
+; V65 tmp48 [V65,T52] ( 3, 12 ) byref -> r0 "dup spill" +; V66 tmp49 [V66,T11] ( 2, 36 ) int -> r3 "Inlining Arg" +; V67 tmp50 [V67,T30] ( 3, 24 ) int -> r0 "Inline stloc first use temp" +; V68 tmp51 [V68,T14] ( 4, 32 ) int -> r1 "Inline stloc first use temp"
; V69 tmp52 [V69,T02] ( 3, 48 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>> ;* V70 tmp53 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V71 tmp54 [V71,T03] ( 3, 48 ) byref -> r0 "dup spill" ;* V72 tmp55 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V73 tmp56 [V73,T68] ( 3, 12 ) int -> r10 "Inlining Arg" -; V74 tmp57 [V74,T70] ( 2, 8 ) byref -> r9 "Inlining Arg"
+; V73 tmp56 [V73,T57] ( 3, 12 ) int -> r10 "Inlining Arg" +; V74 tmp57 [V74,T61] ( 2, 8 ) byref -> r9 "Inlining Arg"
;* V75 tmp58 [V75 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V76 tmp59 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V77 tmp60 [V77,T77] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V77 tmp60 [V77,T66] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V78 tmp61 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V79 tmp62 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V80 tmp63 [V80 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V81 tmp64 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp65 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V83 tmp66 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V84 tmp67 [V84,T40] ( 3, 24 ) int -> r10 "Inlining Arg" -; V85 tmp68 [V85,T57] ( 2, 16 ) byref -> r9 "Inlining Arg" -; V86 tmp69 [V86,T29] ( 4, 28 ) int -> [sp+0x24] "Inlining Arg" -; V87 tmp70 [V87,T14] ( 5, 36 ) int -> [sp+0x20] "Inlining Arg"
+; V84 tmp67 [V84,T31] ( 3, 24 ) int -> r10 "Inlining Arg" +; V85 tmp68 [V85,T46] ( 2, 16 ) byref -> r9 "Inlining Arg" +; V86 tmp69 [V86,T21] ( 4, 28 ) int -> [sp+0x18] "Inlining Arg" +; V87 tmp70 [V87,T09] ( 5, 36 ) int -> [sp+0x14] "Inlining Arg"
;* V88 tmp71 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V89 tmp72 [V89,T54] ( 4, 16 ) int -> r1 "Inline stloc first use temp" -; V90 tmp73 [V90,T34] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V89 tmp72 [V89,T43] ( 4, 16 ) int -> r1 "Inline stloc first use temp" +; V90 tmp73 [V90,T26] ( 3, 24 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
;* V91 tmp74 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V92 tmp75 [V92,T09] ( 6, 44 ) int -> r9 "Inlining Arg" -; V93 tmp76 [V93,T35] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V92 tmp75 [V92,T18] ( 6, 30 ) int -> r9 "Inlining Arg" +; V93 tmp76 [V93,T37] ( 3, 17 ) byref -> r8 "Inlining Arg"
;* V94 tmp77 [V94 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V95 tmp78 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V96 tmp79 [V96,T78] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V96 tmp79 [V96,T67] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V97 tmp80 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp81 [V98 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V99 tmp82 [V99 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V101 tmp84 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V102 tmp85 [V102 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V103 tmp86 [V103,T41] ( 3, 24 ) int -> r9 "Inlining Arg" -; V104 tmp87 [V104,T58] ( 2, 16 ) byref -> r8 "Inlining Arg" -; V105 tmp88 [V105,T42] ( 3, 24 ) int -> r3 "Inline stloc first use temp" -; V106 tmp89 [V106,T21] ( 4, 32 ) int -> r2 "Inline stloc first use temp" -; V107 tmp90 [V107,T04] ( 3, 48 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
+; V103 tmp86 [V103,T89] ( 3, 3 ) int -> r9 "Inlining Arg" +; V104 tmp87 [V104,T94] ( 2, 2 ) byref -> r8 "Inlining Arg" +; V105 tmp88 [V105,T74] ( 3, 6 ) int -> r3 "Inline stloc first use temp" +; V106 tmp89 [V106,T60] ( 4, 8 ) int -> r2 "Inline stloc first use temp" +; V107 tmp90 [V107,T53] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
;* V108 tmp91 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V109 tmp92 [V109,T05] ( 3, 48 ) byref -> r3 "dup spill" -; V110 tmp93 [V110,T22] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V109 tmp92 [V109,T54] ( 3, 12 ) byref -> r3 "dup spill" +; V110 tmp93 [V110,T79] ( 4, 4 ) int -> r9 "Inlining Arg"
;* V111 tmp94 [V111 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V112 tmp95 [V112,T59] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V112 tmp95 [V112,T95] ( 2, 2 ) byref -> r8 "Inlining Arg"
;* V113 tmp96 [V113 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V114 tmp97 [V114 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V115 tmp98 [V115,T79] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V115 tmp98 [V115,T104] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V116 tmp99 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V117 tmp100 [V117 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V118 tmp101 [V118 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V119 tmp102 [V119 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V120 tmp103 [V120 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V121 tmp104 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V122 tmp105 [V122,T95] ( 3, 3 ) int -> [sp+0x1C] spill-single-def "Inlining Arg" -; V123 tmp106 [V123,T98] ( 2, 2 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg" -; V124 tmp107 [V124,T87] ( 4, 4 ) int -> [sp+0x18] "Inlining Arg" -; V125 tmp108 [V125,T85] ( 5, 5 ) int -> [sp+0x14] "Inlining Arg"
+; V122 tmp105 [V122,T90] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg" +; V123 tmp106 [V123,T96] ( 2, 2 ) byref -> [sp+0x00] spill-single-def "Inlining Arg" +; V124 tmp107 [V124,T80] ( 4, 4 ) int -> [sp+0x0C] "Inlining Arg" +; V125 tmp108 [V125,T76] ( 5, 5 ) int -> [sp+0x08] "Inlining Arg"
;* V126 tmp109 [V126 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V127 tmp110 [V127,T96] ( 4, 2 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" -; V128 tmp111 [V128,T93] ( 3, 3 ) ref -> [sp+0x08] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V127 tmp110 [V127,T92] ( 4, 2 ) int -> [sp+0x04] spill-single-def "Inline stloc first use temp" +; V128 tmp111 [V128,T86] ( 3, 3 ) ref -> r1 class-hnd "impAppendStmt" <<unknown class>>
;* V129 tmp112 [V129 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V130 tmp113 [V130 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V131 tmp114 [V131 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V132 tmp115 [V132,T88] ( 4, 4 ) int -> r6 "Inlining Arg" -; V133 tmp116 [V133,T86] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V132 tmp115 [V132,T81] ( 4, 4 ) int -> r6 "Inlining Arg" +; V133 tmp116 [V133,T77] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V134 tmp117 [V134 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V135 tmp118 [V135,T97] ( 4, 2 ) int -> r0 "Inline stloc first use temp" -; V136 tmp119 [V136,T94] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> -; V137 tmp120 [V137,T45] ( 10, 21.50) byref -> registers "field V11._reference (fldOffset=0x0)" P-INDEP -; V138 tmp121 [V138,T17] ( 13, 35 ) int -> registers "field V11._length (fldOffset=0x4)" P-INDEP
+; V135 tmp118 [V135,T93] ( 4, 2 ) int -> r0 "Inline stloc first use temp" +; V136 tmp119 [V136,T87] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> +; V137 tmp120 [V137,T34] ( 10, 18 ) byref -> registers "field V11._reference (fldOffset=0x0)" P-INDEP +; V138 tmp121 [V138,T15] ( 13, 31.50) int -> registers "field V11._length (fldOffset=0x4)" P-INDEP
;* V139 tmp122 [V139 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V140 tmp123 [V140 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP ;* V141 tmp124 [V141 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V142 tmp125 [V142 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V143 tmp126 [V143,T99] ( 2, 2 ) byref -> r9 single-def "field V28._reference (fldOffset=0x0)" P-INDEP -; V144 tmp127 [V144,T100] ( 2, 2 ) int -> r10 "field V28._length (fldOffset=0x4)" P-INDEP
+; V143 tmp126 [V143,T97] ( 2, 2 ) byref -> r9 single-def "field V28._reference (fldOffset=0x0)" P-INDEP +; V144 tmp127 [V144,T98] ( 2, 2 ) int -> r10 "field V28._length (fldOffset=0x4)" P-INDEP
;* V145 tmp128 [V145 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP ;* V146 tmp129 [V146 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP ;* V147 tmp130 [V147 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP @@ -163,10 +163,10 @@ ;* V152 tmp135 [V152 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x4)" P-INDEP ;* V153 tmp136 [V153 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP ;* V154 tmp137 [V154 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP
-; V155 tmp138 [V155,T71] ( 2, 8 ) byref -> r9 "field V53._reference (fldOffset=0x0)" P-INDEP -; V156 tmp139 [V156,T74] ( 2, 8 ) int -> r10 "field V53._length (fldOffset=0x4)" P-INDEP -; V157 tmp140 [V157,T90] ( 2, 4 ) byref -> r9 "field V72._reference (fldOffset=0x0)" P-INDEP -; V158 tmp141 [V158,T91] ( 2, 4 ) int -> r10 "field V72._length (fldOffset=0x4)" P-INDEP
+; V155 tmp138 [V155,T62] ( 2, 8 ) byref -> r9 "field V53._reference (fldOffset=0x0)" P-INDEP +; V156 tmp139 [V156,T64] ( 2, 8 ) int -> r10 "field V53._length (fldOffset=0x4)" P-INDEP +; V157 tmp140 [V157,T83] ( 2, 4 ) byref -> r9 "field V72._reference (fldOffset=0x0)" P-INDEP +; V158 tmp141 [V158,T84] ( 2, 4 ) int -> r10 "field V72._length (fldOffset=0x4)" P-INDEP
...

-6 (-1.59%) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2 ; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr @@ -30,7 +30,7 @@ ;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.50) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 7 ) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,14 +70,15 @@ G_M43427_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0
bne SHORT G_M43427_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff @@ -92,28 +93,24 @@ G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b G_M43427_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq SHORT G_M43427_IG09
+ beq SHORT G_M43427_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M43427_IG06 movs r0, 0 b SHORT G_M43427_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M43427_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- bne SHORT G_M43427_IG10
+ bne SHORT G_M43427_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - str r8, [sp+0x4C] - ;; size=4 bbWeight=0.25 PerfScore 0.25 -G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M43427_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -123,148 +120,147 @@ G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3] - ;; size=32 bbWeight=0.50 PerfScore 4.50 -G_M43427_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M43427_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00 +G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M43427_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r7 - b SHORT G_M43427_IG13
+G_M43427_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r0, r8 + b SHORT G_M43427_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - mov r0, r6
+G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x3C] // [V01 arg1]
+G_M43427_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x3C]
; byrRegs +[r3] str r3, [sp+0x14] // [V07 loc2] ldr r1, [sp+0x44] // [V02 arg2] ; byrRegs +[r1] str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2 subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1 sub lr, lr, 2 cmp r0, 0
- beq SHORT G_M43427_IG15
+ beq SHORT G_M43427_IG14
;; size=28 bbWeight=1 PerfScore 12.00
-G_M43427_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3] ldrh r12, [r2] ldrh r9, [lr] cmp r12, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
cmp r9, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r12] cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r9] cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2 sub lr, lr, 2 subs r0, r0, 1 cmp r0, 0
- bne SHORT G_M43427_IG14
+ bne SHORT G_M43427_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - bge SHORT G_M43427_IG20
+G_M43427_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + bge SHORT G_M43427_IG19
ldrh r2, [lr] cmp r2, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw lr, 0xd1ff movt lr, 0xd1ff ldrb r0, [lr+r2] cmp r0, 0
- bne SHORT G_M43427_IG24 - b SHORT G_M43427_IG18
+ bne SHORT G_M43427_IG23 + b SHORT G_M43427_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r0, [r2-0x02] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
- bls SHORT G_M43427_IG18
+ bls SHORT G_M43427_IG17
ldrh r0, [lr-0x02] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43427_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7 - ble SHORT G_M43427_IG21
+ cmp r7, r8 + ble SHORT G_M43427_IG20
ldrh r0, [r2] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0 ...

+8 (+1.90%) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)

@@ -8,28 +8,28 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 34,131.50) byref -> r4 this single-def -; V01 arg1 [V01,T13] ( 8, 5 ) byref -> r6 single-def -; V02 arg2 [V02,T10] ( 9, 13 ) byref -> r5 single-def -; V03 arg3 [V03,T14] ( 4, 3 ) ref -> r7 class-hnd single-def <System.Globalization.DateTimeFormatInfo> -; V04 loc0 [V04,T12] ( 3, 12 ) int -> r2 -; V05 loc1 [V05,T19] ( 3, 1.50) int -> r3 -; V06 loc2 [V06,T04] ( 9, 37.50) int -> r8 -; V07 loc3 [V07,T22] ( 2, 1 ) int -> r8 -; V08 loc4 [V08,T23] ( 2, 1 ) ushort -> r9
+; V00 this [V00,T00] ( 34, 56.50) byref -> r4 this single-def +; V01 arg1 [V01,T10] ( 8, 5 ) byref -> r6 single-def +; V02 arg2 [V02,T05] ( 9, 13 ) byref -> r5 single-def +; V03 arg3 [V03,T11] ( 4, 3 ) ref -> r7 class-hnd single-def <System.Globalization.DateTimeFormatInfo> +; V04 loc0 [V04,T07] ( 3, 12 ) int -> r2 +; V05 loc1 [V05,T18] ( 3, 1.75) int -> r3 +; V06 loc2 [V06,T01] ( 9, 25.50) int -> r9 +; V07 loc3 [V07,T23] ( 2, 1 ) int -> r8 +; V08 loc4 [V08,T24] ( 2, 1 ) ushort -> r9
; V09 loc5 [V09 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op ; V10 loc6 [V10 ] ( 2, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> r0 "Span.get_Item index" -; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> r3 "Span.get_Item ptrToSpan" -; V15 tmp4 [V15,T09] ( 3, 24 ) int -> r2 "Span.get_Item index" -; V16 tmp5 [V16,T08] ( 3, 24 ) byref -> r0 "Span.get_Item ptrToSpan" -; V17 tmp6 [V17,T18] ( 3, 3 ) int -> r2 "Span.get_Item index" -; V18 tmp7 [V18,T17] ( 3, 3 ) byref -> r3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> r0 "Span.get_Item index" +; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> r10 "Span.get_Item ptrToSpan" +; V15 tmp4 [V15,T03] ( 3, 24 ) int -> r2 "Span.get_Item index" +; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> r0 "Span.get_Item ptrToSpan" +; V17 tmp6 [V17,T16] ( 3, 3 ) int -> r2 "Span.get_Item index" +; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> r3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T16] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" -; V21 tmp10 [V21,T07] ( 4, 24 ) ushort -> r0 "Inlining Arg"
+; V20 tmp9 [V20,T25] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" +; V21 tmp10 [V21,T12] ( 4, 4 ) ushort -> r0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V23 tmp12 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -37,8 +37,8 @@ ;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp17 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V29 tmp18 [V29,T06] ( 2, 32 ) ubyte -> r0 "Inline return value spill temp" -; V30 tmp19 [V30,T01] ( 4,128 ) ushort -> r0 "Inlining Arg"
+; V29 tmp18 [V29,T14] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" +; V30 tmp19 [V30,T04] ( 4, 16 ) ushort -> r0 "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V32 tmp21 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V33 tmp22 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> @@ -56,7 +56,7 @@ ;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V46 tmp35 [V46 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp36 [V47 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V48 tmp37 [V48,T15] ( 2, 4 ) byref -> r3 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V48 tmp37 [V48,T22] ( 2, 1 ) byref -> r3 "field V28._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp38 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP ;* V50 tmp39 [V50 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP @@ -68,18 +68,20 @@ ;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP ;* V58 tmp47 [V58 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP ;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP
-; V60 tmp49 [V60,T05] ( 2, 32 ) byref -> r3 "field V37._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp49 [V60,T13] ( 2, 4 ) byref -> r3 "field V37._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp50 [V61 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP
-; V62 cse0 [V62,T20] ( 3, 1.50) int -> r2 "CSE - conservative" -; V63 cse1 [V63,T11] ( 4, 12.50) int -> r0 "CSE - moderate" -; V64 cse2 [V64,T21] ( 3, 1.50) int -> r2 "CSE - conservative"
+; V62 cse0 [V62,T17] ( 3, 2 ) int -> r2 "CSE - moderate" +; V63 cse1 [V63,T19] ( 3, 1.50) int -> r8 "CSE - moderate" +; V64 cse2 [V64,T20] ( 3, 1.50) int -> r0 "CSE - moderate" +; V65 cse3 [V65,T21] ( 3, 1.50) int -> r2 "CSE - moderate" +; V66 cse4 [V66,T09] ( 6, 9.25) byref -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr} - sub sp, 16 - add r11, sp, 40
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 20 + add r11, sp, 48
mov r4, r0 ; byrRegs +[r4] mov r6, r1 @@ -95,104 +97,105 @@ G_M44776_IG02: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r ldr r0, [r4+0x04] ldr r3, [r4+0x10] cmp r0, r3
- bge SHORT G_M44776_IG12
+ bge SHORT G_M44776_IG10
;; size=12 bbWeight=1 PerfScore 6.00
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldrh r0, [r4+0x08]
- sub r3, r0, 48 - cmp r3, 9 - bls SHORT G_M44776_IG13
+ sub r8, r0, 48 + cmp r8, 9 + bls SHORT G_M44776_IG11
cmp r0, 256
- blo SHORT G_M44776_IG06 - ;; size=16 bbWeight=4 PerfScore 24.00 -G_M44776_IG04: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ blo SHORT G_M44776_IG05
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M44776_IG11 - ;; size=16 bbWeight=2 PerfScore 12.00 -G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ bne SHORT G_M44776_IG09 + ;; size=34 bbWeight=0.50 PerfScore 6.00 +G_M44776_IG04: ; bbWeight=0.25, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
b SHORT G_M44776_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M44776_IG06: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=2 bbWeight=0.25 PerfScore 0.25 +G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- bne SHORT G_M44776_IG11 - ;; size=18 bbWeight=2 PerfScore 12.00 -G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ bne SHORT G_M44776_IG09
b SHORT G_M44776_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M44776_IG08: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=20 bbWeight=0.50 PerfScore 3.50 +G_M44776_IG06: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldr r0, [r4+0x04]
- add r3, r4, 12 - ; byrRegs +[r3] - ldr r2, [r3+0x04] - cmp r0, r2
+ add r10, r4, 12 + ; byrRegs +[r10] + ldr r3, [r10+0x04] + cmp r0, r3
bhs G_M44776_IG22
- ldr r3, [r3]
+ ldr r3, [r10] + ; byrRegs +[r3]
lsls r0, r0, 1 ldrh r0, [r3+r0] strh r0, [r4+0x08] ldrh r0, [r4+0x08] cmp r0, 256
- blo SHORT G_M44776_IG10
+ blo SHORT G_M44776_IG08
movw r3, 0xd1ff ; byrRegs -[r3] movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
+ ; byrRegs -[r10]
; gcr arg pop 0 cmp r0, 0 beq SHORT G_M44776_IG03
- ;; size=46 bbWeight=16 PerfScore 288.00 -G_M44776_IG09: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz - b SHORT G_M44776_IG11
+ ;; size=50 bbWeight=2 PerfScore 36.00 +G_M44776_IG07: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz + b SHORT G_M44776_IG09
;; size=2 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0 beq SHORT G_M44776_IG03
- ;; size=18 bbWeight=16 PerfScore 96.00 -G_M44776_IG11: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ ;; size=18 bbWeight=2 PerfScore 12.00 +G_M44776_IG09: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
ldr r0, [r4+0x04]
- add r8, r0, 1 - str r8, [r4+0x04]
+ add r9, r0, 1 + str r9, [r4+0x04]
ldr r0, [r4+0x10]
- cmp r8, r0 - blt SHORT G_M44776_IG08 - ;; size=16 bbWeight=8 PerfScore 48.00 -G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
+ cmp r9, r0 + blt SHORT G_M44776_IG06 + ;; size=16 bbWeight=4 PerfScore 24.00 +G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r7] ; byrRegs -[r4-r5] movs r2, 6 str r2, [r6] b SHORT G_M44776_IG21 ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
; gcrRegs +[r7] ; byrRegs +[r4-r5]
- sub r2, r0, 48 - str r2, [r5]
+ str r8, [r5]
ldr r2, [r4+0x04] mov r3, r2
- add r8, r2, 1 - str r8, [r4+0x04]
+ add r9, r2, 1 + str r9, [r4+0x04]
ldr r2, [r4+0x10]
- cmp r8, r2 - bge SHORT G_M44776_IG15 - ;; size=24 bbWeight=0.50 PerfScore 4.50 -G_M44776_IG14: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+ cmp r9, r2 + bge SHORT G_M44776_IG14 + ;; size=22 bbWeight=0.50 PerfScore 4.00 +G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r6}, byref + add r10, r4, 12 + ; byrRegs +[r10] + ;; size=4 bbWeight=0.25 PerfScore 0.25 +G_M44776_IG13: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0470 {r4 r5 r6 r10}, byref, isz
ldr r2, [r4+0x04]
- add r0, r4, 12
+ mov r0, r10
; byrRegs +[r0] ldr r1, [r0+0x04] cmp r2, r1 @@ -204,7 +207,7 @@ G_M44776_IG14: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0070 {r4 r5 r ldrh r2, [r4+0x08] subs r2, 48 ...

+46 (+2.85%) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)

@@ -10,33 +10,33 @@ ; ; V00 this [V00,T19] ( 16, 27 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder> ; V01 arg1 [V01,T31] ( 9, 8.50) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator>
-; V02 loc0 [V02,T34] ( 4, 6.50) ref -> [sp+0x38] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> -; V03 loc1 [V03,T10] ( 9, 33 ) int -> [sp+0x94] -; V04 loc2 [V04,T21] ( 9, 22.16) ref -> [sp+0x34] class-hnd spill-single-def <int[]> -; V05 loc3 [V05,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]> -; V06 loc4 [V06,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> -; V07 loc5 [V07,T24] ( 6, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <System.Type[]> -; V08 loc6 [V08,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <int[]> -; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x90] spill-single-def -; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x8C] spill-single-def -; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x88] spill-single-def -; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x20] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc0 [V02,T35] ( 4, 6.50) ref -> [sp+0x34] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> +; V03 loc1 [V03,T10] ( 9, 33 ) int -> registers +; V04 loc2 [V04,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]> +; V05 loc3 [V05,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> +; V06 loc4 [V06,T24] ( 9, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <int[]> +; V07 loc5 [V07,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <System.Type[]> +; V08 loc6 [V08,T26] ( 6, 22.16) ref -> [sp+0x20] class-hnd spill-single-def <int[]> +; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x8C] spill-single-def +; V10 loc8 [V10,T27] ( 5, 20 ) int -> [sp+0x88] spill-single-def +; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x84] spill-single-def +; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>>
; V13 loc11 [V13,T36] ( 3, 2.50) int -> r0
-; V14 loc12 [V14,T27] ( 5, 16.50) int -> [sp+0x84] -; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x80]
+; V14 loc12 [V14,T21] ( 5, 28.26) int -> [sp+0x80] +; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x7C]
; V16 loc14 [V16,T07] ( 8, 40 ) int -> lr ;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref ; V18 OutArgs [V18 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T02] ( 8, 64 ) int -> registers "impSpillLclRefs" ; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
-; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x64] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V22 tmp4 [V22,T03] ( 8, 64 ) int -> r6 "impSpillLclRefs"
-; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x44] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>> ; V25 tmp7 [V25,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V26 tmp8 [V26,T41] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V27 tmp9 [V27,T42] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp10 [V28,T33] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V28 tmp10 [V28,T34] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
; V29 tmp11 [V29,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" ;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -48,10 +48,10 @@ ;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
-; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> registers class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
; V41 tmp23 [V41,T12] ( 4, 32 ) int -> registers "argument with side effect"
-; V42 tmp24 [V42,T13] ( 4, 32 ) int -> registers "argument with side effect" -; V43 tmp25 [V43,T14] ( 4, 32 ) int -> registers "argument with side effect"
+; V42 tmp24 [V42,T13] ( 4, 32 ) int -> r1 "argument with side effect" +; V43 tmp25 [V43,T14] ( 4, 32 ) int -> r12 "argument with side effect"
; V44 tmp26 [V44,T15] ( 4, 32 ) int -> registers "argument with side effect" ; V45 tmp27 [V45,T16] ( 4, 32 ) int -> r1 "argument with side effect" ; V46 tmp28 [V46,T17] ( 4, 32 ) int -> registers "argument with side effect" @@ -59,27 +59,27 @@ ; V48 tmp30 [V48,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V49 tmp31 [V49,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V50 tmp32 [V50,T45] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x44] spill-single-def "CSE - conservative" -; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r12 "CSE - conservative"
+; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x40] spill-single-def "CSE - conservative" +; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r5 "CSE - conservative"
; V53 cse2 [V53,T09] ( 9, 36 ) ref -> r1 "CSE - aggressive"
-; V54 cse3 [V54,T04] ( 5, 63.36) int -> r8 "CSE - aggressive" -; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r8 "CSE - aggressive" -; V56 cse5 [V56,T00] ( 9, 95.04) int -> r7 "CSE - aggressive" -; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate" -; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x40] spill-single-def "CSE - moderate" -; V59 cse8 [V59,T35] ( 3, 5 ) int -> [sp+0x3C] spill-single-def "CSE - moderate" -; TEMP_02 byref -> [r11-0xA0] -; TEMP_01 ref -> [r11-0xA4]
+; V54 cse3 [V54,T04] ( 5, 63.36) int -> r7 "CSE - aggressive" +; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r7 "CSE - aggressive" +; V56 cse5 [V56,T00] ( 9, 95.04) int -> r5 "CSE - aggressive" +; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x18] spill-single-def "CSE - moderate" +; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x3C] spill-single-def "CSE - moderate" +; V59 cse8 [V59,T33] ( 3, 8.92) int -> [sp+0x38] spill-single-def "CSE - moderate" +; TEMP_02 byref -> [r11-0x9C] +; TEMP_01 ref -> [r11-0xA0]
;
-; Lcl frame size = 156
+; Lcl frame size = 148
G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 156 - add r11, sp, 184
+ sub sp, 148 + add r11, sp, 176
movs r2, 0
- str r2, [sp+0x18] // [TEMP_02] - str r2, [sp+0x14] // [TEMP_01]
+ str r2, [sp+0x14] // [TEMP_02] + str r2, [sp+0x10] // [TEMP_01]
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -87,11 +87,11 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 8.00 G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq G_M41336_IG37
+ beq G_M41336_IG31
movs r6, 0 ldr r7, [r4+0x08] ; gcrRegs +[r7]
- str r7, [sp+0x20] // [V12 loc10]
+ str r7, [sp+0x1C] // [V12 loc10]
; GC ptr vars +{V12} ldr r0, [r4+0x0C] ; gcrRegs +[r0] @@ -104,7 +104,7 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 ldrb r0, [r4+0x58] cmp r0, 0
- bne G_M41336_IG38
+ bne G_M41336_IG32
ldr r0, [r5+0x2C] ; gcrRegs +[r0] cmp r0, r4 @@ -128,7 +128,7 @@ G_M41336_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r0, [r5+0x2C] ; gcrRegs +[r0] cmp r0, 0
- bne G_M41336_IG39
+ bne G_M41336_IG33
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -145,7 +145,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r0, [r0+0x14] ; gcrRegs -[r0] cmp r0, 0
- bne G_M41336_IG40
+ bne G_M41336_IG34
mov r0, r5 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -153,11 +153,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 32 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -171,11 +171,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Reflection.Emit.RuntimeILGenerator:GetTokenFixups():int[]:this ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 16 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -192,7 +192,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- str r5, [sp+0x38] // [V02 loc0]
+ str r5, [sp+0x34] // [V02 loc0]
; GC ptr vars +{V02} mov r0, r5 movw r3, 0xd1ff @@ -202,7 +202,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=126 bbWeight=1 PerfScore 45.00 G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r1, r0 @@ -213,11 +213,11 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 36 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -226,222 +226,209 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; byrRegs -[r0] mov r8, 0 ldr r9, [r5+0x04]
- str r9, [sp+0x3C] // [V59 cse8]
+ str r9, [sp+0x38] // [V59 cse8]
cmp r9, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=58 bbWeight=0.50 PerfScore 8.50 G_M41336_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz add r3, r5, 8 ; byrRegs +[r3]
- str r3, [sp+0x1C] // [V57 cse6]
+ str r3, [sp+0x18] // [V57 cse6]
; GC ptr vars +{V57}
- str r8, [sp+0x84] // [V14 loc12]
lsl lr, r8, 2
- str lr, [sp+0x40] // [V58 cse7]
+ str lr, [sp+0x3C] // [V58 cse7]
ldr r1, [r3+lr] ; gcrRegs +[r1] ldr r12, [r1+0x04] ; gcrRegs +[r12]
- str r12, [sp+0x34] // [V04 loc2]
+ str r12, [sp+0x30] // [V04 loc2]
; GC ptr vars +{V04} ldr r2, [r1+0x08] ; gcrRegs +[r2]
- str r2, [sp+0x30] // [V05 loc3]
+ str r2, [sp+0x2C] // [V05 loc3]
; GC ptr vars +{V05} ldr r0, [r1+0x0C] ; gcrRegs +[r0]
- str r0, [sp+0x2C] // [V06 loc4]
+ str r0, [sp+0x28] // [V06 loc4]
; GC ptr vars +{V06}
- ldr r9, [r1+0x14] - ; gcrRegs +[r9] - str r9, [sp+0x28] // [V07 loc5]
+ ldr r5, [r1+0x14] + str r5, [sp+0x24] // [V07 loc5]
...

+16 (+4.57%) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)

@@ -8,184 +8,191 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo> -; V01 arg1 [V01,T05] ( 4, 3 ) ref -> r4 class-hnd single-def <System.Object> -; V02 arg2 [V02,T06] ( 4, 3 ) ref -> r5 class-hnd single-def <System.Object> -; V03 arg3 [V03,T07] ( 4, 3 ) int -> r6 single-def -; V04 arg4 [V04,T16] ( 2, 1 ) ref -> [sp+0x38] class-hnd single-def <System.Reflection.Binder> -; V05 arg5 [V05,T15] ( 4, 1.79) ref -> r7 class-hnd single-def <System.Object[]> -; V06 arg6 [V06,T17] ( 2, 1 ) ref -> [sp+0x40] class-hnd single-def <System.Globalization.CultureInfo> -; V07 loc0 [V07,T12] ( 3, 2.50) ref -> r8 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo> -; V08 loc1 [V08,T10] ( 8, 2.58) ref -> r2 class-hnd exact single-def <System.Object[]> -; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x0C]
+; V00 this [V00,T09] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo> +; V01 arg1 [V01,T06] ( 4, 4.48) ref -> r4 class-hnd single-def <System.Object> +; V02 arg2 [V02,T07] ( 4, 4.48) ref -> r5 class-hnd single-def <System.Object> +; V03 arg3 [V03,T08] ( 4, 4.48) int -> r6 single-def +; V04 arg4 [V04,T14] ( 2, 2.48) ref -> r7 class-hnd single-def <System.Reflection.Binder> +; V05 arg5 [V05,T17] ( 4, 1.79) ref -> r9 class-hnd single-def <System.Object[]> +; V06 arg6 [V06,T15] ( 2, 2.48) ref -> r8 class-hnd single-def <System.Globalization.CultureInfo> +; V07 loc0 [V07,T11] ( 3, 3.98) ref -> r10 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo> +; V08 loc1 [V08,T05] ( 8, 7.02) ref -> r2 class-hnd exact single-def <System.Object[]> +; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x14]
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> lr class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> r12 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> r4 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>
+; V13 tmp3 [V13,T12] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo> ;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V17 tmp7 [V17,T20] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V18 cse0 [V18,T13] ( 3, 2.50) ref -> r0 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r10 "CSE - aggressive" -; V20 cse2 [V20,T09] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive" -; V21 cse3 [V21,T04] ( 6, 5.29) byref -> [sp+0x08] hoist multi-def "CSE - aggressive"
+; V19 cse1 [V19,T03] ( 8, 9.71) int -> [sp+0x10] spill-single-def "CSE - aggressive" +; V20 cse2 [V20,T10] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive" +; V21 cse3 [V21,T04] ( 6, 8.25) byref -> [sp+0x0C] hoist multi-def "CSE - aggressive"
; V22 cse4 [V22,T02] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V23 rat0 [V23,T14] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
+; V23 rat0 [V23,T16] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 28 + add r11, sp, 56
mov r4, r1 ; gcrRegs +[r4] mov r5, r2 ; gcrRegs +[r5] mov r6, r3
- ldr r7, [sp+0x3C] // [V05 arg5]
+ ldr r7, [sp+0x40] // [V04 arg4]
; gcrRegs +[r7]
- ;; size=18 bbWeight=1 PerfScore 7.00 -G_M50642_IG02: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [sp+0x44] // [V05 arg5] + ; gcrRegs +[r9] + ldr r8, [sp+0x48] // [V06 arg6] + ; gcrRegs +[r8] + ;; size=26 bbWeight=1 PerfScore 9.00 +G_M50642_IG02: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0] ldr r0, [r0+0x10] cmp r0, 0 bne SHORT G_M50642_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movs r0, 0 b SHORT G_M50642_IG04 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- mov r8, r0 - ; gcrRegs +[r8] - cmp r8, 0 - beq SHORT G_M50642_IG15 - cmp r7, 0
+ mov r10, r0 + ; gcrRegs +[r10] + cmp r10, 0 + beq G_M50642_IG16 + cmp r9, 0
bne SHORT G_M50642_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00 -G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, nogc - ; gcrRegs -[r7-r8] - ldr r7, [sp+0x38] // [V04 arg4] - ; gcrRegs +[r7]
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=01B1 {r0 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, nogc + ; gcrRegs -[r9-r10]
mov r3, r7 ; gcrRegs +[r3]
- str r5, [sp+0x38] // [V04 arg4] - ldr r9, [sp+0x40] // [V06 arg6] - ; gcrRegs +[r9] - str r9, [sp+0x3C] // [V04 arg4+0x04]
+ str r5, [sp+0x40] + str r8, [sp+0x44]
mov r1, r4 ; gcrRegs +[r1] mov r2, r6 movw lr, 0xd1ff movt lr, 0xd1ff ldr r12, [lr]
- ;; size=30 bbWeight=0.50 PerfScore 5.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 20
+ add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r12 // System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 r3 r9] +[r8] - ldr r10, [r7+0x04] - add r1, r10, 1
+G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=07B0 {r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0-r1 r3] +[r9-r10] + ldr r3, [r9+0x04] + str r3, [sp+0x10] + adds r1, r3, 1
movw r0, 0xd1ff movt r0, 0xd1ff
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0] ; gcr arg pop 0 mov r2, r0 ; gcrRegs +[r2] movs r1, 0
- cmp r10, 0
+ ldr r3, [sp+0x10] // [V19 cse1] + cmp r3, 0
ble SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50 -G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 6.50 +G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [r2+0x04]
- cmp r0, r10
+ cmp r0, r3
blt SHORT G_M50642_IG11
- adds r7, 8 - ; gcrRegs -[r7] - ; byrRegs +[r7] - add r3, r2, 8 - ; byrRegs +[r3] - ;; size=12 bbWeight=0.25 PerfScore 1.25 -G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0088 {r3 r7}, byref, isz - str r1, [sp+0x0C] // [V09 loc2]
+ add r9, r9, 8 + ; gcrRegs -[r9] + ; byrRegs +[r9] + add lr, r2, 8 + ; byrRegs +[lr] + ;; size=14 bbWeight=0.25 PerfScore 1.25 +G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=4200 {r9 lr}, byref, isz + str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- ldr lr, [r7+r0] - ; gcrRegs +[lr] - str r3, [sp+0x08] // [V21 cse3]
+ ldr r12, [r9+r0] + ; gcrRegs +[r12] + str lr, [sp+0x0C] // [V21 cse3]
; GC ptr vars +{V21}
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
+ mov r1, r12
; gcrRegs +[r1] movw r12, 0xd1ff
+ ; gcrRegs -[r12]
movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 lr] - ; byrRegs -[r0 r3] - ldr r1, [sp+0x0C] // [V09 loc2]
+ ; gcrRegs -[r1] + ; byrRegs -[r0 lr] + ldr r1, [sp+0x14] // [V09 loc2]
adds r1, r1, 1
- cmp r10, r1 - ldr r3, [sp+0x08] // [V21 cse3] - ; byrRegs +[r3]
+ ldr r3, [sp+0x10] // [V19 cse1] + cmp r3, r1 + ldr lr, [sp+0x0C] // [V21 cse3] + ; byrRegs +[lr]
bgt SHORT G_M50642_IG09
- ;; size=34 bbWeight=3.96 PerfScore 55.44 -G_M50642_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[r3 r7]
+ ;; size=40 bbWeight=3.96 PerfScore 59.40 +G_M50642_IG10: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; byrRegs -[r9 lr]
; GC ptr vars -{V21}
+ ldr r3, [sp+0x10] // [V19 cse1]
b SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r7] - add r0, r7, 8
+ ;; size=4 bbWeight=1.98 PerfScore 3.96 +G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r9] + add r0, r9, 8
; byrRegs +[r0]
- lsls r3, r1, 2 - ldr lr, [r0+r3] - ; gcrRegs +[lr]
+ lsl lr, r1, 2 + ldr r12, [r0+lr] + ; gcrRegs +[r12]
ldr r0, [r2+0x04] ; byrRegs -[r0] cmp r1, r0
- bhs SHORT G_M50642_IG14 - add r3, r2, 8 - ; byrRegs +[r3] - str r1, [sp+0x0C] // [V09 loc2]
+ bhs SHORT G_M50642_IG15 + add lr, r2, 8 + ; byrRegs +[lr] + str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
...

benchmarks.run_pgo.linux.arm.checked.mch

-6 (-1.55%) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (Tier0-FullOpts)

@@ -8,15 +8,15 @@ ; 4 inlinees with PGO data; 17 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T18] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2 ; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.75) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6.25) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.25) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 6.75) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,41 +70,41 @@ G_M43427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0 - beq G_M43427_IG24 - ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0 + beq G_M43427_IG23 + ;; size=14 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq G_M43427_IG25
+ beq G_M43427_IG24
;; size=8 bbWeight=1 PerfScore 3.00 G_M43427_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M43427_IG05 movs r0, 0 b SHORT G_M43427_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- beq SHORT G_M43427_IG14 - ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M43427_IG24 + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M43427_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - ble SHORT G_M43427_IG15
+ cmp r7, r8 + ble SHORT G_M43427_IG14
;; size=4 bbWeight=1 PerfScore 2.00 G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.25 PerfScore 0.25 G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r3, [sp+0x3C] @@ -113,10 +113,10 @@ G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r1, [sp+0x44] // [V02 arg2] ; byrRegs +[r1] str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2 subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1 sub lr, lr, 2 cmp r0, 0 @@ -127,21 +127,21 @@ G_M43427_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldrh r12, [r2] ldrh r9, [lr] cmp r12, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
cmp r9, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r12] cmp r10, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r9] cmp r10, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2 sub lr, lr, 2 subs r0, r0, 1 @@ -149,16 +149,16 @@ G_M43427_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre bne SHORT G_M43427_IG10 ;; size=72 bbWeight=4 PerfScore 92.00 G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - bge SHORT G_M43427_IG18
+ cmp r7, r8 + bge SHORT G_M43427_IG17
ldrh r2, [lr] cmp r2, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw lr, 0xd1ff movt lr, 0xd1ff ldrb r0, [lr+r2] cmp r0, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
;; size=28 bbWeight=0.50 PerfScore 5.00 G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4] @@ -172,76 +172,72 @@ G_M43427_IG13: ; bbWeight=0.50, epilog, nogc, extend ;; size=10 bbWeight=0.50 PerfScore 2.00 G_M43427_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3] - b SHORT G_M43427_IG25 - ;; size=6 bbWeight=0.25 PerfScore 0.50 -G_M43427_IG15: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r6
+ mov r0, r7
b SHORT G_M43427_IG09 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r2, [r2-0x02] cmp r2, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1 bls SHORT G_M43427_IG12 ldrh r0, [lr-0x02] cmp r0, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
b SHORT G_M43427_IG12 ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M43427_IG19
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M43427_IG18
ldrh r0, [r2] cmp r0, 128
- bge SHORT G_M43427_IG22
+ bge SHORT G_M43427_IG21
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0
- bne SHORT G_M43427_IG22
+ bne SHORT G_M43427_IG21
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M43427_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4] cmp r5, 0
- beq SHORT G_M43427_IG20 - str r7, [r5] - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M43427_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M43427_IG19 + str r8, [r5] + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M43427_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG20: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43427_IG21: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r4]
- str r6, [sp] // [V17 OutArgs] - str r8, [sp+0x04] // [V17 OutArgs+0x04]
+ str r7, [sp] // [V17 OutArgs] + str r6, [sp+0x04] // [V17 OutArgs+0x04]
str r5, [sp+0x08] // [V17 OutArgs+0x08] ldr r0, [r4+0x10]
- mov r2, r7
+ mov r2, r8
movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method> ; gcrRegs -[r4] ; gcr arg pop 0
- ;; size=26 bbWeight=0.50 PerfScore 4.50 -G_M43427_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 9.00 +G_M43427_IG22: ; bbWeight=1, epilog, nogc, extend
add sp, 24 ...

-4 (-1.04%) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (Tier0-FullOpts)

@@ -8,15 +8,15 @@ ; 3 inlinees with PGO data; 17 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2 ; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr @@ -30,7 +30,7 @@ ;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.50) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6 ) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,41 +70,41 @@ G_M3596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M3596_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0 - beq G_M3596_IG24 - ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0 + beq G_M3596_IG23 + ;; size=14 bbWeight=1 PerfScore 4.00
G_M3596_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq G_M3596_IG25
+ beq G_M3596_IG24
;; size=8 bbWeight=1 PerfScore 3.00 G_M3596_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M3596_IG05 movs r0, 0 b SHORT G_M3596_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M3596_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M3596_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- beq SHORT G_M3596_IG14 - ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M3596_IG24 + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M3596_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - ble SHORT G_M3596_IG15
+ cmp r7, r8 + ble SHORT G_M3596_IG14
;; size=4 bbWeight=1 PerfScore 2.00 G_M3596_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M3596_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r3, [sp+0x3C] @@ -123,21 +123,21 @@ G_M3596_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldrh r12, [r2] ldrh r9, [lr] cmp r12, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
cmp r9, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r12] cmp r10, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r9] cmp r10, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
cmp r12, r9
- bne SHORT G_M3596_IG16
+ bne SHORT G_M3596_IG15
adds r2, r2, 2 add lr, lr, 2 subs r0, r0, 1 @@ -145,16 +145,16 @@ G_M3596_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref bne SHORT G_M3596_IG10 ;; size=72 bbWeight=4 PerfScore 92.00 G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - bge SHORT G_M3596_IG18
+ cmp r7, r8 + bge SHORT G_M3596_IG17
ldrh r2, [lr] cmp r2, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw lr, 0xd1ff movt lr, 0xd1ff ldrb r0, [lr+r2] cmp r0, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
;; size=28 bbWeight=0.50 PerfScore 5.00 G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4] @@ -166,84 +166,80 @@ G_M3596_IG13: ; bbWeight=0.50, epilog, nogc, extend add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG14: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3596_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3] - b SHORT G_M3596_IG25 - ;; size=6 bbWeight=0.25 PerfScore 0.50 -G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r6
+ mov r0, r7
b SHORT G_M3596_IG09 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - lsls r0, r6, 1
+G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + lsls r0, r7, 1
adds r0, r3, r0 subs r0, r0, 2 cmp r0, r2
- bls SHORT G_M3596_IG17
+ bls SHORT G_M3596_IG16
ldrh r2, [r2+0x02] cmp r2, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - lsls r0, r7, 1
+G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + lsl r0, r8, 1
adds r0, r1, r0 subs r0, r0, 2 cmp r0, lr bls SHORT G_M3596_IG12 ldrh r0, [lr+0x02] cmp r0, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
b SHORT G_M3596_IG12
- ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M3596_IG19
+ ;; size=22 bbWeight=0.50 PerfScore 4.50 +G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M3596_IG18
ldrh r0, [r2] cmp r0, 128
- bge SHORT G_M3596_IG22
+ bge SHORT G_M3596_IG21
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0
- bne SHORT G_M3596_IG22
+ bne SHORT G_M3596_IG21
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M3596_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4] cmp r5, 0
- beq SHORT G_M3596_IG20 - str r7, [r5] - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M3596_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M3596_IG19 + str r8, [r5] + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M3596_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M3596_IG20: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M3596_IG21: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r4]
- str r6, [sp] // [V17 OutArgs] - str r8, [sp+0x04] // [V17 OutArgs+0x04]
+ str r7, [sp] // [V17 OutArgs] + str r6, [sp+0x04] // [V17 OutArgs+0x04]
str r5, [sp+0x08] // [V17 OutArgs+0x08] ldr r0, [r4+0x10]
- mov r2, r7
+ mov r2, r8
movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] ...

-4 (-0.96%) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (Tier0-FullOpts)

@@ -8,15 +8,15 @@ ; 4 inlinees with PGO data; 17 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T18] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T02] ( 5, 50 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T03] ( 7, 38.50) int -> r9 ; V11 loc6 [V11,T04] ( 7, 38.50) int -> r10 @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r12 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> r2 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> r2 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.75) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6.25) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.25) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 6.75) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,41 +70,41 @@ G_M23311_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M23311_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0 - beq G_M23311_IG30 - ;; size=10 bbWeight=1 PerfScore 4.00
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0 + beq G_M23311_IG29 + ;; size=14 bbWeight=1 PerfScore 4.00
G_M23311_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq G_M23311_IG31
+ beq G_M23311_IG30
;; size=8 bbWeight=1 PerfScore 3.00 G_M23311_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M23311_IG05 movs r0, 0 b SHORT G_M23311_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M23311_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M23311_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- beq SHORT G_M23311_IG15 - ;; size=6 bbWeight=0.50 PerfScore 1.50
+ beq G_M23311_IG30 + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M23311_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - ble SHORT G_M23311_IG16
+ cmp r7, r8 + ble SHORT G_M23311_IG15
;; size=4 bbWeight=1 PerfScore 2.00 G_M23311_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r7
+ mov r0, r8
;; size=2 bbWeight=0.25 PerfScore 0.25 G_M23311_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r3, [sp+0x3C] @@ -113,35 +113,35 @@ G_M23311_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r1, [sp+0x44] // [V02 arg2] ; byrRegs +[r1] str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2 sub r9, r2, 2
- lsls r2, r7, 1
+ lsl r2, r8, 1
adds r2, r1, r2 sub r10, r2, 2 cmp r0, 0 beq SHORT G_M23311_IG12
- ;; size=28 bbWeight=1 PerfScore 12.00
+ ;; size=30 bbWeight=1 PerfScore 12.00
G_M23311_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r1 r3] ldrh r2, [r9] ldrh lr, [r10] cmp r2, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
cmp lr, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r12, 0xd1ff movt r12, 0xd1ff ldrb r12, [r12+r2] cmp r12, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
movw r12, 0xd1ff movt r12, 0xd1ff ldrb r12, [r12+lr] cmp r12, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
cmp r2, lr
- bne SHORT G_M23311_IG17
+ bne SHORT G_M23311_IG16
;; size=58 bbWeight=4 PerfScore 72.00 G_M23311_IG11: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz sub r9, r9, 2 @@ -151,16 +151,16 @@ G_M23311_IG11: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr bne SHORT G_M23311_IG10 ;; size=14 bbWeight=16 PerfScore 80.00 G_M23311_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r6, r7 - bge SHORT G_M23311_IG24
+ cmp r7, r8 + bge SHORT G_M23311_IG23
ldrh r0, [r10] cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
;; size=26 bbWeight=0.50 PerfScore 5.00 G_M23311_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4] @@ -174,96 +174,92 @@ G_M23311_IG14: ; bbWeight=0.50, epilog, nogc, extend ;; size=10 bbWeight=0.50 PerfScore 2.00 G_M23311_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
- str r8, [sp+0x4C] // [V03 arg3] - b SHORT G_M23311_IG31 - ;; size=6 bbWeight=0.25 PerfScore 0.50 -G_M23311_IG16: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r6
+ mov r0, r7
b SHORT G_M23311_IG09 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M23311_IG17: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG16: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r12, r2, 97 cmp r12, 25
- bhi SHORT G_M23311_IG19
+ bhi SHORT G_M23311_IG18
;; size=10 bbWeight=16 PerfScore 48.00
-G_M23311_IG18: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M23311_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
subs r2, 32 ;; size=2 bbWeight=8 PerfScore 8.00
-G_M23311_IG19: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG18: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r12, lr, 97 cmp r12, 25
- bhi SHORT G_M23311_IG21
+ bhi SHORT G_M23311_IG20
;; size=10 bbWeight=16 PerfScore 48.00
-G_M23311_IG20: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M23311_IG19: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
sub lr, lr, 32 ;; size=4 bbWeight=8 PerfScore 8.00
-G_M23311_IG21: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG20: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, lr beq SHORT G_M23311_IG11 ;; size=4 bbWeight=16 PerfScore 32.00
-G_M23311_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r9, r3
- bls SHORT G_M23311_IG23
+ bls SHORT G_M23311_IG22
ldrh r0, [r9-0x02] cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M23311_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r10, r1 bls SHORT G_M23311_IG13 ldrh r0, [r10-0x02] cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
b SHORT G_M23311_IG13 ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M23311_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M23311_IG25
+G_M23311_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M23311_IG24
ldrh r0, [r9] cmp r0, 128
- bge SHORT G_M23311_IG28
+ bge SHORT G_M23311_IG27
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0
- bne SHORT G_M23311_IG28
+ bne SHORT G_M23311_IG27
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M23311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23311_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4] cmp r5, 0
- beq SHORT G_M23311_IG26 - str r7, [r5] - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M23311_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq SHORT G_M23311_IG25 + str r8, [r5] + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M23311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

+4 (+0.87%) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T10] ( 3, 6 ) ref -> r6 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller> ; V01 RetBuf [V01,T13] ( 4, 4 ) byref -> r8 single-def
-; V02 arg1 [V02,T06] ( 11, 13.62) ref -> r5 class-hnd <System.Linq.Expressions.Expression>
+; V02 arg1 [V02,T07] ( 11, 13.62) ref -> r5 class-hnd <System.Linq.Expressions.Expression>
; V03 arg2 [V03,T11] ( 3, 6 ) int -> r7 single-def ; V04 loc0 [V04,T16] ( 3, 2 ) ref -> r9 class-hnd single-def <System.Linq.Expressions.BlockExpression> ; V05 loc1 [V05,T14] ( 3, 6 ) int -> [sp+0x24] spill-single-def ; V06 loc2 [V06,T08] ( 5, 11 ) int -> [sp+0x20]
-; V07 loc3 [V07,T07] ( 6, 13.50) ref -> [sp+0x0C] class-hnd <<unknown class>>
+; V07 loc3 [V07,T05] ( 6, 19.42) ref -> [sp+0x0C] class-hnd <<unknown class>>
; V08 loc4 [V08,T03] ( 10, 38 ) int -> [sp+0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Linq.Expressions.Expression> ; V10 loc6 [V10 ] ( 4, 12 ) struct ( 8) [sp+0x14] do-not-enreg[XS] must-init addr-exposed <System.Linq.Expressions.Compiler.StackSpiller+Result> @@ -25,14 +25,14 @@ ;* V14 tmp3 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Linq.Expressions.Compiler.StackSpiller+Result> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>> ; V16 tmp5 [V16,T02] ( 4, 40 ) ref -> [sp+0x08] class-hnd spill-single-def "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
-; V17 tmp6 [V17,T04] ( 6, 21.16) ref -> [sp+0x04] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V17 tmp6 [V17,T04] ( 6, 27.08) ref -> [sp+0x04] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V18 tmp7 [V18,T00] ( 12, 82.16) int -> [sp+0x10] "Inline stloc first use temp" ; V19 tmp8 [V19,T01] ( 4, 64 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Linq.Expressions.Expression> ; V20 tmp9 [V20 ] ( 2, 6 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V10.Node (fldOffset=0x0)" P-DEP ; V21 tmp10 [V21 ] ( 3, 10 ) int -> [sp+0x18] do-not-enreg[X] addr-exposed "field V10.Action (fldOffset=0x4)" P-DEP ; V22 tmp11 [V22,T17] ( 2, 2 ) ref -> r1 single-def "field V14.Node (fldOffset=0x0)" P-INDEP ; V23 tmp12 [V23,T18] ( 2, 2 ) int -> r2 "field V14.Action (fldOffset=0x4)" P-INDEP
-; V24 tmp13 [V24,T05] ( 2, 16 ) ref -> r2 "argument with side effect"
+; V24 tmp13 [V24,T06] ( 2, 16 ) ref -> r2 "argument with side effect"
; V25 tmp14 [V25,T12] ( 2, 8 ) int -> r1 "argument with side effect" ; V26 cse0 [V26,T09] ( 4, 8 ) int -> r10 "CSE - aggressive" ; @@ -96,9 +96,9 @@ G_M11785_IG06: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r ; GC ptr vars +{V07} mov lr, 0 cmp r4, 0
- ble SHORT G_M11785_IG12
+ ble SHORT G_M11785_IG14
;; size=10 bbWeight=1 PerfScore 4.00
-G_M11785_IG07: ; bbWeight=4, gcVars=00000080 {V07}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG07: ; bbWeight=4, gcVars=00000020 {V07}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
mov r0, r5 ; gcrRegs +[r0] str lr, [sp+0x1C] // [V08 loc4] @@ -122,13 +122,13 @@ G_M11785_IG07: ; bbWeight=4, gcVars=00000080 {V07}, gcrefRegs=0260 {r5 r6 ldr r3, [sp+0x0C] // [V07 loc3] ; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M11785_IG16
+ bne SHORT G_M11785_IG13
;; size=50 bbWeight=4 PerfScore 80.00 G_M11785_IG08: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz ; GC ptr vars -{V07} ldr r0, [sp+0x18] // [V21 tmp10] cmp r0, 0
- beq SHORT G_M11785_IG16
+ beq SHORT G_M11785_IG12
mov r0, r5 ; gcrRegs +[r0] ldr r3, [r10+0x18] @@ -158,14 +158,14 @@ G_M11785_IG08: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 movs r2, 0 ldr r4, [sp+0x1C] // [V08 loc4] cmp r4, 0
- ble SHORT G_M11785_IG15
+ ble SHORT G_M11785_IG17
;; size=64 bbWeight=2 PerfScore 50.00 G_M11785_IG09: ; bbWeight=1, gcVars=00000014 {V16 V17}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz ; gcrRegs -[r0] ldr r0, [r3+0x04] str r4, [sp+0x1C] // [V08 loc4] cmp r0, r4
- blt SHORT G_M11785_IG13
+ blt SHORT G_M11785_IG15
;; size=8 bbWeight=1 PerfScore 4.00 G_M11785_IG10: ; bbWeight=15.84, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, byref, isz ; gcrRegs -[r3] @@ -200,23 +200,32 @@ G_M11785_IG10: ; bbWeight=15.84, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=010 cmp r2, r4 blt SHORT G_M11785_IG10 ;; size=60 bbWeight=15.84 PerfScore 332.64
-G_M11785_IG11: ; bbWeight=2, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG11: ; bbWeight=7.92, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V16} ldr r3, [sp+0x04] // [V17 tmp6] ; gcrRegs +[r3] ldr r4, [sp+0x1C] // [V08 loc4]
- b SHORT G_M11785_IG15 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M11785_IG12: ; bbWeight=0.50, gcVars=00000080 {V07}, gcrefRegs=0220 {r5 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+ b SHORT G_M11785_IG17 + ;; size=6 bbWeight=7.92 PerfScore 23.76 +G_M11785_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz + ; GC ptr vars -{V17} + ldr r4, [sp+0x1C] // [V08 loc4] + b SHORT G_M11785_IG17 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M11785_IG13: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref, isz + ldr r4, [sp+0x1C] // [V08 loc4] + b SHORT G_M11785_IG17 + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M11785_IG14: ; bbWeight=0.50, gcVars=00000020 {V07}, gcrefRegs=0220 {r5 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3 r6]
- ; GC ptr vars -{V17} +{V07}
+ ; GC ptr vars +{V05 V07}
ldr r3, [sp+0x0C] // [V07 loc3] ; gcrRegs +[r3]
- b SHORT G_M11785_IG19
+ b SHORT G_M11785_IG20
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG15: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3] +[r6]
- ; GC ptr vars -{V07} +{V02 V04 V16 V17}
+ ; GC ptr vars -{V05 V07} +{V02 V04 V16 V17}
ldr lr, [sp+0x08] ; gcrRegs +[lr] ldr r0, [lr+0x04] @@ -236,7 +245,7 @@ G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 ; gcrRegs -[r0] ldr r2, [sp+0x10] // [V18 tmp7] cmp r2, r0
- bhs SHORT G_M11785_IG25
+ bhs SHORT G_M11785_IG26
add r0, r3, 8 ; byrRegs +[r0] lsl lr, r2, 2 @@ -249,27 +258,24 @@ G_M11785_IG13: ; bbWeight=0.16, gcVars=00000014 {V16 V17}, gcrefRegs=0260 adds r2, r2, 1 ldr r4, [sp+0x1C] // [V08 loc4] cmp r2, r4
- blt SHORT G_M11785_IG24
+ blt SHORT G_M11785_IG25
;; size=66 bbWeight=0.16 PerfScore 3.84
-G_M11785_IG14: ; bbWeight=0.08, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref
+G_M11785_IG16: ; bbWeight=0.08, gcVars=00000010 {V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref
; GC ptr vars -{V02 V04 V16} ldr r3, [sp+0x04] // [V17 tmp6] ; gcrRegs +[r3] ;; size=2 bbWeight=0.08 PerfScore 0.08
-G_M11785_IG15: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref - str r4, [sp+0x1C] // [V08 loc4] - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M11785_IG16: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG17: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V17} cmp r3, 0
- beq SHORT G_M11785_IG18
+ beq SHORT G_M11785_IG19
;; size=4 bbWeight=4 PerfScore 8.00
-G_M11785_IG17: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref
+G_M11785_IG18: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, byref
str r3, [sp+0x0C] // [V07 loc3] ; GC ptr vars +{V07} mov r0, r3 ; gcrRegs +[r0]
- ldr r1, [sp+0x1C] // [V08 loc4]
+ mov r1, r4
ldr r2, [sp+0x14] // [V20 tmp9] ; gcrRegs +[r2] movw lr, 0xd1ff @@ -279,21 +285,20 @@ G_M11785_IG17: ; bbWeight=2, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 ldr r3, [sp+0x0C] // [V07 loc3] ; gcrRegs +[r3] ;; size=20 bbWeight=2 PerfScore 16.00
-G_M11785_IG18: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG19: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; GC ptr vars -{V07}
- ldr lr, [sp+0x1C] // [V08 loc4] - add lr, lr, 1 - ldr r4, [sp+0x24] // [V05 loc1] - cmp lr, r4 - blt SHORT G_M11785_IG23 - ;; size=14 bbWeight=4 PerfScore 20.00 -G_M11785_IG19: ; bbWeight=1, gcrefRegs=0228 {r3 r5 r9}, byrefRegs=0100 {r8}, byref, isz
+ adds r4, r4, 1 + ldr lr, [sp+0x24] // [V05 loc1] + cmp r4, lr + blt SHORT G_M11785_IG24 + ;; size=10 bbWeight=4 PerfScore 16.00 +G_M11785_IG20: ; bbWeight=1, gcrefRegs=0228 {r3 r5 r9}, byrefRegs=0100 {r8}, byref, isz
; gcrRegs -[r6]
- ldr r2, [sp+0x20] // [V06 loc2] - cmp r2, 0 - beq SHORT G_M11785_IG21
+ ldr r6, [sp+0x20] // [V06 loc2] + cmp r6, 0 + beq SHORT G_M11785_IG22
;; size=6 bbWeight=1 PerfScore 3.00
-G_M11785_IG20: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r8}, byref
+G_M11785_IG21: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r8}, byref
; gcrRegs -[r5] mov r0, r9 ; gcrRegs +[r0] @@ -309,9 +314,9 @@ G_M11785_IG20: ; bbWeight=0.50, gcrefRegs=0208 {r3 r9}, byrefRegs=0100 {r mov r5, r0 ; gcrRegs +[r5] ;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M11785_IG21: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, byref
+G_M11785_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, byref
; gcrRegs -[r0]
- ldr r2, [sp+0x20] // [V06 loc2]
+ mov r2, r6
mov r1, r5 ; gcrRegs +[r1] mov r0, r8 @@ -323,23 +328,24 @@ G_M11785_IG21: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0100 {r8}, by ; byrRegs -[r0] str r2, [r8+0x04] ;; size=20 bbWeight=1 PerfScore 7.00
-G_M11785_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M11785_IG23: ; bbWeight=1, epilog, nogc, extend
add sp, 44 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M11785_IG23: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M11785_IG24: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=0268 {r3 r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs +[r3 r5-r6 r9] str r3, [sp+0x0C] // [V07 loc3] ; GC ptr vars +{V07}
+ mov lr, r4
b SHORT G_M11785_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00 -G_M11785_IG24: ; bbWeight=0.08, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
+ ;; size=6 bbWeight=2 PerfScore 6.00 +G_M11785_IG25: ; bbWeight=0.08, gcVars=00000014 {V16 V17}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0100 {r8}, gcvars, byref, isz
; gcrRegs -[r3] ; GC ptr vars -{V07} +{V02 V04 V16 V17} str r4, [sp+0x1C] // [V08 loc4]
- b SHORT G_M11785_IG13
+ b SHORT G_M11785_IG15
;; size=4 bbWeight=0.08 PerfScore 0.16
-G_M11785_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11785_IG26: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r5-r6 r9] ; byrRegs -[r8] ; GC ptr vars -{V02 V04 V16 V17} @@ -349,7 +355,7 @@ G_M11785_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 460, prolog size 14, PerfScore 571.60, instruction count 180, allocated bytes for code 460 (MethodHash=be09d1f6) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
+; Total bytes of code 464, prolog size 14, PerfScore 591.35, instruction count 183, allocated bytes for code 464 (MethodHash=be09d1f6) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -361,7 +367,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0 ...

+4 (+1.24%) : 13986.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,12 +5,12 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 7, 5.67) byref -> r4 this single-def -; V01 TypeCtx [V01,T06] ( 6, 4 ) int -> r1 single-def
+; V00 this [V00,T03] ( 7, 8.13) byref -> r4 this single-def +; V01 TypeCtx [V01,T07] ( 6, 4 ) int -> r1 single-def
; V02 arg1 [V02,T09] ( 3, 3 ) ref -> r5 class-hnd single-def <System.__Canon> ; V03 arg2 [V03,T10] ( 3, 3 ) ref -> r6 class-hnd single-def <System.__Canon> ; V04 loc0 [V04,T15] ( 4, 2.33) ref -> r0 class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> @@ -18,13 +18,13 @@ ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T11] ( 3, 5.00) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09,T08] ( 4, 5 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V09 tmp3 [V09,T06] ( 4, 7.47) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V10 tmp4 [V10,T13] ( 4, 3.33) ref -> r2 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V11 tmp5 [V11,T04] ( 4, 8.33) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V12 tmp6 [V12,T07] ( 6, 5.03) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T05] ( 4, 8.33) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp6 [V12,T08] ( 6, 5.03) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V13 tmp7 [V13,T00] ( 11, 27.57) int -> r10 "Inline stloc first use temp" ; V14 tmp8 [V14,T01] ( 6, 16.67) ref -> r1 class-hnd "Inline stloc first use temp" <System.__Canon>
-; V15 cse0 [V15,T03] ( 5, 8.75) int -> [sp+0x00] spill-single-def "CSE - aggressive"
+; V15 cse0 [V15,T04] ( 5, 8.75) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V16 cse1 [V16,T02] ( 3, 16.50) int -> r0 "CSE - aggressive" ; V17 rat0 [V17,T14] ( 3, 3.33) int -> r0 "runtime lookup" ; V18 rat1 [V18,T12] ( 3, 4.67) int -> r0 "fgMakeTemp is creating a new local variable" @@ -47,59 +47,17 @@ G_M35195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, ldr r0, [r4] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M35195_IG05 - ;; size=6 bbWeight=1 PerfScore 3.00
+ bne G_M35195_IG18 + ;; size=8 bbWeight=1 PerfScore 3.00
G_M35195_IG03: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ldr r0, [r1+0x24] ldr r0, [r0] ldr r0, [r0+0x0C] cmp r0, 0
- beq SHORT G_M35195_IG08
+ beq SHORT G_M35195_IG11
;; size=10 bbWeight=0.83 PerfScore 4.17
-G_M35195_IG04: ; bbWeight=0.67, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz - b SHORT G_M35195_IG09 - ;; size=2 bbWeight=0.67 PerfScore 0.67 -G_M35195_IG05: ; bbWeight=0.17, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r0+0x0C] - lsls r3, r3, 1 - adds r2, r3, 2 - ldr r0, [r0+0x04] - ldr r0, [r0+0x04] - ; gcrRegs -[r0] - cmp r0, r2 - ble SHORT G_M35195_IG21 - ;; size=14 bbWeight=0.17 PerfScore 1.17 -G_M35195_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref - ldr r0, [r4] - ; gcrRegs +[r0] - mov r1, r5 - ; gcrRegs +[r1] - mov r2, r6 - ; gcrRegs +[r2] - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr r3, [lr] - ldr lr, [r0] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M35195_IG07: ; bbWeight=1, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} - bx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M35195_IG08: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, gcvars, byref - ; gcrRegs -[r0-r2] - mov r0, r1 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - ;; size=20 bbWeight=0.17 PerfScore 1.00 -G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG04: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -118,7 +76,7 @@ G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r ldr r2, [r4] ; gcrRegs +[r2] cmp r2, 0
- beq SHORT G_M35195_IG19
+ beq SHORT G_M35195_IG15
ldr r8, [r2+0x04] ; gcrRegs +[r8] ldr r9, [r2+0x08] @@ -127,26 +85,26 @@ G_M35195_IG09: ; bbWeight=0.83, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r ldr r3, [r8+0x04] str r3, [sp] cmp r3, 0
- ble SHORT G_M35195_IG19
+ ble SHORT G_M35195_IG15
;; size=56 bbWeight=0.83 PerfScore 16.67
-G_M35195_IG10: ; bbWeight=0.42, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG05: ; bbWeight=0.42, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r2] cmp r9, 0
- beq SHORT G_M35195_IG16
+ beq SHORT G_M35195_IG12
ldr r2, [r9+0x04] cmp r2, r3
- blt SHORT G_M35195_IG15
+ blt SHORT G_M35195_IG10
;; size=14 bbWeight=0.42 PerfScore 2.08
-G_M35195_IG11: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG06: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r2, r8, 8 ; byrRegs +[r2] lsl r0, r10, 2 ldr r1, [r2+r0] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M35195_IG13
+ beq SHORT G_M35195_IG08
;; size=14 bbWeight=6.60 PerfScore 33.00
-G_M35195_IG12: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+G_M35195_IG07: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
; byrRegs -[r2] add r2, r9, 8 ; byrRegs +[r2] @@ -162,34 +120,47 @@ G_M35195_IG12: ; bbWeight=3.30, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref ; gcrRegs -[r0-r2] ; gcr arg pop 0 ;; size=22 bbWeight=3.30 PerfScore 23.10
-G_M35195_IG13: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG08: ; bbWeight=6.60, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1 ldr r3, [sp] // [V15 cse0] cmp r3, r10
- bgt SHORT G_M35195_IG11
+ bgt SHORT G_M35195_IG06
;; size=10 bbWeight=6.60 PerfScore 26.40
-G_M35195_IG14: ; bbWeight=0.38, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG09: ; bbWeight=3.30, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r8-r9]
- b SHORT G_M35195_IG19 - ;; size=2 bbWeight=0.38 PerfScore 0.38 -G_M35195_IG15: ; bbWeight=0.21, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+ b SHORT G_M35195_IG15 + ;; size=2 bbWeight=3.30 PerfScore 3.30 +G_M35195_IG10: ; bbWeight=0.21, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r8-r9] ldr r3, [sp] // [V15 cse0]
- ;; size=2 bbWeight=0.21 PerfScore 0.21 -G_M35195_IG16: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ b SHORT G_M35195_IG12 + ;; size=4 bbWeight=0.21 PerfScore 0.42 +G_M35195_IG11: ; bbWeight=0.17, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r7-r9] + mov r0, r1 + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + b SHORT G_M35195_IG04 + ;; size=22 bbWeight=0.17 PerfScore 1.17 +G_M35195_IG12: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs +[r7-r9]
add r2, r8, 8 ; byrRegs +[r2] lsl r0, r10, 2 ldr r1, [r2+r0] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M35195_IG18
+ beq SHORT G_M35195_IG14
;; size=14 bbWeight=0.07 PerfScore 0.33
-G_M35195_IG17: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG13: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r2] ldr r2, [r9+0x04] cmp r10, r2
- bhs SHORT G_M35195_IG20
+ bhs SHORT G_M35195_IG19
add r2, r9, 8 ; byrRegs +[r2] lsl r0, r10, 2 @@ -206,12 +177,12 @@ G_M35195_IG17: ; bbWeight=0.03, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref ; gcr arg pop 0 ldr r3, [sp] // [V15 cse0] ;; size=36 bbWeight=0.03 PerfScore 0.40
-G_M35195_IG18: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG14: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1 cmp r3, r10
- bgt SHORT G_M35195_IG16
+ bgt SHORT G_M35195_IG12
;; size=8 bbWeight=0.07 PerfScore 0.20
-G_M35195_IG19: ; bbWeight=0.83, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG15: ; bbWeight=3.30, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r8-r9] mov r0, r4 ; byrRegs +[r0] @@ -222,9 +193,38 @@ G_M35195_IG19: ; bbWeight=0.83, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1 r7] ; byrRegs -[r0]
- b SHORT G_M35195_IG06 - ;; size=16 bbWeight=0.83 PerfScore 5.00 -G_M35195_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=3.30 PerfScore 16.50 +G_M35195_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref + ldr r0, [r4] + ; gcrRegs +[r0] + mov r1, r5 + ; gcrRegs +[r1] + mov r2, r6 + ; gcrRegs +[r2] + movw lr, 0xd1ff + movt lr, 0xd1ff + ldr r3, [lr] + ldr lr, [r0] + ;; size=22 bbWeight=1 PerfScore 7.00 +G_M35195_IG17: ; bbWeight=1, epilog, nogc, extend + add sp, 12 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} + bx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M35195_IG18: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz + ; gcrRegs -[r1-r2] + ldr r3, [r0+0x0C] + lsls r3, r3, 1 + adds r2, r3, 2 + ldr r0, [r0+0x04] + ldr r0, [r0+0x04] + ; gcrRegs -[r0]
...

+4 (+1.24%) : 24592.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,12 +5,12 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 7, 5.75) byref -> r4 this single-def -; V01 TypeCtx [V01,T06] ( 6, 4.05) int -> r1 single-def
+; V00 this [V00,T03] ( 7, 8.34) byref -> r4 this single-def +; V01 TypeCtx [V01,T07] ( 6, 4.05) int -> r1 single-def
; V02 arg1 [V02,T10] ( 3, 3 ) ref -> r5 class-hnd single-def <System.__Canon> ; V03 arg2 [V03,T11] ( 3, 3 ) ref -> r6 class-hnd single-def <System.__Canon> ; V04 loc0 [V04,T15] ( 4, 2.25) ref -> r0 class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> @@ -18,13 +18,13 @@ ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 3, 5.25) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09,T08] ( 4, 5.25) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V09 tmp3 [V09,T06] ( 4, 7.84) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V10 tmp4 [V10,T13] ( 4, 3.50) ref -> r2 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V11 tmp5 [V11,T04] ( 4, 8.75) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V12 tmp6 [V12,T07] ( 6, 5.29) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T05] ( 4, 8.75) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp6 [V12,T08] ( 6, 5.29) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V13 tmp7 [V13,T00] ( 11, 28.95) int -> r10 "Inline stloc first use temp" ; V14 tmp8 [V14,T01] ( 6, 17.50) ref -> r1 class-hnd "Inline stloc first use temp" <System.__Canon>
-; V15 cse0 [V15,T03] ( 5, 9.19) int -> [sp+0x00] spill-single-def "CSE - aggressive"
+; V15 cse0 [V15,T04] ( 5, 9.19) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V16 cse1 [V16,T02] ( 3, 17.33) int -> r0 "CSE - aggressive" ; V17 rat0 [V17,T14] ( 3, 3.50) int -> r0 "runtime lookup" ; V18 rat1 [V18,T12] ( 3, 4.90) int -> r0 "fgMakeTemp is creating a new local variable" @@ -47,59 +47,17 @@ G_M35195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, ldr r0, [r4] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M35195_IG05 - ;; size=6 bbWeight=1 PerfScore 3.00
+ bne G_M35195_IG18 + ;; size=8 bbWeight=1 PerfScore 3.00
G_M35195_IG03: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r0] ldr r0, [r1+0x24] ldr r0, [r0] ldr r0, [r0+0x0C] cmp r0, 0
- beq SHORT G_M35195_IG08
+ beq SHORT G_M35195_IG11
;; size=10 bbWeight=0.88 PerfScore 4.38
-G_M35195_IG04: ; bbWeight=0.70, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz - b SHORT G_M35195_IG09 - ;; size=2 bbWeight=0.70 PerfScore 0.70 -G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, byref, isz - ; gcrRegs +[r0] - ldr r3, [r0+0x0C] - lsls r3, r3, 1 - adds r2, r3, 2 - ldr r0, [r0+0x04] - ldr r0, [r0+0x04] - ; gcrRegs -[r0] - cmp r0, r2 - ble SHORT G_M35195_IG21 - ;; size=14 bbWeight=0.12 PerfScore 0.88 -G_M35195_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref - ldr r0, [r4] - ; gcrRegs +[r0] - mov r1, r5 - ; gcrRegs +[r1] - mov r2, r6 - ; gcrRegs +[r2] - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr r3, [lr] - ldr lr, [r0] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M35195_IG07: ; bbWeight=1, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} - bx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M35195_IG08: ; bbWeight=0.18, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, gcvars, byref - ; gcrRegs -[r0-r2] - mov r0, r1 - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - ;; size=20 bbWeight=0.18 PerfScore 1.05 -G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG04: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST @@ -118,7 +76,7 @@ G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r ldr r2, [r4] ; gcrRegs +[r2] cmp r2, 0
- beq SHORT G_M35195_IG19
+ beq SHORT G_M35195_IG15
ldr r8, [r2+0x04] ; gcrRegs +[r8] ldr r9, [r2+0x08] @@ -127,26 +85,26 @@ G_M35195_IG09: ; bbWeight=0.88, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r ldr r3, [r8+0x04] str r3, [sp] cmp r3, 0
- ble SHORT G_M35195_IG19
+ ble SHORT G_M35195_IG15
;; size=56 bbWeight=0.88 PerfScore 17.50
-G_M35195_IG10: ; bbWeight=0.44, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG05: ; bbWeight=0.44, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r2] cmp r9, 0
- beq SHORT G_M35195_IG16
+ beq SHORT G_M35195_IG12
ldr r2, [r9+0x04] cmp r2, r3
- blt SHORT G_M35195_IG15
+ blt SHORT G_M35195_IG10
;; size=14 bbWeight=0.44 PerfScore 2.19
-G_M35195_IG11: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG06: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r2, r8, 8 ; byrRegs +[r2] lsl r0, r10, 2 ldr r1, [r2+r0] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M35195_IG13
+ beq SHORT G_M35195_IG08
;; size=14 bbWeight=6.93 PerfScore 34.65
-G_M35195_IG12: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+G_M35195_IG07: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
; byrRegs -[r2] add r2, r9, 8 ; byrRegs +[r2] @@ -162,34 +120,47 @@ G_M35195_IG12: ; bbWeight=3.47, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref ; gcrRegs -[r0-r2] ; gcr arg pop 0 ;; size=22 bbWeight=3.47 PerfScore 24.26
-G_M35195_IG13: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG08: ; bbWeight=6.93, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1 ldr r3, [sp] // [V15 cse0] cmp r3, r10
- bgt SHORT G_M35195_IG11
+ bgt SHORT G_M35195_IG06
;; size=10 bbWeight=6.93 PerfScore 27.72
-G_M35195_IG14: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG09: ; bbWeight=3.47, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r8-r9]
- b SHORT G_M35195_IG19 - ;; size=2 bbWeight=0.40 PerfScore 0.40 -G_M35195_IG15: ; bbWeight=0.22, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref
+ b SHORT G_M35195_IG15 + ;; size=2 bbWeight=3.47 PerfScore 3.47 +G_M35195_IG10: ; bbWeight=0.22, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r8-r9] ldr r3, [sp] // [V15 cse0]
- ;; size=2 bbWeight=0.22 PerfScore 0.22 -G_M35195_IG16: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+ b SHORT G_M35195_IG12 + ;; size=4 bbWeight=0.22 PerfScore 0.44 +G_M35195_IG11: ; bbWeight=0.18, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs -[r7-r9] + mov r0, r1 + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + b SHORT G_M35195_IG04 + ;; size=22 bbWeight=0.18 PerfScore 1.23 +G_M35195_IG12: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs +[r7-r9]
add r2, r8, 8 ; byrRegs +[r2] lsl r0, r10, 2 ldr r1, [r2+r0] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M35195_IG18
+ beq SHORT G_M35195_IG14
;; size=14 bbWeight=0.07 PerfScore 0.35
-G_M35195_IG17: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG13: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r2] ldr r2, [r9+0x04] cmp r10, r2
- bhs SHORT G_M35195_IG20
+ bhs SHORT G_M35195_IG19
add r2, r9, 8 ; byrRegs +[r2] lsl r0, r10, 2 @@ -206,12 +177,12 @@ G_M35195_IG17: ; bbWeight=0.04, gcrefRegs=03E2 {r1 r5 r6 r7 r8 r9}, byref ; gcr arg pop 0 ldr r3, [sp] // [V15 cse0] ;; size=36 bbWeight=0.04 PerfScore 0.42
-G_M35195_IG18: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG14: ; bbWeight=0.07, gcrefRegs=03E0 {r5 r6 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz
add r10, r10, 1 cmp r3, r10
- bgt SHORT G_M35195_IG16
+ bgt SHORT G_M35195_IG12
;; size=8 bbWeight=0.07 PerfScore 0.21
-G_M35195_IG19: ; bbWeight=0.88, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M35195_IG15: ; bbWeight=3.47, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 {r4}, byref
; gcrRegs -[r8-r9] mov r0, r4 ; byrRegs +[r0] @@ -222,9 +193,38 @@ G_M35195_IG19: ; bbWeight=0.88, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0010 blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1 r7] ; byrRegs -[r0]
- b SHORT G_M35195_IG06 - ;; size=16 bbWeight=0.88 PerfScore 5.25 -G_M35195_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=3.47 PerfScore 17.33 +G_M35195_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref + ldr r0, [r4] + ; gcrRegs +[r0] + mov r1, r5 + ; gcrRegs +[r1] + mov r2, r6 + ; gcrRegs +[r2] + movw lr, 0xd1ff + movt lr, 0xd1ff + ldr r3, [lr] + ldr lr, [r0] + ;; size=22 bbWeight=1 PerfScore 7.00 +G_M35195_IG17: ; bbWeight=1, epilog, nogc, extend + add sp, 12 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} + bx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M35195_IG18: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz + ; gcrRegs -[r1-r2] + ldr r3, [r0+0x0C] + lsls r3, r3, 1 + adds r2, r3, 2 + ldr r0, [r0+0x04] + ldr r0, [r0+0x04] + ; gcrRegs -[r0]
...

benchmarks.run_tiered.linux.arm.checked.mch

-22 (-2.27%) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)

@@ -9,53 +9,53 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <BenchmarksGame.FannkuchRedux_2> ; V01 arg1 [V01,T21] ( 23, 81.50) int -> r4 single-def
-; V02 loc0 [V02,T15] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]> -; V03 loc1 [V03,T30] ( 11, 36.25) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]> -; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x00] class-hnd exact spill-single-def <int[]> -; V05 loc3 [V05,T33] ( 5, 23 ) int -> [sp+0x2C]
+; V02 loc0 [V02,T17] ( 23,135.09) ref -> r5 class-hnd exact single-def <int[]> +; V03 loc1 [V03,T31] ( 11, 36.25) ref -> [sp+0x08] class-hnd exact spill-single-def <int[]> +; V04 loc2 [V04,T37] ( 9, 10.76) ref -> [sp+0x04] class-hnd exact spill-single-def <int[]> +; V05 loc3 [V05,T34] ( 5, 23 ) int -> [sp+0x2C]
; V06 loc4 [V06,T40] ( 4, 6 ) int -> [sp+0x28] ; V07 loc5 [V07,T41] ( 4, 6 ) int -> [sp+0x24] ; V08 loc6 [V08,T24] ( 3, 65 ) int -> r10 single-def
-; V09 loc7 [V09,T32] ( 18, 29.12) int -> r1
+; V09 loc7 [V09,T33] ( 18, 29.12) int -> r1
; V10 loc8 [V10,T19] ( 8,104 ) int -> r2
-; V11 loc9 [V11,T29] ( 6, 40 ) int -> [sp+0x20]
+; V11 loc9 [V11,T29] ( 6, 45.92) int -> [sp+0x20]
; V12 loc10 [V12,T23] ( 12, 66.48) int -> r12 ; V13 loc11 [V13,T26] ( 3, 48 ) int -> r9 ; V14 loc12 [V14,T01] ( 6,328 ) int -> r8 ; V15 loc13 [V15,T02] ( 6,328 ) int -> r2
-; V16 loc14 [V16,T17] ( 2,128 ) int -> r7
+; V16 loc14 [V16,T18] ( 2,128 ) int -> r7
; V17 loc15 [V17,T39] ( 2, 8 ) int -> r3 ; V18 loc16 [V18,T22] ( 6, 80 ) int -> registers
-; V19 loc17 [V19,T00] ( 23,372.92) int -> r12 -; V20 loc18 [V20,T16] ( 5,132 ) int -> registers
+; V19 loc17 [V19,T00] ( 23,428.28) int -> r12 +; V20 loc18 [V20,T14] ( 5,159.68) int -> registers
; V21 loc19 [V21,T04] ( 16,289.27) int -> registers ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T31] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V23 tmp1 [V23,T32] ( 2, 32 ) int -> r1 "Strict ordering of exceptions for Array store"
; V24 tmp2 [V24,T05] ( 6,256.00) int -> registers "Strict ordering of exceptions for Array store" ; V25 tmp3 [V25,T38] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <int[]>
-; V26 tmp4 [V26,T34] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V26 tmp4 [V26,T35] ( 2, 16 ) int -> r1 "Strict ordering of exceptions for Array store"
; V27 tmp5 [V27,T25] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store" ; V28 tmp6 [V28,T06] ( 2,256 ) int -> lr "Strict ordering of exceptions for Array store" ; V29 cse0 [V29,T03] ( 15,325.55) byref -> registers hoist multi-def "CSE - aggressive" ; V30 cse1 [V30,T13] ( 12,163.40) int -> registers multi-def "CSE - aggressive"
-; V31 cse2 [V31,T14] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
+; V31 cse2 [V31,T15] ( 18,139.43) int -> r3 multi-def "CSE - aggressive"
; V32 cse3 [V32,T07] ( 21,217.59) byref -> registers hoist multi-def "CSE - aggressive"
-; V33 cse4 [V33,T18] ( 11,109.18) byref -> registers hoist multi-def "CSE - moderate"
+; V33 cse4 [V33,T16] ( 11,136.86) byref -> registers hoist multi-def "CSE - moderate"
; V34 cse5 [V34,T08] ( 3,192 ) int -> r0 "CSE - aggressive" ; V35 cse6 [V35,T09] ( 3,192 ) int -> r6 "CSE - aggressive" ; V36 cse7 [V36,T10] ( 4,190.08) int -> r2 "CSE - aggressive" ; V37 cse8 [V37,T11] ( 3,188.18) int -> r9 "CSE - aggressive"
-; V38 cse9 [V38,T12] ( 3,188.18) int -> lr "CSE - aggressive"
+; V38 cse9 [V38,T12] ( 3,188.18) int -> r6 "CSE - aggressive"
; V39 cse10 [V39,T20] ( 3, 95.04) int -> r12 "CSE - moderate" ; V40 cse11 [V40,T27] ( 3, 48 ) int -> r8 "CSE - moderate" ; V41 cse12 [V41,T28] ( 3, 47.52) int -> r8 "CSE - moderate"
-; V42 cse13 [V42,T35] ( 4, 15.84) int -> r3 "CSE - moderate" -; V43 cse14 [V43,T36] ( 9, 13.76) int -> [sp+0x1C] hoist multi-def "CSE - moderate" -; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate" -; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate" -; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x10] spill-single-def "CSE - moderate" -; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate" -; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x08] spill-single-def "CSE - moderate"
+; V42 cse13 [V42,T36] ( 4, 15.84) int -> r3 "CSE - moderate" +; V43 cse14 [V43,T30] ( 9, 41.44) int -> lr hoist multi-def "CSE - moderate" +; V44 cse15 [V44,T42] ( 4, 1.92) int -> [sp+0x1C] spill-single-def "CSE - moderate" +; V45 cse16 [V45,T43] ( 3, 1.92) int -> [sp+0x18] spill-single-def "CSE - moderate" +; V46 cse17 [V46,T44] ( 3, 1.92) int -> [sp+0x14] spill-single-def "CSE - moderate" +; V47 cse18 [V47,T45] ( 3, 1.90) int -> [sp+0x10] spill-single-def "CSE - moderate" +; V48 cse19 [V48,T46] ( 3, 1.90) int -> [sp+0x0C] spill-single-def "CSE - moderate"
; V49 cse20 [V49,T47] ( 4, 0.16) int -> r2 "CSE - conservative" ; ; Lcl frame size = 52 @@ -88,7 +88,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- str r6, [sp+0x04]
+ str r6, [sp+0x08]
; GC ptr vars +{V03} mov r1, r4 movw r0, 0xd1ff @@ -99,7 +99,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp]
+ str r0, [sp+0x04]
; GC ptr vars +{V04} movs r7, 1 str r7, [sp+0x2C] // [V05 loc3] @@ -112,7 +112,7 @@ G_M61974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp r4, 0 ble SHORT G_M61974_IG06 ;; size=98 bbWeight=1 PerfScore 32.00
-G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002040000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M61974_IG03: ; bbWeight=0.50, gcVars=0000002080000000 {V03 V04}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r3, [r5+0x04] cmp r3, r4 blt SHORT G_M61974_IG05 @@ -161,7 +161,7 @@ G_M61974_IG05: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 str r1, [r12+r2] adds r1, r1, 1 cmp r1, r4
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
blt SHORT G_M61974_IG05 ;; size=60 bbWeight=0.04 PerfScore 0.76 G_M61974_IG06: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz @@ -200,10 +200,10 @@ G_M61974_IG09: ; bbWeight=15.84, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=400 cmp r12, r4 blt SHORT G_M61974_IG09 ;; size=20 bbWeight=15.84 PerfScore 95.04
-G_M61974_IG10: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M61974_IG10: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 lr] b SHORT G_M61974_IG13
- ;; size=2 bbWeight=2 PerfScore 2.00
+ ;; size=2 bbWeight=7.92 PerfScore 7.92
G_M61974_IG11: ; bbWeight=0.01, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref add lr, r5, 8 ; byrRegs +[lr] @@ -224,11 +224,11 @@ G_M61974_IG12: ; bbWeight=0.16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=4002 cmp r12, r4 blt SHORT G_M61974_IG12 ;; size=40 bbWeight=0.16 PerfScore 1.92
-G_M61974_IG13: ; bbWeight=2, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
+G_M61974_IG13: ; bbWeight=7.92, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
; byrRegs -[r1 lr] mov lr, 1 str lr, [sp+0x20] // [V11 loc9]
- ;; size=8 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=7.92 PerfScore 15.84
G_M61974_IG14: ; bbWeight=16, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6+0x04] cmp r2, r1 @@ -271,9 +271,9 @@ G_M61974_IG17: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byr ldr lr, [sp+0x20] // [V11 loc9] add lr, lr, 1 str lr, [sp+0x20] // [V11 loc9]
- ldr r0, [sp] // [V04 loc2]
+ ldr r0, [sp+0x04] // [V04 loc2]
; gcrRegs +[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] b SHORT G_M61974_IG14 ;; size=20 bbWeight=16 PerfScore 112.00 @@ -294,7 +294,7 @@ G_M61974_IG19: ; bbWeight=2, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b ble SHORT G_M61974_IG22 str lr, [sp+0x28] // [V06 loc4] str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] ;; size=40 bbWeight=2 PerfScore 26.00 G_M61974_IG20: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz @@ -317,7 +317,7 @@ G_M61974_IG21: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {} G_M61974_IG22: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] str r7, [sp+0x2C] // [V05 loc3]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6] b SHORT G_M61974_IG20 ;; size=6 bbWeight=1 PerfScore 3.00 @@ -333,21 +333,20 @@ G_M61974_IG23: ; bbWeight=8, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {} str r1, [r5+0x0C] str lr, [r5+0x10] movs r7, 1
+ str r7, [sp+0x2C] // [V05 loc3]
mov r12, 2 cmp r4, 2
- str r7, [sp+0x2C] // [V05 loc3]
ble G_M61974_IG06 ;; size=42 bbWeight=8 PerfScore 120.00 G_M61974_IG24: ; bbWeight=4, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
ldr lr, [r0+0x04]
- str lr, [sp+0x1C] // [V43 cse14]
cmp lr, r4
- blt SHORT G_M61974_IG34
+ blt SHORT G_M61974_IG35
add r1, r0, 8 ; byrRegs +[r1]
- ;; size=20 bbWeight=4 PerfScore 28.00
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M61974_IG25: ; bbWeight=63.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r0] lsl r2, r12, 2 @@ -362,7 +361,7 @@ G_M61974_IG26: ; bbWeight=31.68, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 { ldr r8, [r5+0x08] mov r9, 0 cmp r12, 0
- blt SHORT G_M61974_IG32
+ blt SHORT G_M61974_IG33
;; size=18 bbWeight=31.68 PerfScore 158.40 G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref, isz cmp r3, r12 @@ -372,47 +371,52 @@ G_M61974_IG27: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r ;; size=8 bbWeight=3.96 PerfScore 11.88 G_M61974_IG28: ; bbWeight=62.73, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz ; gcrRegs -[r6]
- add lr, r9, 1 - cmp lr, r3
+ add r6, r9, 1 + cmp r6, r3
bhs G_M61974_IG44 lsl r9, r9, 2
- add r6, r9, 4 - ldr r6, [r0+r6] - str r6, [r0+r9] - mov r9, lr
+ add r7, r9, 4 + ldr r7, [r0+r7] + str r7, [r0+r9] + mov r9, r6
cmp r9, r12 ble SHORT G_M61974_IG28 ;; size=30 bbWeight=62.73 PerfScore 627.26 G_M61974_IG29: ; bbWeight=31.68, gcrefRegs=0020 {r5}, byrefRegs=0002 {r1}, byref, isz ; byrRegs -[r0]
- ldr r6, [sp+0x04] // [V03 loc1]
+ ldr r6, [sp+0x08] // [V03 loc1]
; gcrRegs +[r6]
- b SHORT G_M61974_IG32
+ b SHORT G_M61974_IG33
;; size=4 bbWeight=31.68 PerfScore 63.36 G_M61974_IG30: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0002 {r1}, byref add r0, r5, 8 ; byrRegs +[r0] ;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0060 {r5 r6}, byrefRegs=0003 {r0 r1}, byref, isz - add lr, r9, 1 - str lr, [sp+0x08] // [V48 cse19] - cmp lr, r3 - bhs G_M61974_IG44 - lsl lr, r9, 2 - str lr, [sp+0x0C] // [V47 cse18] - add lr, lr, 4 - ldr lr, [r0+lr]
+G_M61974_IG31: ; bbWeight=0.63, gcrefRegs=0020 {r5}, byrefRegs=0003 {r0 r1}, byref, isz + ; gcrRegs -[r6] + add r6, r9, 1 + str r6, [sp+0x0C] // [V48 cse19] + cmp r6, r3
...

-6 (-1.59%) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (Tier0-FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2 ; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr @@ -30,7 +30,7 @@ ;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5.50) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 7 ) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,14 +70,15 @@ G_M43427_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M43427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0
bne SHORT G_M43427_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff @@ -92,28 +93,24 @@ G_M43427_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b G_M43427_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq SHORT G_M43427_IG09
+ beq SHORT G_M43427_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M43427_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M43427_IG06 movs r0, 0 b SHORT G_M43427_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M43427_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M43427_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- bne SHORT G_M43427_IG10
+ bne SHORT G_M43427_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M43427_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - str r8, [sp+0x4C] - ;; size=4 bbWeight=0.25 PerfScore 0.25 -G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M43427_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -123,148 +120,147 @@ G_M43427_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3] - ;; size=32 bbWeight=0.50 PerfScore 4.50 -G_M43427_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M43427_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00 +G_M43427_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M43427_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r7 - b SHORT G_M43427_IG13
+G_M43427_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r0, r8 + b SHORT G_M43427_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M43427_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - mov r0, r6
+G_M43427_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x3C] // [V01 arg1]
+G_M43427_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x3C]
; byrRegs +[r3] str r3, [sp+0x14] // [V07 loc2] ldr r1, [sp+0x44] // [V02 arg2] ; byrRegs +[r1] str r1, [sp+0x10] // [V09 loc4]
- lsls r2, r6, 1
+ lsls r2, r7, 1
adds r2, r3, r2 subs r2, r2, 2
- lsl lr, r7, 1
+ lsl lr, r8, 1
add lr, r1 sub lr, lr, 2 cmp r0, 0
- beq SHORT G_M43427_IG15
+ beq SHORT G_M43427_IG14
;; size=28 bbWeight=1 PerfScore 12.00
-G_M43427_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3] ldrh r12, [r2] ldrh r9, [lr] cmp r12, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
cmp r9, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r12] cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r9] cmp r10, 0
- bne SHORT G_M43427_IG24
+ bne SHORT G_M43427_IG23
cmp r12, r9
- bne SHORT G_M43427_IG16
+ bne SHORT G_M43427_IG15
subs r2, r2, 2 sub lr, lr, 2 subs r0, r0, 1 cmp r0, 0
- bne SHORT G_M43427_IG14
+ bne SHORT G_M43427_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - bge SHORT G_M43427_IG20
+G_M43427_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + bge SHORT G_M43427_IG19
ldrh r2, [lr] cmp r2, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw lr, 0xd1ff movt lr, 0xd1ff ldrb r0, [lr+r2] cmp r0, 0
- bne SHORT G_M43427_IG24 - b SHORT G_M43427_IG18
+ bne SHORT G_M43427_IG23 + b SHORT G_M43427_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r2, r3
- bls SHORT G_M43427_IG17
+ bls SHORT G_M43427_IG16
ldrh r0, [r2-0x02] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M43427_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp lr, r1
- bls SHORT G_M43427_IG18
+ bls SHORT G_M43427_IG17
ldrh r0, [lr-0x02] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M43427_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43427_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43427_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43427_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M43427_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43427_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7 - ble SHORT G_M43427_IG21
+ cmp r7, r8 + ble SHORT G_M43427_IG20
ldrh r0, [r2] cmp r0, 128
- bge SHORT G_M43427_IG24
+ bge SHORT G_M43427_IG23
movw r2, 0xd1ff movt r2, 0xd1ff ldrb r0, [r2+r0] cmp r0, 0 ...

-4 (-1.06%) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,uint):ubyte:this (Tier0-FullOpts)

@@ -8,15 +8,15 @@ ; 0 inlinees with PGO data; 17 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3.50) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> -; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V02 arg2 [V02,T09] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V03 arg3 [V03,T25] ( 2, 1 ) int -> [sp+0x4C] single-def -; V04 arg4 [V04,T19] ( 3, 1.50) int -> r5 single-def
+; V00 this [V00,T08] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Globalization.CompareInfo> +; V01 arg1 [V01,T09] ( 4, 4 ) struct ( 8) [sp+0x3C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V02 arg2 [V02,T10] ( 4, 4 ) struct ( 8) [sp+0x44] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V03 arg3 [V03,T23] ( 2, 1.50) int -> r6 single-def +; V04 arg4 [V04,T18] ( 3, 2 ) int -> r5 single-def
; V05 loc0 [V05,T04] ( 5, 14 ) int -> r0
-; V06 loc1 [V06,T14] ( 4, 3 ) int -> r3
+; V06 loc1 [V06,T14] ( 4, 3.50) int -> r3
; V07 loc2 [V07 ] ( 1, 1 ) byref -> [sp+0x14] must-init pinned single-def
-; V08 loc3 [V08,T15] ( 4, 3 ) int -> r1
+; V08 loc3 [V08,T15] ( 4, 3.50) int -> r1
; V09 loc4 [V09 ] ( 1, 1 ) byref -> [sp+0x10] must-init pinned single-def ; V10 loc5 [V10,T02] ( 7, 14.50) int -> r2 ; V11 loc6 [V11,T03] ( 7, 14.50) int -> lr @@ -30,7 +30,7 @@ ;* V19 tmp2 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp3 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp4 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp5 [V22,T18] ( 3, 2 ) int -> r0 "Inline return value spill temp"
+; V22 tmp5 [V22,T19] ( 3, 2 ) int -> r0 "Inline return value spill temp"
;* V23 tmp6 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp7 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V25 tmp8 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -49,12 +49,12 @@ ;* V38 tmp21 [V38 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP ; V39 tmp22 [V39,T06] ( 2, 8 ) byref -> r10 "field V28._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp23 [V40 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V41 tmp24 [V41,T23] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp24 [V41,T24] ( 2, 1 ) byref -> lr single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp25 [V42 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
-; V43 tmp26 [V43,T24] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp26 [V43,T25] ( 2, 1 ) byref -> r2 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp27 [V44 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V45 tmp28 [V45,T11] ( 7, 4.50) int -> r6 "V01.[004..008)" -; V46 tmp29 [V46,T07] ( 9, 6 ) int -> r7 "V02.[004..008)"
+; V45 tmp28 [V45,T11] ( 7, 5 ) int -> r7 "V01.[004..008)" +; V46 tmp29 [V46,T07] ( 9, 6.50) int -> r8 "V02.[004..008)"
; V47 tmp30 [V47,T12] ( 2, 4 ) int -> r3 "Cast away GC" ; V48 tmp31 [V48,T13] ( 2, 4 ) int -> r1 "Cast away GC" ; @@ -70,14 +70,15 @@ G_M3596_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR str r1, [sp+0x10] // [V09 loc4] mov r4, r0 ; gcrRegs +[r4]
+ ldr r6, [sp+0x4C] // [V03 arg3]
ldr r5, [sp+0x50] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M3596_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [sp+0x40] - ldr r7, [sp+0x48] - cmp r7, 0
+ ldr r7, [sp+0x40] + ldr r8, [sp+0x48] + cmp r8, 0
bne SHORT G_M3596_IG04
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M3596_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff @@ -92,28 +93,24 @@ G_M3596_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by G_M3596_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldrb r0, [r4+0x18] cmp r0, 0
- beq SHORT G_M3596_IG09
+ beq SHORT G_M3596_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M3596_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x4C] - ands r0, r8, 4
+ ands r0, r6, 4
cmp r0, 0 beq SHORT G_M3596_IG06 movs r0, 0 b SHORT G_M3596_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M3596_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M3596_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r0, r0 cmp r0, 0
- bne SHORT G_M3596_IG10
+ bne SHORT G_M3596_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3596_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - str r8, [sp+0x4C] - ;; size=4 bbWeight=0.25 PerfScore 0.25 -G_M3596_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M3596_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -123,21 +120,20 @@ G_M3596_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [sp+0x4C] // [V03 arg3] - ;; size=32 bbWeight=0.50 PerfScore 4.50 -G_M3596_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - ble SHORT G_M3596_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 4.00 +G_M3596_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + ble SHORT G_M3596_IG11
;; size=4 bbWeight=1 PerfScore 2.00
-G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r7 - b SHORT G_M3596_IG13
+G_M3596_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r0, r8 + b SHORT G_M3596_IG12
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3596_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - mov r0, r6
+G_M3596_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + mov r0, r7
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x3C] // [V01 arg1]
+G_M3596_IG12: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x3C]
; byrRegs +[r3] str r3, [sp+0x14] // [V07 loc2] ldr r1, [sp+0x44] // [V02 arg2] @@ -146,127 +142,127 @@ G_M3596_IG13: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref mov r2, r3 mov lr, r1 cmp r0, 0
- beq SHORT G_M3596_IG15
+ beq SHORT G_M3596_IG14
;; size=16 bbWeight=1 PerfScore 8.00
-G_M3596_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3596_IG13: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r1 r3] ldrh r12, [r2] ldrh r9, [lr] cmp r12, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
cmp r9, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r12] cmp r10, 0
- bne SHORT G_M3596_IG24
+ bne SHORT G_M3596_IG23
movw r10, 0xd1ff movt r10, 0xd1ff ldrb r10, [r10+r9] cmp r10, 0
- bne SHORT G_M3596_IG24
+ bne SHORT G_M3596_IG23
cmp r12, r9
- bne SHORT G_M3596_IG16
+ bne SHORT G_M3596_IG15
adds r2, r2, 2 add lr, lr, 2 subs r0, r0, 1 cmp r0, 0
- bne SHORT G_M3596_IG14
+ bne SHORT G_M3596_IG13
;; size=72 bbWeight=4 PerfScore 92.00
-G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, r7 - bge SHORT G_M3596_IG20
+G_M3596_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, r8 + bge SHORT G_M3596_IG19
ldrh r2, [lr] cmp r2, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw lr, 0xd1ff movt lr, 0xd1ff ldrb r0, [lr+r2] cmp r0, 0
- bne SHORT G_M3596_IG24 - b SHORT G_M3596_IG18
+ bne SHORT G_M3596_IG23 + b SHORT G_M3596_IG17
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - lsls r0, r6, 1
+G_M3596_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + lsls r0, r7, 1
adds r0, r3, r0 subs r0, r0, 2 cmp r0, r2
- bls SHORT G_M3596_IG17
+ bls SHORT G_M3596_IG16
ldrh r0, [r2+0x02] cmp r0, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - lsls r0, r7, 1
+G_M3596_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + lsl r0, r8, 1
adds r0, r1, r0 subs r0, r0, 2 cmp r0, lr
- bls SHORT G_M3596_IG18
+ bls SHORT G_M3596_IG17
ldrh r0, [lr+0x02] cmp r0, 128
- bge SHORT G_M3596_IG24 - ;; size=18 bbWeight=0.50 PerfScore 4.00 -G_M3596_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bge SHORT G_M3596_IG23 + ;; size=20 bbWeight=0.50 PerfScore 4.00 +G_M3596_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3596_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M3596_IG18: ; bbWeight=0.50, epilog, nogc, extend
add sp, 24 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 12 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3596_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3596_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4]
- cmp r6, r7 - ble SHORT G_M3596_IG21
+ cmp r7, r8 + ble SHORT G_M3596_IG20
ldrh r0, [r2] cmp r0, 128
- bge SHORT G_M3596_IG24
+ bge SHORT G_M3596_IG23
movw r2, 0xd1ff movt r2, 0xd1ff ...

+46 (+2.85%) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)

@@ -10,33 +10,33 @@ ; ; V00 this [V00,T19] ( 16, 27 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder> ; V01 arg1 [V01,T31] ( 9, 8.50) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator>
-; V02 loc0 [V02,T34] ( 4, 6.50) ref -> [sp+0x38] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> -; V03 loc1 [V03,T10] ( 9, 33 ) int -> [sp+0x94] -; V04 loc2 [V04,T21] ( 9, 22.16) ref -> [sp+0x34] class-hnd spill-single-def <int[]> -; V05 loc3 [V05,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]> -; V06 loc4 [V06,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> -; V07 loc5 [V07,T24] ( 6, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <System.Type[]> -; V08 loc6 [V08,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <int[]> -; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x90] spill-single-def -; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x8C] spill-single-def -; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x88] spill-single-def -; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x20] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc0 [V02,T35] ( 4, 6.50) ref -> [sp+0x34] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> +; V03 loc1 [V03,T10] ( 9, 33 ) int -> registers +; V04 loc2 [V04,T22] ( 9, 22.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]> +; V05 loc3 [V05,T23] ( 9, 22.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> +; V06 loc4 [V06,T24] ( 9, 22.16) ref -> [sp+0x28] class-hnd spill-single-def <int[]> +; V07 loc5 [V07,T25] ( 6, 22.16) ref -> [sp+0x24] class-hnd spill-single-def <System.Type[]> +; V08 loc6 [V08,T26] ( 6, 22.16) ref -> [sp+0x20] class-hnd spill-single-def <int[]> +; V09 loc7 [V09,T20] ( 9, 29 ) int -> [sp+0x8C] spill-single-def +; V10 loc8 [V10,T27] ( 5, 20 ) int -> [sp+0x88] spill-single-def +; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x84] spill-single-def +; V12 loc10 [V12,T32] ( 3, 9 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>>
; V13 loc11 [V13,T36] ( 3, 2.50) int -> r0
-; V14 loc12 [V14,T27] ( 5, 16.50) int -> [sp+0x84] -; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x80]
+; V14 loc12 [V14,T21] ( 5, 28.26) int -> [sp+0x80] +; V15 loc13 [V15,T01] ( 24, 69.44) int -> [sp+0x7C]
; V16 loc14 [V16,T07] ( 8, 40 ) int -> lr ;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref ; V18 OutArgs [V18 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T02] ( 8, 64 ) int -> registers "impSpillLclRefs" ; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>>
-; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x64] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V22 tmp4 [V22,T03] ( 8, 64 ) int -> r6 "impSpillLclRefs"
-; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x44] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>> ; V25 tmp7 [V25,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V26 tmp8 [V26,T41] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V27 tmp9 [V27,T42] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp10 [V28,T33] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
+; V28 tmp10 [V28,T34] ( 5, 7 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
; V29 tmp11 [V29,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" ;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -48,10 +48,10 @@ ;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
-; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V40 tmp22 [V40,T11] ( 4, 32 ) ref -> registers class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
; V41 tmp23 [V41,T12] ( 4, 32 ) int -> registers "argument with side effect"
-; V42 tmp24 [V42,T13] ( 4, 32 ) int -> registers "argument with side effect" -; V43 tmp25 [V43,T14] ( 4, 32 ) int -> registers "argument with side effect"
+; V42 tmp24 [V42,T13] ( 4, 32 ) int -> r1 "argument with side effect" +; V43 tmp25 [V43,T14] ( 4, 32 ) int -> r12 "argument with side effect"
; V44 tmp26 [V44,T15] ( 4, 32 ) int -> registers "argument with side effect" ; V45 tmp27 [V45,T16] ( 4, 32 ) int -> r1 "argument with side effect" ; V46 tmp28 [V46,T17] ( 4, 32 ) int -> registers "argument with side effect" @@ -59,27 +59,27 @@ ; V48 tmp30 [V48,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V49 tmp31 [V49,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V50 tmp32 [V50,T45] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x44] spill-single-def "CSE - conservative" -; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r12 "CSE - conservative"
+; V51 cse0 [V51,T38] ( 5, 0.64) int -> [sp+0x40] spill-single-def "CSE - conservative" +; V52 cse1 [V52,T39] ( 3, 0.40) ref -> r5 "CSE - conservative"
; V53 cse2 [V53,T09] ( 9, 36 ) ref -> r1 "CSE - aggressive"
-; V54 cse3 [V54,T04] ( 5, 63.36) int -> r8 "CSE - aggressive" -; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r8 "CSE - aggressive" -; V56 cse5 [V56,T00] ( 9, 95.04) int -> r7 "CSE - aggressive" -; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate" -; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x40] spill-single-def "CSE - moderate" -; V59 cse8 [V59,T35] ( 3, 5 ) int -> [sp+0x3C] spill-single-def "CSE - moderate" -; TEMP_02 byref -> [r11-0xA0] -; TEMP_01 ref -> [r11-0xA4]
+; V54 cse3 [V54,T04] ( 5, 63.36) int -> r7 "CSE - aggressive" +; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r7 "CSE - aggressive" +; V56 cse5 [V56,T00] ( 9, 95.04) int -> r5 "CSE - aggressive" +; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x18] spill-single-def "CSE - moderate" +; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x3C] spill-single-def "CSE - moderate" +; V59 cse8 [V59,T33] ( 3, 8.92) int -> [sp+0x38] spill-single-def "CSE - moderate" +; TEMP_02 byref -> [r11-0x9C] +; TEMP_01 ref -> [r11-0xA0]
;
-; Lcl frame size = 156
+; Lcl frame size = 148
G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 156 - add r11, sp, 184
+ sub sp, 148 + add r11, sp, 176
movs r2, 0
- str r2, [sp+0x18] // [TEMP_02] - str r2, [sp+0x14] // [TEMP_01]
+ str r2, [sp+0x14] // [TEMP_02] + str r2, [sp+0x10] // [TEMP_01]
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -87,11 +87,11 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 8.00 G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq G_M41336_IG37
+ beq G_M41336_IG31
movs r6, 0 ldr r7, [r4+0x08] ; gcrRegs +[r7]
- str r7, [sp+0x20] // [V12 loc10]
+ str r7, [sp+0x1C] // [V12 loc10]
; GC ptr vars +{V12} ldr r0, [r4+0x0C] ; gcrRegs +[r0] @@ -104,7 +104,7 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 ldrb r0, [r4+0x58] cmp r0, 0
- bne G_M41336_IG38
+ bne G_M41336_IG32
ldr r0, [r5+0x2C] ; gcrRegs +[r0] cmp r0, r4 @@ -128,7 +128,7 @@ G_M41336_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r0, [r5+0x2C] ; gcrRegs +[r0] cmp r0, 0
- bne G_M41336_IG39
+ bne G_M41336_IG33
;; size=8 bbWeight=0.50 PerfScore 1.50 G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -145,7 +145,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r0, [r0+0x14] ; gcrRegs -[r0] cmp r0, 0
- bne G_M41336_IG40
+ bne G_M41336_IG34
mov r0, r5 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -153,11 +153,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 32 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -171,11 +171,11 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Reflection.Emit.RuntimeILGenerator:GetTokenFixups():int[]:this ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 16 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -192,7 +192,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- str r5, [sp+0x38] // [V02 loc0]
+ str r5, [sp+0x34] // [V02 loc0]
; GC ptr vars +{V02} mov r0, r5 movw r3, 0xd1ff @@ -202,7 +202,7 @@ G_M41336_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=126 bbWeight=1 PerfScore 45.00 G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r1, r0 @@ -213,11 +213,11 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x14] // [TEMP_01]
+ str r0, [sp+0x10] // [TEMP_01]
add r0, r4, 36 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x14] // [TEMP_01]
+ ldr r1, [sp+0x10] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -226,222 +226,209 @@ G_M41336_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; byrRegs -[r0] mov r8, 0 ldr r9, [r5+0x04]
- str r9, [sp+0x3C] // [V59 cse8]
+ str r9, [sp+0x38] // [V59 cse8]
cmp r9, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
;; size=58 bbWeight=0.50 PerfScore 8.50 G_M41336_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz add r3, r5, 8 ; byrRegs +[r3]
- str r3, [sp+0x1C] // [V57 cse6]
+ str r3, [sp+0x18] // [V57 cse6]
; GC ptr vars +{V57}
- str r8, [sp+0x84] // [V14 loc12]
lsl lr, r8, 2
- str lr, [sp+0x40] // [V58 cse7]
+ str lr, [sp+0x3C] // [V58 cse7]
ldr r1, [r3+lr] ; gcrRegs +[r1] ldr r12, [r1+0x04] ; gcrRegs +[r12]
- str r12, [sp+0x34] // [V04 loc2]
+ str r12, [sp+0x30] // [V04 loc2]
; GC ptr vars +{V04} ldr r2, [r1+0x08] ; gcrRegs +[r2]
- str r2, [sp+0x30] // [V05 loc3]
+ str r2, [sp+0x2C] // [V05 loc3]
; GC ptr vars +{V05} ldr r0, [r1+0x0C] ; gcrRegs +[r0]
- str r0, [sp+0x2C] // [V06 loc4]
+ str r0, [sp+0x28] // [V06 loc4]
; GC ptr vars +{V06}
- ldr r9, [r1+0x14] - ; gcrRegs +[r9] - str r9, [sp+0x28] // [V07 loc5]
+ ldr r5, [r1+0x14] + str r5, [sp+0x24] // [V07 loc5]
...

+28 (+3.27%) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)

@@ -8,88 +8,89 @@ ; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 39,506 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser> -; V01 TypeCtx [V01,T42] ( 7, 5.56) int -> [sp+0x20] single-def -; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r8 single-def -; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> r5 single-def -; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> -; V05 arg4 [V05,T29] ( 4, 24 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> -; V06 arg5 [V06,T30] ( 4, 24 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> -; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r9 single-def -; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r10 -; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [sp+0x64] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser> +; V01 TypeCtx [V01,T43] ( 7, 5.56) int -> [sp+0x20] single-def +; V02 arg1 [V02,T30] ( 4, 14 ) byref -> r7 single-def +; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r8 single-def +; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> +; V05 arg4 [V05,T29] ( 4, 20 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> +; V06 arg5 [V06,T27] ( 4, 24 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> +; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r10 single-def +; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r9 +; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [sp+0x64] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> -; V12 loc2 [V12,T17] ( 3, 52 ) int -> [sp+0x18] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> +; V12 loc2 [V12,T16] ( 3, 34 ) int -> [sp+0x18] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [sp+0x10] spill-single-def -; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> r1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [sp+0x0C] spill-single-def +; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> r1
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> ;* V25 tmp12 [V25 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> r3 -; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> r3 +; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> r3 -; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> r2 +; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> r2 -; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r1 +; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> r2 -; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> r2 +; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> r2 -; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r1 +; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r1 -; V57 tmp44 [V57,T04] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V56 tmp43 [V56,T02] ( 4,224 ) ref -> lr +; V57 tmp44 [V57,T03] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r1 -; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> lr +; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> r3 -; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> r3 +; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon> -;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V71 tmp58 [V71,T06] ( 3, 80 ) int -> r0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon> +;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V71 tmp58 [V71,T13] ( 3, 48 ) int -> r0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [sp+0x0C] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP -;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [sp+0x08] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP +;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [sp+0x14] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0xa)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP ;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" -; V80 rat1 [V80,T44] ( 3, 5.60) int -> r0 "spilling expr" -; V81 rat2 [V81,T45] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [sp+0x10] multi-def "CSE - moderate" +; V80 rat0 [V80,T44] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" +; V81 rat1 [V81,T45] ( 3, 5.60) int -> r0 "spilling expr" +; V82 rat2 [V82,T46] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 44 @@ -102,35 +103,35 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [r11-0x24] mov r4, r0 ; gcrRegs +[r4]
- mov r8, r2 - ; byrRegs +[r8] - mov r5, r3
+ mov r7, r2 + ; byrRegs +[r7] + mov r8, r3
mov r3, r1 ldr r6, [sp+0x54] // [V05 arg4] ; gcrRegs +[r6]
- ldr r7, [sp+0x58] // [V06 arg5] - ; gcrRegs +[r7] - ldr r9, [sp+0x5C] // [V07 arg6] - ldr r10, [sp+0x60] // [V08 arg7]
+ ldr r5, [sp+0x58] // [V06 arg5] + ; gcrRegs +[r5] + ldr r10, [sp+0x5C] // [V07 arg6] + ldr r9, [sp+0x60] // [V08 arg7]
;; size=38 bbWeight=1 PerfScore 14.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldrb r2, [sp+0x64] strb r2, [sp+0x14] // [V75 tmp62] ldr lr, [sp+0x50] // [V04 arg3] ; gcrRegs +[lr]
- str lr, [sp+0x0C] // [V73 tmp60]
+ str lr, [sp+0x08] // [V73 tmp60]
; GC ptr vars +{V73} ldr r0, [r3+0x20] ldr r1, [r0+0x08] cmp r1, 0 beq SHORT G_M39451_IG04 ;; size=24 bbWeight=1 PerfScore 8.00
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, gcvars, byref, isz
; gcrRegs -[lr] str r3, [sp+0x20] // [V01 TypeCtx] b SHORT G_M39451_IG05 ;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
str r3, [sp+0x20] // [V01 TypeCtx] mov r0, r3 movw r1, 0xd1ff @@ -140,7 +141,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 blx r12 // CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r1, r0 ;; size=24 bbWeight=0.20 PerfScore 1.60
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
ldr r0, [r4+0xA4] ; gcrRegs +[r0] movw r12, 0xd1ff @@ -150,13 +151,13 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r blx r12 // Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this str r0, [sp+0x1C] // [V11 loc1] ;; size=22 bbWeight=1 PerfScore 7.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r0]
- uxtb r0, r10
+ uxtb r0, r9
cmp r0, 0 bne SHORT G_M39451_IG16 ;; size=8 bbWeight=8 PerfScore 24.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0 @@ -180,239 +181,59 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r mov r3, r1 ; gcrRegs +[r3] ;; size=38 bbWeight=2 PerfScore 28.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r1] ldrh r0, [r3+0x08]
- uxth r3, r5
+ uxth r3, r8
; gcrRegs -[r3]
+ str r3, [sp+0x10] // [V79 cse0]
cmp r0, r3
- beq G_M39451_IG39 - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M39451_IG09: ; bbWeight=4, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz - ldr r3, [r4+0x08] - ; gcrRegs +[r3] - cmp r3, 0
+ beq G_M39451_IG33 + ;; size=14 bbWeight=2 PerfScore 10.00 +G_M39451_IG09: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz + ldr r2, [r4+0x08] + ; gcrRegs +[r2] + cmp r2, 0
bne SHORT G_M39451_IG11 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref - ; gcrRegs -[r3]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref + ; gcrRegs -[r2]
mov r0, r4 ; gcrRegs +[r0]
- movw r3, 0xd1ff - movt r3, 0xd1ff
...

+16 (+4.57%) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)

@@ -8,184 +8,191 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo> -; V01 arg1 [V01,T05] ( 4, 3 ) ref -> r4 class-hnd single-def <System.Object> -; V02 arg2 [V02,T06] ( 4, 3 ) ref -> r5 class-hnd single-def <System.Object> -; V03 arg3 [V03,T07] ( 4, 3 ) int -> r6 single-def -; V04 arg4 [V04,T16] ( 2, 1 ) ref -> [sp+0x38] class-hnd single-def <System.Reflection.Binder> -; V05 arg5 [V05,T15] ( 4, 1.79) ref -> r7 class-hnd single-def <System.Object[]> -; V06 arg6 [V06,T17] ( 2, 1 ) ref -> [sp+0x40] class-hnd single-def <System.Globalization.CultureInfo> -; V07 loc0 [V07,T12] ( 3, 2.50) ref -> r8 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo> -; V08 loc1 [V08,T10] ( 8, 2.58) ref -> r2 class-hnd exact single-def <System.Object[]> -; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x0C]
+; V00 this [V00,T09] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Reflection.RuntimePropertyInfo> +; V01 arg1 [V01,T06] ( 4, 4.48) ref -> r4 class-hnd single-def <System.Object> +; V02 arg2 [V02,T07] ( 4, 4.48) ref -> r5 class-hnd single-def <System.Object> +; V03 arg3 [V03,T08] ( 4, 4.48) int -> r6 single-def +; V04 arg4 [V04,T14] ( 2, 2.48) ref -> r7 class-hnd single-def <System.Reflection.Binder> +; V05 arg5 [V05,T17] ( 4, 1.79) ref -> r9 class-hnd single-def <System.Object[]> +; V06 arg6 [V06,T15] ( 2, 2.48) ref -> r8 class-hnd single-def <System.Globalization.CultureInfo> +; V07 loc0 [V07,T11] ( 3, 3.98) ref -> r10 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo> +; V08 loc1 [V08,T05] ( 8, 7.02) ref -> r2 class-hnd exact single-def <System.Object[]> +; V09 loc2 [V09,T00] ( 11, 16.58) int -> [sp+0x14]
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> lr class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> r12 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T19] ( 3, 0 ) ref -> r4 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>
+; V13 tmp3 [V13,T12] ( 4, 2.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo> ;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V17 tmp7 [V17,T20] ( 2, 0 ) ref -> r1 single-def "argument with side effect" ; V18 cse0 [V18,T13] ( 3, 2.50) ref -> r0 "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r10 "CSE - aggressive" -; V20 cse2 [V20,T09] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive" -; V21 cse3 [V21,T04] ( 6, 5.29) byref -> [sp+0x08] hoist multi-def "CSE - aggressive"
+; V19 cse1 [V19,T03] ( 8, 9.71) int -> [sp+0x10] spill-single-def "CSE - aggressive" +; V20 cse2 [V20,T10] ( 4, 4.29) byref -> registers hoist multi-def "CSE - aggressive" +; V21 cse3 [V21,T04] ( 6, 8.25) byref -> [sp+0x0C] hoist multi-def "CSE - aggressive"
; V22 cse4 [V22,T02] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V23 rat0 [V23,T14] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
+; V23 rat0 [V23,T16] ( 2, 2 ) ref -> r3 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 28 + add r11, sp, 56
mov r4, r1 ; gcrRegs +[r4] mov r5, r2 ; gcrRegs +[r5] mov r6, r3
- ldr r7, [sp+0x3C] // [V05 arg5]
+ ldr r7, [sp+0x40] // [V04 arg4]
; gcrRegs +[r7]
- ;; size=18 bbWeight=1 PerfScore 7.00 -G_M50642_IG02: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [sp+0x44] // [V05 arg5] + ; gcrRegs +[r9] + ldr r8, [sp+0x48] // [V06 arg6] + ; gcrRegs +[r8] + ;; size=26 bbWeight=1 PerfScore 9.00 +G_M50642_IG02: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0] ldr r0, [r0+0x10] cmp r0, 0 bne SHORT G_M50642_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movs r0, 0 b SHORT G_M50642_IG04 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00B1 {r0 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=03B1 {r0 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- mov r8, r0 - ; gcrRegs +[r8] - cmp r8, 0 - beq SHORT G_M50642_IG15 - cmp r7, 0
+ mov r10, r0 + ; gcrRegs +[r10] + cmp r10, 0 + beq G_M50642_IG16 + cmp r9, 0
bne SHORT G_M50642_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00 -G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, nogc - ; gcrRegs -[r7-r8] - ldr r7, [sp+0x38] // [V04 arg4] - ; gcrRegs +[r7]
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=01B1 {r0 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, nogc + ; gcrRegs -[r9-r10]
mov r3, r7 ; gcrRegs +[r3]
- str r5, [sp+0x38] // [V04 arg4] - ldr r9, [sp+0x40] // [V06 arg6] - ; gcrRegs +[r9] - str r9, [sp+0x3C] // [V04 arg4+0x04]
+ str r5, [sp+0x40] + str r8, [sp+0x44]
mov r1, r4 ; gcrRegs +[r1] mov r2, r6 movw lr, 0xd1ff movt lr, 0xd1ff ldr r12, [lr]
- ;; size=30 bbWeight=0.50 PerfScore 5.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 20
+ add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r12 // System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0-r1 r3 r9] +[r8] - ldr r10, [r7+0x04] - add r1, r10, 1
+G_M50642_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=07B0 {r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0-r1 r3] +[r9-r10] + ldr r3, [r9+0x04] + str r3, [sp+0x10] + adds r1, r3, 1
movw r0, 0xd1ff movt r0, 0xd1ff
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[r0] ; gcr arg pop 0 mov r2, r0 ; gcrRegs +[r2] movs r1, 0
- cmp r10, 0
+ ldr r3, [sp+0x10] // [V19 cse1] + cmp r3, 0
ble SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 5.50 -G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.50 PerfScore 6.50 +G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [r2+0x04]
- cmp r0, r10
+ cmp r0, r3
blt SHORT G_M50642_IG11
- adds r7, 8 - ; gcrRegs -[r7] - ; byrRegs +[r7] - add r3, r2, 8 - ; byrRegs +[r3] - ;; size=12 bbWeight=0.25 PerfScore 1.25 -G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0088 {r3 r7}, byref, isz - str r1, [sp+0x0C] // [V09 loc2]
+ add r9, r9, 8 + ; gcrRegs -[r9] + ; byrRegs +[r9] + add lr, r2, 8 + ; byrRegs +[lr] + ;; size=14 bbWeight=0.25 PerfScore 1.25 +G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=4200 {r9 lr}, byref, isz + str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- ldr lr, [r7+r0] - ; gcrRegs +[lr] - str r3, [sp+0x08] // [V21 cse3]
+ ldr r12, [r9+r0] + ; gcrRegs +[r12] + str lr, [sp+0x0C] // [V21 cse3]
; GC ptr vars +{V21}
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
+ mov r1, r12
; gcrRegs +[r1] movw r12, 0xd1ff
+ ; gcrRegs -[r12]
movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 lr] - ; byrRegs -[r0 r3] - ldr r1, [sp+0x0C] // [V09 loc2]
+ ; gcrRegs -[r1] + ; byrRegs -[r0 lr] + ldr r1, [sp+0x14] // [V09 loc2]
adds r1, r1, 1
- cmp r10, r1 - ldr r3, [sp+0x08] // [V21 cse3] - ; byrRegs +[r3]
+ ldr r3, [sp+0x10] // [V19 cse1] + cmp r3, r1 + ldr lr, [sp+0x0C] // [V21 cse3] + ; byrRegs +[lr]
bgt SHORT G_M50642_IG09
- ;; size=34 bbWeight=3.96 PerfScore 55.44 -G_M50642_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0134 {r2 r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[r3 r7]
+ ;; size=40 bbWeight=3.96 PerfScore 59.40 +G_M50642_IG10: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=05B4 {r2 r4 r5 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; byrRegs -[r9 lr]
; GC ptr vars -{V21}
+ ldr r3, [sp+0x10] // [V19 cse1]
b SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r7] - add r0, r7, 8
+ ;; size=4 bbWeight=1.98 PerfScore 3.96 +G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=07B4 {r2 r4 r5 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r9] + add r0, r9, 8
; byrRegs +[r0]
- lsls r3, r1, 2 - ldr lr, [r0+r3] - ; gcrRegs +[lr]
+ lsl lr, r1, 2 + ldr r12, [r0+lr] + ; gcrRegs +[r12]
ldr r0, [r2+0x04] ; byrRegs -[r0] cmp r1, r0
- bhs SHORT G_M50642_IG14 - add r3, r2, 8 - ; byrRegs +[r3] - str r1, [sp+0x0C] // [V09 loc2]
+ bhs SHORT G_M50642_IG15 + add lr, r2, 8 + ; byrRegs +[lr] + str r1, [sp+0x14] // [V09 loc2]
lsls r0, r1, 2
- adds r0, r3, r0
+ add r0, lr
; byrRegs +[r0]
- mov r1, lr
...

coreclr_tests.run.linux.arm.checked.mch

-22 (-5.67%) : 311135.dasm - System.Collections.Generic.HashSet1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -10,42 +10,41 @@ ; Final local variable assignments ; ; V00 this [V00,T11] ( 4, 6.46) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V02 loc0 [V02,T03] ( 11, 18.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V02 loc0 [V02,T05] ( 10, 17.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ; V04 loc2 [V04 ] ( 1, 3.46) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp2 [V07,T15] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
+; V07 tmp2 [V07,T14] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V09 tmp4 [V09,T01] ( 4, 20.74) int -> r3 "VirtualCall with runtime lookup" ; V10 tmp5 [V10,T08] ( 2, 8.91) int -> r0 "guarded devirt return temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]> ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
-; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r8 "Inlining Arg"
+; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r7 "Inlining Arg"
; V14 tmp9 [V14,T06] ( 4, 16.47) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T04] ( 3, 18.63) ref -> r1 "arr expr" -; V17 tmp12 [V17,T05] ( 3, 18.63) int -> r0 "index expr"
+; V16 tmp11 [V16,T03] ( 3, 18.63) ref -> r1 "arr expr" +; V17 tmp12 [V17,T04] ( 3, 18.63) int -> r0 "index expr"
; V18 tmp13 [V18,T07] ( 2, 13.83) ref -> r1 "argument with side effect"
-; V19 PSPSym [V19,T18] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V19 PSPSym [V19,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
; V20 cse0 [V20,T09] ( 3, 12.02) int -> r0 "CSE - aggressive"
-; V21 cse1 [V21,T13] ( 4, 6.15) int -> r6 "CSE - moderate" -; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r9 "CSE - aggressive" -; V23 cse3 [V23,T12] ( 5, 6.46) int -> r7 hoist multi-def "CSE - aggressive" -; V24 rat0 [V24,T17] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V25 rat1 [V25,T16] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" -; V26 rat2 [V26,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T12] ( 4, 6.15) int -> r6 "CSE - moderate" +; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r8 "CSE - aggressive" +; V23 rat0 [V23,T16] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V24 rat1 [V24,T15] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" +; V25 rat2 [V25,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr} - sub sp, 24 - add r11, sp, 48 - add r2, sp, 56 - str r2, [sp+0x14] // [V19 PSPSym] - str r0, [r11-0x24]
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 20 + add r11, sp, 40 + add r2, sp, 48 + str r2, [sp+0x10] // [V19 PSPSym] + str r0, [r11-0x1C]
str r0, [sp+0x04] // [V00 this] ; GC ptr vars +{V00} mov r5, r0 @@ -55,7 +54,7 @@ G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ;; size=24 bbWeight=1 PerfScore 9.00 G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz cmp r4, 0
- beq G_M539_IG19
+ beq SHORT G_M539_IG18
ldr r6, [r5] mov r0, r6 ldr r1, [r0+0x24] @@ -63,7 +62,7 @@ G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, ldr r1, [r1+0x40] cmp r1, 0 beq SHORT G_M539_IG16
- ;; size=20 bbWeight=1 PerfScore 9.00
+ ;; size=18 bbWeight=1 PerfScore 9.00
G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref mov r0, r4 ; gcrRegs +[r0] @@ -77,13 +76,11 @@ G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr str r4, [sp] ; GC ptr vars +{V02} ;; size=12 bbWeight=1 PerfScore 6.00
-G_M539_IG04: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M539_IG04: ; bbWeight=1, gcVars=00000820 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r1, [r4]
- movw r7, 0xd1ff - movt r7, 0xd1ff
b SHORT G_M539_IG08
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M539_IG05: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x24] ldr r0, [r0] @@ -117,25 +114,27 @@ G_M539_IG07: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, ;; size=28 bbWeight=3.46 PerfScore 41.48 G_M539_IG08: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r1, [r4]
- cmp r1, r7
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0
bne SHORT G_M539_IG10
- add r8, r4, 4 - ; byrRegs +[r8] - ldr r9, [r8] - ; gcrRegs +[r9] - mov r1, r9
+ adds r7, r4, 4 + ; byrRegs +[r7] + ldr r8, [r7] + ; gcrRegs +[r8] + mov r1, r8
; gcrRegs +[r1]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
ldr r3, [r1+0x0C] cmp r0, r3 bne SHORT G_M539_IG14
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
ldr r3, [r1+0x08] cmp r0, r3 bhs SHORT G_M539_IG15
- ;; size=36 bbWeight=4.46 PerfScore 62.39 -G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs -[r9]
+ ;; size=38 bbWeight=4.46 PerfScore 71.30 +G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0080 {r7}, byref, isz + ; gcrRegs -[r8]
ldr r1, [r1+0x04] ldr r3, [r1+0x04] cmp r0, r3 @@ -147,20 +146,20 @@ G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 { ldr r1, [r1+r0] ; gcrRegs +[r1] ; byrRegs -[r1]
- add r0, r8, 4
+ adds r0, r7, 4
; byrRegs +[r0] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
b SHORT G_M539_IG05
- ;; size=40 bbWeight=3.11 PerfScore 46.58
+ ;; size=34 bbWeight=3.11 PerfScore 46.58
G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ; byrRegs -[r7]
mov r0, r4 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -171,13 +170,13 @@ G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
+ beq SHORT G_M539_IG19 + ;; size=18 bbWeight=4.46 PerfScore 31.20 +G_M539_IG11: ; bbWeight=3.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp] // [V02 loc0] ; gcrRegs +[r4]
- bne SHORT G_M539_IG05 - ;; size=20 bbWeight=4.46 PerfScore 35.65 -G_M539_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M539_IG17 - ;; size=2 bbWeight=1 PerfScore 1.00
+ b SHORT G_M539_IG05 + ;; size=4 bbWeight=3.46 PerfScore 6.91
G_M539_IG12: ; bbWeight=0.69, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r0, r6 movw r1, 0xd1ff @@ -205,19 +204,19 @@ G_M539_IG14: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs +[r9] - ; byrRegs +[r8] - ldr r0, [r9+0x08]
+G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0080 {r7}, byref, isz + ; gcrRegs +[r8] + ; byrRegs +[r7] + ldr r0, [r8+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
movs r0, 0
- str r0, [r8+0x04]
+ str r0, [r7+0x04]
b SHORT G_M539_IG17
- ;; size=18 bbWeight=1.35 PerfScore 8.11
+ ;; size=14 bbWeight=1.35 PerfScore 8.11
G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9] - ; byrRegs -[r8]
+ ; gcrRegs -[r8] + ; byrRegs -[r7]
; GC ptr vars -{V02} movw r1, 0xd1ff movt r1, 0xd1ff @@ -228,19 +227,12 @@ G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r mov r1, r0 b SHORT G_M539_IG03 ;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M539_IG17: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V02} - ldr r0, [r4] - cmp r0, r7 - bne SHORT G_M539_IG20 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M539_IG18: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M539_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; GC ptr vars -{V02} - add sp, 24 - pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M539_IG18: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
movs r0, 70 movw r3, 0xd1ff movt r3, 0xd1ff @@ -249,9 +241,10 @@ G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, by ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M539_IG19: ; bbWeight=0, gcVars=00000820 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02}
+ ldr r4, [sp] // [V02 loc0] + ; gcrRegs +[r4]
mov r0, r4 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -262,25 +255,25 @@ G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 ...

-22 (-5.67%) : 304388.dasm - System.Collections.Generic.HashSet1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable1[System.__Canon]):this (Tier1)

@@ -10,42 +10,41 @@ ; Final local variable assignments ; ; V00 this [V00,T11] ( 4, 6.46) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V02 loc0 [V02,T03] ( 11, 18.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T13] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V02 loc0 [V02,T05] ( 10, 17.83) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ; V04 loc2 [V04 ] ( 1, 3.46) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp2 [V07,T15] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
+; V07 tmp2 [V07,T14] ( 4, 6 ) int -> r1 "VirtualCall with runtime lookup"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V09 tmp4 [V09,T01] ( 4, 20.74) int -> r3 "VirtualCall with runtime lookup" ; V10 tmp5 [V10,T08] ( 2, 8.91) int -> r0 "guarded devirt return temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]> ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.LazyGenericsSupport+Graph`1+Vertex[Internal.TypeSystem.Ecma.EcmaGenericParameter]]>
-; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r8 "Inlining Arg"
+; V13 tmp8 [V13,T00] ( 9, 59.69) byref -> r7 "Inlining Arg"
; V14 tmp9 [V14,T06] ( 4, 16.47) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T04] ( 3, 18.63) ref -> r1 "arr expr" -; V17 tmp12 [V17,T05] ( 3, 18.63) int -> r0 "index expr"
+; V16 tmp11 [V16,T03] ( 3, 18.63) ref -> r1 "arr expr" +; V17 tmp12 [V17,T04] ( 3, 18.63) int -> r0 "index expr"
; V18 tmp13 [V18,T07] ( 2, 13.83) ref -> r1 "argument with side effect"
-; V19 PSPSym [V19,T18] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V19 PSPSym [V19,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
; V20 cse0 [V20,T09] ( 3, 12.02) int -> r0 "CSE - aggressive"
-; V21 cse1 [V21,T13] ( 4, 6.15) int -> r6 "CSE - moderate" -; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r9 "CSE - aggressive" -; V23 cse3 [V23,T12] ( 5, 6.46) int -> r7 hoist multi-def "CSE - aggressive" -; V24 rat0 [V24,T17] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V25 rat1 [V25,T16] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" -; V26 rat2 [V26,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
+; V21 cse1 [V21,T12] ( 4, 6.15) int -> r6 "CSE - moderate" +; V22 cse2 [V22,T10] ( 3, 10.26) ref -> r8 "CSE - aggressive" +; V23 rat0 [V23,T16] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V24 rat1 [V24,T15] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" +; V25 rat2 [V25,T02] ( 3, 19.36) int -> r0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr} - sub sp, 24 - add r11, sp, 48 - add r2, sp, 56 - str r2, [sp+0x14] // [V19 PSPSym] - str r0, [r11-0x24]
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 20 + add r11, sp, 40 + add r2, sp, 48 + str r2, [sp+0x10] // [V19 PSPSym] + str r0, [r11-0x1C]
str r0, [sp+0x04] // [V00 this] ; GC ptr vars +{V00} mov r5, r0 @@ -55,7 +54,7 @@ G_M539_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ;; size=24 bbWeight=1 PerfScore 9.00 G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz cmp r4, 0
- beq G_M539_IG19
+ beq SHORT G_M539_IG18
ldr r6, [r5] mov r0, r6 ldr r1, [r0+0x24] @@ -63,7 +62,7 @@ G_M539_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, ldr r1, [r1+0x40] cmp r1, 0 beq SHORT G_M539_IG16
- ;; size=20 bbWeight=1 PerfScore 9.00
+ ;; size=18 bbWeight=1 PerfScore 9.00
G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref mov r0, r4 ; gcrRegs +[r0] @@ -77,13 +76,11 @@ G_M539_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr str r4, [sp] ; GC ptr vars +{V02} ;; size=12 bbWeight=1 PerfScore 6.00
-G_M539_IG04: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M539_IG04: ; bbWeight=1, gcVars=00000820 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] ldr r1, [r4]
- movw r7, 0xd1ff - movt r7, 0xd1ff
b SHORT G_M539_IG08
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M539_IG05: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x24] ldr r0, [r0] @@ -117,25 +114,27 @@ G_M539_IG07: ; bbWeight=3.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, ;; size=28 bbWeight=3.46 PerfScore 41.48 G_M539_IG08: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r1, [r4]
- cmp r1, r7
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0
bne SHORT G_M539_IG10
- add r8, r4, 4 - ; byrRegs +[r8] - ldr r9, [r8] - ; gcrRegs +[r9] - mov r1, r9
+ adds r7, r4, 4 + ; byrRegs +[r7] + ldr r8, [r7] + ; gcrRegs +[r8] + mov r1, r8
; gcrRegs +[r1]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
ldr r3, [r1+0x0C] cmp r0, r3 bne SHORT G_M539_IG14
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
ldr r3, [r1+0x08] cmp r0, r3 bhs SHORT G_M539_IG15
- ;; size=36 bbWeight=4.46 PerfScore 62.39 -G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs -[r9]
+ ;; size=38 bbWeight=4.46 PerfScore 71.30 +G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0080 {r7}, byref, isz + ; gcrRegs -[r8]
ldr r1, [r1+0x04] ldr r3, [r1+0x04] cmp r0, r3 @@ -147,20 +146,20 @@ G_M539_IG09: ; bbWeight=3.11, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0100 { ldr r1, [r1+r0] ; gcrRegs +[r1] ; byrRegs -[r1]
- add r0, r8, 4
+ adds r0, r7, 4
; byrRegs +[r0] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r8+0x08]
+ ldr r0, [r7+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
b SHORT G_M539_IG05
- ;; size=40 bbWeight=3.11 PerfScore 46.58
+ ;; size=34 bbWeight=3.11 PerfScore 46.58
G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ; byrRegs -[r7]
mov r0, r4 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -171,13 +170,13 @@ G_M539_IG10: ; bbWeight=4.46, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
+ beq SHORT G_M539_IG19 + ;; size=18 bbWeight=4.46 PerfScore 31.20 +G_M539_IG11: ; bbWeight=3.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp] // [V02 loc0] ; gcrRegs +[r4]
- bne SHORT G_M539_IG05 - ;; size=20 bbWeight=4.46 PerfScore 35.65 -G_M539_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M539_IG17 - ;; size=2 bbWeight=1 PerfScore 1.00
+ b SHORT G_M539_IG05 + ;; size=4 bbWeight=3.46 PerfScore 6.91
G_M539_IG12: ; bbWeight=0.69, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz mov r0, r6 movw r1, 0xd1ff @@ -205,19 +204,19 @@ G_M539_IG14: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byr ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs +[r9] - ; byrRegs +[r8] - ldr r0, [r9+0x08]
+G_M539_IG15: ; bbWeight=1.35, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0080 {r7}, byref, isz + ; gcrRegs +[r8] + ; byrRegs +[r7] + ldr r0, [r8+0x08]
adds r0, r0, 1
- str r0, [r8+0x08]
+ str r0, [r7+0x08]
movs r0, 0
- str r0, [r8+0x04]
+ str r0, [r7+0x04]
b SHORT G_M539_IG17
- ;; size=18 bbWeight=1.35 PerfScore 8.11
+ ;; size=14 bbWeight=1.35 PerfScore 8.11
G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9] - ; byrRegs -[r8]
+ ; gcrRegs -[r8] + ; byrRegs -[r7]
; GC ptr vars -{V02} movw r1, 0xd1ff movt r1, 0xd1ff @@ -228,19 +227,12 @@ G_M539_IG16: ; bbWeight=0.20, gcVars=00000800 {V00}, gcrefRegs=0030 {r4 r mov r1, r0 b SHORT G_M539_IG03 ;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M539_IG17: ; bbWeight=1, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V02} - ldr r0, [r4] - cmp r0, r7 - bne SHORT G_M539_IG20 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M539_IG18: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+G_M539_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
- ; GC ptr vars -{V02} - add sp, 24 - pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M539_IG18: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
movs r0, 70 movw r3, 0xd1ff movt r3, 0xd1ff @@ -249,9 +241,10 @@ G_M539_IG19: ; bbWeight=0, gcVars=00000800 {V00}, gcrefRegs=0020 {r5}, by ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M539_IG19: ; bbWeight=0, gcVars=00000820 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02}
+ ldr r4, [sp] // [V02 loc0] + ; gcrRegs +[r4]
mov r0, r4 ; gcrRegs +[r0] movw r4, 0xd1ff @@ -262,25 +255,25 @@ G_M539_IG20: ; bbWeight=0, gcVars=00000808 {V00 V02}, gcrefRegs=0030 {r4 blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 ...

-10 (-5.10%) : 116194.dasm - System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)

@@ -9,7 +9,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 15, 4.90) int -> r0 single-def
-; V01 loc0 [V01,T01] ( 28, 4.90) int -> r4
+; V01 loc0 [V01,T01] ( 28, 4.98) int -> r4
; V02 loc1 [V02,T03] ( 10, 3 ) int -> r3 ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> @@ -31,7 +31,7 @@ ;* V20 loc19 [V20 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V21 loc20 [V21 ] ( 0, 0 ) int -> zero-ref ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T02] ( 9, 4 ) int -> registers "Single return block return value"
+; V23 tmp1 [V23,T02] ( 9, 4.15) int -> r0 "Single return block return value"
; ; Lcl frame size = 4 @@ -47,7 +47,7 @@ G_M6202_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r3, 8 ldrb r2, [r0+r4] cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r2, r4, 1 ldrb r2, [r0+r2] cmp r2, 0 @@ -57,7 +57,7 @@ G_M6202_IG04: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre adds r2, r4, 2 ldrb r2, [r0+r2] cmp r2, 0
- bne SHORT G_M6202_IG13
+ bne SHORT G_M6202_IG14
;; size=8 bbWeight=0.90 PerfScore 3.60 G_M6202_IG05: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref adds r0, r4, 2 @@ -69,61 +69,60 @@ G_M6202_IG07: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byr adds r0, r4, 1 b SHORT G_M6202_IG06 ;; size=4 bbWeight=0.10 PerfScore 0.20
-G_M6202_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - adds r4, r4, 3
+G_M6202_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r0, r4 b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0.08 PerfScore 0.15
G_M6202_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 4 - mov r0, r4
+ adds r0, r4, 3
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 5 - mov r0, r4
+ adds r0, r4, 4
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 6 - mov r0, r4
+ adds r0, r4, 5
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r4, r4, 7 - mov r0, r4
+ adds r0, r4, 6
b SHORT G_M6202_IG06
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=4 bbWeight=0 PerfScore 0.00
G_M6202_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ adds r0, r4, 7 + b SHORT G_M6202_IG06 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M6202_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
adds r2, r4, 3 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG08
+ beq SHORT G_M6202_IG09
adds r2, r4, 4 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG09
+ beq SHORT G_M6202_IG10
adds r2, r4, 5 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG10
+ beq SHORT G_M6202_IG11
adds r2, r4, 6 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG11
+ beq SHORT G_M6202_IG12
adds r2, r4, 7 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG12
+ beq SHORT G_M6202_IG13
adds r4, 8 cmp r3, 8 bhs SHORT G_M6202_IG03 cmp r3, 4
- blo SHORT G_M6202_IG15
+ blo SHORT G_M6202_IG16
subs r3, r3, 4 ldrb r2, [r0+r4] cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r2, r4, 1 ldrb r2, [r0+r2] cmp r2, 0 @@ -135,20 +134,20 @@ G_M6202_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, adds r2, r4, 3 ldrb r2, [r0+r2] cmp r2, 0
- beq SHORT G_M6202_IG08
+ beq SHORT G_M6202_IG09
adds r4, r4, 4
- b SHORT G_M6202_IG15
+ b SHORT G_M6202_IG16
;; size=86 bbWeight=0 PerfScore 0.00
-G_M6202_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
subs r3, r3, 1 ldrb r2, [r0+r4] cmp r2, 0
- beq SHORT G_M6202_IG16
+ beq SHORT G_M6202_IG08
adds r4, r4, 1 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6202_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- bne SHORT G_M6202_IG14
+ bne SHORT G_M6202_IG15
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -156,12 +155,8 @@ G_M6202_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 bkpt ;; size=18 bbWeight=0 PerfScore 0.00
-G_M6202_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r0, r4 - b SHORT G_M6202_IG06 - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 8, PerfScore 17.70, instruction count 92, allocated bytes for code 196 (MethodHash=304fe7c5) for method System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
+; Total bytes of code 186, prolog size 8, PerfScore 17.85, instruction count 87, allocated bytes for code 186 (MethodHash=304fe7c5) for method System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
; ============================================================ Unwind Info: @@ -173,7 +168,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 93 (0x0005d) Actual length = 186 (0x0000ba)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+26 (+7.56%) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)

@@ -9,19 +9,19 @@ ; 3 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> -; V02 arg2 [V02,T14] ( 1, 1 ) byref -> [sp+0x50] single-def -; V03 arg3 [V03,T15] ( 1, 1 ) byref -> [sp+0x54] single-def -; V04 arg4 [V04,T31] ( 1, 0 ) ubyte -> [sp+0x58] single-def -; V05 arg5 [V05,T32] ( 1, 0 ) ubyte -> [sp+0x5C] single-def -; V06 loc0 [V06,T11] ( 3, 3 ) int -> r8 -; V07 loc1 [V07 ] ( 1, 1 ) byref -> [sp+0x14] pinned single-def -; V08 loc2 [V08,T12] ( 3, 3 ) int -> r9 -; V09 loc3 [V09 ] ( 1, 1 ) byref -> [sp+0x10] pinned single-def -; V10 loc4 [V10,T05] ( 8, 4.02) int -> registers -; V11 loc5 [V11 ] ( 5, 3.01) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op -; V12 loc6 [V12 ] ( 5, 3.01) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 arg0 [V00,T00] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]> +; V02 arg2 [V02,T14] ( 1, 1.01) byref -> r4 single-def +; V03 arg3 [V03,T15] ( 1, 1.01) byref -> r5 single-def +; V04 arg4 [V04,T31] ( 1, 0 ) ubyte -> [sp+0x60] single-def +; V05 arg5 [V05,T32] ( 1, 0 ) ubyte -> [sp+0x64] single-def +; V06 loc0 [V06,T11] ( 3, 3.01) int -> r10 +; V07 loc1 [V07 ] ( 1, 1 ) byref -> [sp+0x1C] pinned single-def +; V08 loc2 [V08,T12] ( 3, 3.01) int -> [sp+0x18] spill-single-def +; V09 loc3 [V09 ] ( 1, 1 ) byref -> [sp+0x14] pinned single-def +; V10 loc4 [V10,T05] ( 8, 4.04) int -> [sp+0x10] +; V11 loc5 [V11 ] ( 5, 3.02) int -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op +; V12 loc6 [V12 ] ( 5, 3.02) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" @@ -34,16 +34,16 @@ ;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ; V23 tmp10 [V23,T18] ( 4, 0 ) int -> r0 "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V25 tmp12 [V25,T17] ( 5, 0 ) int -> r7 "Inlining Arg" -; V26 tmp13 [V26,T16] ( 5, 0 ) byref -> r6 "Inlining Arg"
+; V25 tmp12 [V25,T17] ( 5, 0 ) int -> r9 "Inlining Arg" +; V26 tmp13 [V26,T16] ( 5, 0 ) byref -> r8 "Inlining Arg"
;* V27 tmp14 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V28 tmp15 [V28,T20] ( 3, 0 ) int -> r7 "Inlining Arg" -; V29 tmp16 [V29,T22] ( 2, 0 ) byref -> r6 "Inlining Arg"
+; V28 tmp15 [V28,T20] ( 3, 0 ) int -> r9 "Inlining Arg" +; V29 tmp16 [V29,T22] ( 2, 0 ) byref -> r8 "Inlining Arg"
;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V31 tmp18 [V31,T19] ( 4, 0 ) int -> r0 "Inlining Arg" ;* V32 tmp19 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp20 [V33,T21] ( 3, 0 ) int -> r5 "Inlining Arg" -; V34 tmp21 [V34,T23] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V33 tmp20 [V33,T21] ( 3, 0 ) int -> r7 "Inlining Arg" +; V34 tmp21 [V34,T23] ( 2, 0 ) byref -> r6 "Inlining Arg"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V36 tmp23 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V37 tmp24 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP @@ -68,192 +68,202 @@ ;* V56 tmp43 [V56 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP ;* V57 tmp44 [V57 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP ;* V58 tmp45 [V58 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-; V59 tmp46 [V59,T06] ( 8, 4.01) byref -> r4 "V00.[000..004)" -; V60 tmp47 [V60,T10] ( 7, 3.01) int -> r5 "V00.[004..008)" -; V61 tmp48 [V61,T07] ( 8, 4.01) byref -> r6 "V01.[000..004)" -; V62 tmp49 [V62,T13] ( 5, 2.01) int -> r7 "V01.[004..008)" -; V63 tmp50 [V63,T08] ( 2, 4 ) int -> r8 "Cast away GC" -; V64 tmp51 [V64,T09] ( 2, 4 ) int -> r9 "Cast away GC"
+; V59 tmp46 [V59,T06] ( 8, 4.01) byref -> r6 "V00.[000..004)" +; V60 tmp47 [V60,T10] ( 7, 3.01) int -> r7 "V00.[004..008)" +; V61 tmp48 [V61,T07] ( 8, 4.01) byref -> r8 "V01.[000..004)" +; V62 tmp49 [V62,T13] ( 5, 2.01) int -> r9 "V01.[004..008)" +; V63 tmp50 [V63,T08] ( 2, 4 ) int -> r10 "Cast away GC" +; V64 tmp51 [V64,T09] ( 2, 4 ) int -> lr "Cast away GC"
; V65 tmp52 [V65,T02] ( 2, 4.05) int -> r0 "Cast away GC" ; V66 tmp53 [V66,T03] ( 2, 4.05) int -> r2 "Cast away GC" ; V67 tmp54 [V67,T04] ( 2, 4.05) int -> r2 "argument with side effect"
-; V68 tmp55 [V68,T26] ( 2, 0 ) int -> r2 "Cast away GC"
+; V68 tmp55 [V68,T26] ( 2, 0 ) int -> r3 "Cast away GC"
; V69 tmp56 [V69,T27] ( 2, 0 ) int -> r1 "Cast away GC" ; V70 tmp57 [V70,T28] ( 2, 0 ) int -> r0 "argument with side effect" ; V71 tmp58 [V71,T29] ( 2, 0 ) int -> r2 "Cast away GC" ; V72 tmp59 [V72,T30] ( 2, 0 ) int -> r2 "Cast away GC" ;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M59130_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28 - add r11, sp, 56 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M59130_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r4, [sp+0x40]
+ sub sp, 36 + add r11, sp, 64 + ldr r4, [sp+0x58] // [V02 arg2]
; byrRegs +[r4]
- ldr r5, [sp+0x44]
+ ldr r5, [sp+0x5C] // [V03 arg3] + ; byrRegs +[r5] + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M59130_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r6, [sp+0x48] ; byrRegs +[r6] ldr r7, [sp+0x4C]
- str r4, [sp+0x14] // [V07 loc1] - mov r8, r4 - str r6, [sp+0x10] // [V09 loc3] - mov r9, r6 - mov r10, 0 - str r8, [sp+0x0C] // [V11 loc5] - str r9, [sp+0x08] // [V12 loc6] - cmp r5, 0
+ ldr r8, [sp+0x50] + ; byrRegs +[r8] + ldr r9, [sp+0x54] + str r6, [sp+0x1C] // [V07 loc1] + mov r10, r6 + str r8, [sp+0x14] // [V09 loc3] + mov lr, r8 + str lr, [sp+0x18] // [V08 loc2] + mov r12, 0 + str r10, [sp+0x0C] // [V11 loc5] + str lr, [sp+0x08] // [V12 loc6] + cmp r7, 0 + str r12, [sp+0x10] // [V10 loc4]
beq SHORT G_M59130_IG04
- ;; size=32 bbWeight=1 PerfScore 13.00 -G_M59130_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz - mov r0, r4 - mov r2, r6
+ ;; size=46 bbWeight=1 PerfScore 15.00 +G_M59130_IG03: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz + mov r0, r6 + mov r2, r8
add r1, sp, 12 // [V11 loc5] str r1, [sp] // [V13 OutArgs] add r1, sp, 8 // [V12 loc6] str r1, [sp+0x04] // [V13 OutArgs+0x04]
- mov r1, r5 - mov r3, r7 - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // <unknown method> - mov r10, r0 - cmp r10, 1
+ mov r1, r7 + mov r3, r9 + movw r12, 0xd1ff + movt r12, 0xd1ff + ldr r12, [r12] + blx r12 // <unknown method> + mov r3, r0 + str r3, [sp+0x10] // [V10 loc4] + cmp r3, 1
bgt SHORT G_M59130_IG06
- ;; size=38 bbWeight=1.01 PerfScore 15.18 -G_M59130_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r4 r6]
+ ;; size=38 bbWeight=1.01 PerfScore 16.19 +G_M59130_IG04: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref + ; byrRegs -[r6 r8]
ldr r0, [sp+0x0C] // [V11 loc5]
- sub r0, r0, r8
+ sub r0, r0, r10
movs r1, 2
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_DIV - ldr r8, [sp+0x50] // [V02 arg2] - ; byrRegs +[r8] - str r0, [r8]
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // CORINFO_HELP_DIV + str r0, [r4]
ldr r0, [sp+0x08] // [V12 loc6]
- sub r0, r0, r9 - ldr r8, [sp+0x54] // [V03 arg3] - str r0, [r8] - mov r0, r10 - ;; size=42 bbWeight=1 PerfScore 13.00 -G_M59130_IG05: ; bbWeight=1, epilog, nogc, extend - add sp, 28
+ ldr r4, [sp+0x18] // [V08 loc2] + ; byrRegs -[r4] + subs r0, r0, r4 + str r0, [r5] + ldr r0, [sp+0x10] // [V10 loc4] + ;; size=30 bbWeight=1.01 PerfScore 12.14 +G_M59130_IG05: ; bbWeight=1.01, epilog, nogc, extend + add sp, 36
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 16 bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00 -G_M59130_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, gcvars, byref, isz - ; byrRegs -[r8] +[r4 r6] - cmp r10, 2
+ ;; size=10 bbWeight=1.01 PerfScore 4.05 +G_M59130_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, gcvars, byref, isz + ; byrRegs +[r4 r6 r8] + ldr r3, [sp+0x10] // [V10 loc4] + cmp r3, 2
bne SHORT G_M59130_IG07
- ldrb r0, [sp+0x5C] // [V05 arg5]
+ ldrb r0, [sp+0x64] // [V05 arg5]
cmp r0, 0
+ str r3, [sp+0x10] // [V10 loc4]
beq SHORT G_M59130_IG04
- ;; size=14 bbWeight=0 PerfScore 0.00 -G_M59130_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz - ldrb r10, [sp+0x58] // [V04 arg4] - uxtb r0, r10
+ ;; size=16 bbWeight=0 PerfScore 0.00 +G_M59130_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz + ldrb r0, [sp+0x60] // [V04 arg4]
cmp r0, 0 beq SHORT G_M59130_IG14 ldr r0, [sp+0x08] // [V12 loc6]
- mov r2, r6 - subs r0, r0, r2 - cmp r0, r7
+ mov r3, r8 + subs r0, r0, r3 + cmp r0, r9
bhi SHORT G_M59130_IG16
- adds r6, r6, r0 - subs r7, r7, r0 - cmp r7, 0
+ add r8, r0 + sub r9, r9, r0 + cmp r9, 0
bge SHORT G_M59130_IG08 movs r0, 0 b SHORT G_M59130_IG09 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M59130_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref
+G_M59130_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref
movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M59130_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz - movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // <unknown method> - cmp r7, 2
+G_M59130_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0170 {r4 r5 r6 r8}, byref, isz + movw r3, 0xd1ff
...

+14 (+11.48%) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)

@@ -10,8 +10,8 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 18.97) int -> r0 single-def
-; V01 arg1 [V01,T03] ( 7, 5 ) ref -> r1 class-hnd <System.Object> -; V02 loc0 [V02,T04] ( 4, 3.80) int -> r4
+; V01 arg1 [V01,T03] ( 7, 9.88) ref -> r1 class-hnd <System.Object> +; V02 loc0 [V02,T04] ( 5, 3.80) int -> r4
; V03 loc1 [V03,T02] ( 10, 14.90) int -> r5 ; V04 loc2 [V04,T00] ( 10, 24.57) int -> r6 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -25,32 +25,32 @@ G_M10596_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
ldr r4, [r1] ldrh r5, [r4+0x0E] cmp r5, 0
- beq SHORT G_M10596_IG07
+ beq SHORT G_M10596_IG10
ldr r6, [r4+0x28] cmp r5, 4
- blt SHORT G_M10596_IG09
+ blt SHORT G_M10596_IG07
;; size=18 bbWeight=1 PerfScore 9.00 G_M10596_IG03: ; bbWeight=3.90, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ldr r3, [r6] cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
;; size=6 bbWeight=3.90 PerfScore 11.70 G_M10596_IG04: ; bbWeight=3.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ldr r3, [r6+0x04] cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
;; size=6 bbWeight=3.80 PerfScore 11.40 G_M10596_IG05: ; bbWeight=3.70, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ldr r3, [r6+0x08] cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
ldr r3, [r6+0x0C] cmp r3, r0
- beq SHORT G_M10596_IG10
+ beq SHORT G_M10596_IG08
adds r6, 16 subs r5, r5, 4 cmp r5, 4 @@ -58,52 +58,59 @@ G_M10596_IG05: ; bbWeight=3.70, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, b ;; size=20 bbWeight=3.70 PerfScore 37.00 G_M10596_IG06: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- bne SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG10
;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M10596_IG07: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M10596_IG07: ; bbWeight=1.07, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz + ldr r3, [r6] + cmp r3, r0 + bne SHORT G_M10596_IG13 + ;; size=6 bbWeight=1.07 PerfScore 3.22 +G_M10596_IG08: ; bbWeight=5.08, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref + mov r0, r1 + ; gcrRegs +[r0] + ;; size=2 bbWeight=5.08 PerfScore 5.08 +G_M10596_IG09: ; bbWeight=5.08, epilog, nogc, extend + pop {r3,r4,r5,r6,r11,pc} + ;; size=4 bbWeight=5.08 PerfScore 5.08 +G_M10596_IG10: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0]
ldr r3, [r4] movw r2, 0xd1ff movt r2, 0xd1ff ands r3, r2 cmp r3, 0
- beq SHORT G_M10596_IG13
+ beq SHORT G_M10596_IG14 + ;; size=16 bbWeight=0.80 PerfScore 4.80 +G_M10596_IG11: ; bbWeight=0.80, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=26 bbWeight=0.80 PerfScore 7.20 -G_M10596_IG08: ; bbWeight=0.80, epilog, nogc, extend
+ ;; size=10 bbWeight=0.80 PerfScore 2.40 +G_M10596_IG12: ; bbWeight=0.80, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.80 PerfScore 2.40
-G_M10596_IG09: ; bbWeight=1.07, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr r3, [r6] - cmp r3, r0 - bne SHORT G_M10596_IG12 - ;; size=6 bbWeight=1.07 PerfScore 3.22 -G_M10596_IG10: ; bbWeight=0.20, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref - mov r0, r1 - ; gcrRegs +[r0] - ;; size=2 bbWeight=0.20 PerfScore 0.20 -G_M10596_IG11: ; bbWeight=0.20, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc} - ;; size=4 bbWeight=0.20 PerfScore 0.20 -G_M10596_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0]
+G_M10596_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
adds r6, r6, 4 subs r5, r5, 1 cmp r5, 0
- bgt SHORT G_M10596_IG09 - b SHORT G_M10596_IG07 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M10596_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bgt SHORT G_M10596_IG07 + ldr r3, [r4] + movw r2, 0xd1ff + movt r2, 0xd1ff + ands r3, r2 + cmp r3, 0 + bne SHORT G_M10596_IG11 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M10596_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] movs r1, 0
- b SHORT G_M10596_IG10
+ b SHORT G_M10596_IG08
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 8, PerfScore 85.92, instruction count 53, allocated bytes for code 122 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 95.68, instruction count 58, allocated bytes for code 136 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,16 +122,16 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- 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 : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32

+16 (+13.33%) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)

@@ -10,8 +10,8 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 36.29) int -> r0 single-def
-; V01 arg1 [V01,T03] ( 7, 5 ) ref -> r1 class-hnd <System.Object> -; V02 loc0 [V02,T04] ( 4, 4 ) int -> r4
+; V01 arg1 [V01,T03] ( 7, 15.67) ref -> r1 class-hnd <System.Object> +; V02 loc0 [V02,T04] ( 5, 4 ) int -> r4
; V03 loc1 [V03,T02] ( 10, 28 ) int -> r5 ; V04 loc2 [V04,T00] ( 10, 50.29) int -> r6 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -29,7 +29,7 @@ G_M10596_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre ldr r4, [r1] ldrh r5, [r4+0x0E] cmp r5, 0
- beq SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG08
ldr r6, [r4+0x28] cmp r5, 4 blt SHORT G_M10596_IG05 @@ -54,51 +54,59 @@ G_M10596_IG03: ; bbWeight=8, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre ;; size=32 bbWeight=8 PerfScore 128.00 G_M10596_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq SHORT G_M10596_IG09
+ beq SHORT G_M10596_IG08
;; size=4 bbWeight=1 PerfScore 2.00 G_M10596_IG05: ; bbWeight=1.29, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ldr r3, [r6] cmp r3, r0
- bne SHORT G_M10596_IG08
+ bne SHORT G_M10596_IG11
;; size=6 bbWeight=1.29 PerfScore 3.88
-G_M10596_IG06: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M10596_IG06: ; bbWeight=10.67, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
mov r0, r1 ; gcrRegs +[r0]
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M10596_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=10.67 PerfScore 10.67 +G_M10596_IG07: ; bbWeight=10.67, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M10596_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=4 bbWeight=10.67 PerfScore 10.67 +G_M10596_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- adds r6, r6, 4 - subs r5, r5, 1 - cmp r5, 0 - bgt SHORT G_M10596_IG05 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M10596_IG09: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4] movw r2, 0xd1ff movt r2, 0xd1ff ands r3, r2 cmp r3, 0
- beq SHORT G_M10596_IG11
+ beq SHORT G_M10596_IG12 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M10596_IG09: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M10596_IG10: ; bbWeight=1, epilog, nogc, extend add sp, 4 pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 3.00
-G_M10596_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10596_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz + adds r6, r6, 4 + subs r5, r5, 1 + cmp r5, 0 + bgt SHORT G_M10596_IG05 + ldr r3, [r4] + movw r2, 0xd1ff + movt r2, 0xd1ff + ands r3, r2 + cmp r3, 0 + bne SHORT G_M10596_IG09 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M10596_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] movs r1, 0 b SHORT G_M10596_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 156.88, instruction count 52, allocated bytes for code 120 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 136, prolog size 8, PerfScore 178.22, instruction count 58, allocated bytes for code 136 (MethodHash=701ad69b) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -110,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.linux.arm.checked.mch

-12 (-4.14%) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)

@@ -8,29 +8,29 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 3 ) ref -> r8 this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> -; V01 arg1 [V01,T05] ( 7, 5.29) ref -> r7 class-hnd single-def <ushort[]> -; V02 arg2 [V02,T03] ( 7, 6 ) int -> r5 single-def -; V03 arg3 [V03,T04] ( 6, 6 ) int -> r6 single-def -; V04 loc0 [V04,T00] ( 21, 23 ) int -> r9 -; V05 loc1 [V05,T06] ( 6, 5.50) int -> r3 single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> r7 this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> +; V01 arg1 [V01,T07] ( 7, 5.29) ref -> r8 class-hnd single-def <ushort[]> +; V02 arg2 [V02,T04] ( 7, 6 ) int -> r5 single-def +; V03 arg3 [V03,T05] ( 6, 6 ) int -> r6 single-def +; V04 loc0 [V04,T00] ( 21, 37.80) int -> r9 +; V05 loc1 [V05,T09] ( 6, 5.50) int -> r3 single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> r0 single-def
+; V07 loc3 [V07,T08] ( 3, 5.94) int -> r0 single-def
; V08 loc4 [V08,T02] ( 12, 17.29) int -> r1
-; V09 loc5 [V09,T01] ( 8, 19.50) ref -> r8 class-hnd <<unknown class>>
+; V09 loc5 [V09,T01] ( 8, 22.46) ref -> r7 class-hnd <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T09] ( 3, 3 ) ref -> r3 single-def "arr expr" -; V12 cse0 [V12,T08] ( 4, 5 ) byref -> r0 "CSE - aggressive"
+; V11 tmp1 [V11,T03] ( 3, 11.88) ref -> r3 single-def "arr expr" +; V12 cse0 [V12,T10] ( 4, 5 ) byref -> r0 "CSE - aggressive"
; ; Lcl frame size = 0 G_M57627_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r11,lr} add r11, sp, 24
- mov r8, r0 - ; gcrRegs +[r8] - mov r7, r1
+ mov r7, r0
; gcrRegs +[r7]
+ mov r8, r1 + ; gcrRegs +[r8]
mov r5, r2 mov r6, r3 ;; size=16 bbWeight=1 PerfScore 6.00 @@ -62,10 +62,10 @@ G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8 ldr r0, [r0+0x208] ; byrRegs -[r0] add r9, r0, r6
- ldr r0, [r7+0x04]
+ ldr r0, [r8+0x04]
cmp r5, r0 bhs SHORT G_M57627_IG18
- add r0, r7, 8
+ add r0, r8, 8
; byrRegs +[r0] lsls r3, r5, 1 ldrh r3, [r0+r3] @@ -76,15 +76,15 @@ G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8 adds r1, r5, 1 cmp r1, r3 bge SHORT G_M57627_IG10
- ;; size=52 bbWeight=0.50 PerfScore 10.00
+ ;; size=54 bbWeight=0.50 PerfScore 10.00
G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz orrs r2, r1, r3 cmp r2, 0 blt SHORT G_M57627_IG09
- ldr r2, [r7+0x04]
+ ldr r2, [r8+0x04]
cmp r2, r3 blt SHORT G_M57627_IG09
- ;; size=14 bbWeight=0.25 PerfScore 1.50
+ ;; size=16 bbWeight=0.25 PerfScore 1.50
G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz lsls r2, r1, 1 ldrh r2, [r0+r2] @@ -95,13 +95,13 @@ G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r cmp r1, r3 blt SHORT G_M57627_IG07 ;; size=20 bbWeight=3.96 PerfScore 31.68
-G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] b SHORT G_M57627_IG10
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r0}, byref, isz ; byrRegs +[r0]
- ldr r2, [r7+0x04]
+ ldr r2, [r8+0x04]
cmp r1, r2 bhs SHORT G_M57627_IG18 lsls r2, r1, 1 @@ -112,8 +112,8 @@ G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=0180 {r7 r8}, byrefRegs=0001 {r adds r1, r1, 1 cmp r1, r3 blt SHORT G_M57627_IG09
- ;; size=26 bbWeight=0.04 PerfScore 0.44 -G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=0.04 PerfScore 0.44 +G_M57627_IG10: ; bbWeight=1.98, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] asr r0, r9, 17 sub r9, r9, r0 @@ -121,10 +121,10 @@ G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {} sub r9, r9, r0 asr r0, r9, 5 sub r9, r9, r0
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
dmb 15 and r0, r9, r0
- ldr r3, [r8+0x04]
+ ldr r3, [r7+0x04]
; gcrRegs +[r3] ldr r1, [r3+0x04] cmp r0, r1 @@ -133,21 +133,21 @@ G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {} ; gcrRegs -[r3] ; byrRegs +[r3] lsls r0, r0, 2
- ldr r8, [r3+r0] - cmp r8, 0
+ ldr r7, [r3+r0] + cmp r7, 0
beq SHORT G_M57627_IG14
- ;; size=60 bbWeight=0.50 PerfScore 9.00
+ ;; size=52 bbWeight=1.98 PerfScore 35.64
G_M57627_IG11: ; bbWeight=4, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r3]
- ldr r0, [r8+0x0C]
+ ldr r0, [r7+0x0C]
cmp r0, r9 bne SHORT G_M57627_IG13
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M57627_IG12: ; bbWeight=2, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r8+0x04]
+ ldr r0, [r7+0x04]
; gcrRegs +[r0] mov r3, r6
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1] mov r2, r5 movw r4, LOW RELOC 0xD1FFAB1E @@ -159,12 +159,12 @@ G_M57627_IG12: ; bbWeight=2, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, b ; gcr arg pop 0 cmp r0, 0 bne SHORT G_M57627_IG16
- ;; size=30 bbWeight=2 PerfScore 22.00
+ ;; size=28 bbWeight=2 PerfScore 22.00
G_M57627_IG13: ; bbWeight=4, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r8+0x08] - cmp r8, 0
+ ldr r7, [r7+0x08] + cmp r7, 0
bne SHORT G_M57627_IG11
- ;; size=10 bbWeight=4 PerfScore 12.00
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M57627_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r7-r8] movs r0, 0 @@ -173,16 +173,16 @@ G_M57627_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M57627_IG15: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r6,r7,r8,r9,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57627_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] +[r8] - ldr r0, [r8+0x04]
+G_M57627_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0] +[r7] + ldr r0, [r7+0x04]
; gcrRegs +[r0]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M57627_IG17: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r6,r7,r8,r9,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M57627_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r7]
movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E add r3, pc @@ -192,7 +192,7 @@ G_M57627_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 16, PerfScore 112.12, instruction count 105, allocated bytes for code 290 (MethodHash=33c41ee4) for method Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
+; Total bytes of code 278, prolog size 16, PerfScore 140.24, instruction count 105, allocated bytes for code 278 (MethodHash=33c41ee4) for method Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -204,7 +204,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 145 (0x00091) Actual length = 290 (0x000122)
+ Function Length : 139 (0x0008b) Actual length = 278 (0x000116)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-3.45%) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)

@@ -54,7 +54,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b movs r0, 0 ldr r8, [r7+0x04] cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
ldr r0, [r7+0x08] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -80,7 +80,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b mov r10, r0 subs r0, r5, 1 cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
add r4, r7, 8 ; byrRegs +[r4] str r4, [sp+0x04] @@ -125,7 +125,7 @@ G_M10937_IG04: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {} G_M10937_IG05: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz movs r0, 1 cmp r0, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
ldr r0, [r7+0x0C] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -134,14 +134,14 @@ G_M10937_IG05: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 ldr r2, [r4] blx r2 // Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String cmp r0, 0
- beq SHORT G_M10937_IG10
+ beq SHORT G_M10937_IG11
movs r4, 2 cmp r5, 2
- ble SHORT G_M10937_IG13
+ ble SHORT G_M10937_IG10
;; size=34 bbWeight=0.50 PerfScore 7.00 G_M10937_IG06: ; bbWeight=0.25, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz cmp r8, r5
- blt SHORT G_M10937_IG12
+ blt SHORT G_M10937_IG09
;; size=4 bbWeight=0.25 PerfScore 0.50 G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz str r4, [sp+0x0C] // [V08 loc5] @@ -170,7 +170,7 @@ G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0 blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M10937_IG09
+ bne SHORT G_M10937_IG11
ldr r4, [sp+0x08] // [V09 loc6] ; gcrRegs +[r4] mov r0, r4 @@ -181,27 +181,13 @@ G_M10937_IG07: ; bbWeight=3.96, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0 cmp r4, r5 blt SHORT G_M10937_IG07 ;; size=58 bbWeight=3.96 PerfScore 99.00
-G_M10937_IG08: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG08: ; bbWeight=1.98, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- b SHORT G_M10937_IG13 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M10937_IG09: ; bbWeight=1.98, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - ldr r4, [sp+0x10] // [V05 loc2] - b SHORT G_M10937_IG14 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M10937_IG10: ; bbWeight=0.25, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz - ldr r4, [sp+0x10] // [V05 loc2] - b SHORT G_M10937_IG14 - ;; size=4 bbWeight=0.25 PerfScore 0.50 -G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz - ldr r4, [sp+0x10] // [V05 loc2] - b SHORT G_M10937_IG14 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0]
+ b SHORT G_M10937_IG10 + ;; size=2 bbWeight=1.98 PerfScore 1.98 +G_M10937_IG09: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
cmp r4, r8
- bhs G_M10937_IG34
+ bhs G_M10937_IG30
str r4, [sp+0x0C] // [V08 loc5] lsls r1, r4, 2 ldr r3, [sp+0x04] // [V27 cse1] @@ -228,7 +214,7 @@ G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0 blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M10937_IG19
+ bne SHORT G_M10937_IG11
ldr r4, [sp+0x08] // [V09 loc6] ; gcrRegs +[r4] mov r0, r4 @@ -237,21 +223,20 @@ G_M10937_IG12: ; bbWeight=0.04, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0 ; gcrRegs -[r4] adds r4, r4, 1 cmp r4, r5
- blt SHORT G_M10937_IG12
+ blt SHORT G_M10937_IG09
;; size=64 bbWeight=0.04 PerfScore 1.08
-G_M10937_IG13: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref
+G_M10937_IG10: ; bbWeight=0.50, gcVars=00000020 {V27}, gcrefRegs=02C1 {r0 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- ldr r3, [r0+0x04] - str r3, [sp+0x10] // [V05 loc2] - ldr r4, [sp+0x10] // [V05 loc2]
+ ldr r1, [r0+0x04] + mov r4, r1 + str r4, [sp+0x10] // [V05 loc2]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG14: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG11: ; bbWeight=1, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] cmp r10, 0
- bne SHORT G_M10937_IG24
+ bne SHORT G_M10937_IG20
;; size=6 bbWeight=1 PerfScore 2.00
-G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz - str r4, [sp+0x10] // [V05 loc2]
+G_M10937_IG12: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x08] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -267,9 +252,9 @@ G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 ; gcrRegs +[r7] ldr r10, [sp+0x14] // [V04 loc1] cmp r10, 0
- bne SHORT G_M10937_IG16
+ bne SHORT G_M10937_IG13
cmp r5, 1
- bne SHORT G_M10937_IG16
+ bne SHORT G_M10937_IG13
mov r0, r7 movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -279,8 +264,8 @@ G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 ; gcrRegs -[r7] mov r7, r0 ; gcrRegs +[r7]
- ;; size=56 bbWeight=0.50 PerfScore 11.00 -G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=0.50 PerfScore 10.50 +G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movw r1, LOW RELOC 0xD1FFAB1E movt r1, HIGH RELOC 0xD1FFAB1E @@ -298,7 +283,7 @@ G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0-r1] cmp r0, 0
- bne SHORT G_M10937_IG22
+ bne SHORT G_M10937_IG18
mov r1, r9 ; gcrRegs +[r1] mov r0, r7 @@ -310,66 +295,60 @@ G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r0-r1 r9] cmp r0, 0
- bne SHORT G_M10937_IG21 - movw r1, LOW RELOC 0xD1FFAB1E - movt r1, HIGH RELOC 0xD1FFAB1E - add r1, pc - ldr r1, [r1] - ldr r1, [r1] - ; gcrRegs +[r1] - mov r0, r7 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1] - cmp r0, 0 - bne SHORT G_M10937_IG20 - movw r1, LOW RELOC 0xD1FFAB1E - movt r1, HIGH RELOC 0xD1FFAB1E - add r1, pc - ldr r1, [r1] - ldr r1, [r1] - ; gcrRegs +[r1] - mov r0, r7 - ; gcrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // <unknown method> - ; gcrRegs -[r0-r1] - cmp r0, 0
bne SHORT G_M10937_IG17
+ movw r1, LOW RELOC 0xD1FFAB1E + movt r1, HIGH RELOC 0xD1FFAB1E + add r1, pc + ldr r1, [r1] + ldr r1, [r1] + ; gcrRegs +[r1] + mov r0, r7 + ; gcrRegs +[r0] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1] + cmp r0, 0 + bne SHORT G_M10937_IG16 + movw r1, LOW RELOC 0xD1FFAB1E + movt r1, HIGH RELOC 0xD1FFAB1E + add r1, pc + ldr r1, [r1] + ldr r1, [r1] + ; gcrRegs +[r1] + mov r0, r7 + ; gcrRegs +[r0] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0-r1] + cmp r0, 0 + bne SHORT G_M10937_IG14
movs r1, 0
- b SHORT G_M10937_IG18
+ b SHORT G_M10937_IG15
;; size=130 bbWeight=0.50 PerfScore 25.50
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
+G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz - b SHORT G_M10937_IG23
+G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M10937_IG19
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG19: ; bbWeight=0.02, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r9] - ldr r4, [sp+0x10] // [V05 loc2] - b SHORT G_M10937_IG14 - ;; size=4 bbWeight=0.02 PerfScore 0.04 -G_M10937_IG20: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9]
+G_M10937_IG16: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
movs r1, 2
- b SHORT G_M10937_IG23
...

-40 (-2.86%) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span1[uint],System.Span1[uint]) (FullOpts)

@@ -8,17 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 30, 48.50) struct ( 8) [sp+0x100] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Span`1[uint]> -; V01 arg1 [V01 ] ( 26, 46.50) struct ( 8) [sp+0x108] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[uint]>
+; V00 arg0 [V00 ] ( 30, 48.50) struct ( 8) [sp+0x108] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Span`1[uint]> +; V01 arg1 [V01 ] ( 26, 46.50) struct ( 8) [sp+0x110] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Span`1[uint]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg <System.Span`1[uint]>
-; V03 loc1 [V03 ] ( 14,212 ) long -> [sp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op -; V04 loc2 [V04 ] ( 18,252 ) long -> [sp+0xC8] do-not-enreg[X] addr-exposed ld-addr-op -; V05 loc3 [V05,T13] ( 5, 54 ) int -> [sp+0xC4] -; V06 loc4 [V06,T12] ( 6, 58 ) int -> [sp+0xC0]
+; V03 loc1 [V03 ] ( 14,212 ) long -> [sp+0xD8] do-not-enreg[X] addr-exposed ld-addr-op +; V04 loc2 [V04 ] ( 18,252 ) long -> [sp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op +; V05 loc3 [V05,T13] ( 5, 54 ) int -> [sp+0xCC] +; V06 loc4 [V06,T10] ( 6, 67 ) int -> r8
; V07 loc5 [V07,T08] ( 7, 86 ) int -> r9
-; V08 loc6 [V08,T14] ( 5, 54 ) int -> [sp+0xBC] -; V09 loc7 [V09,T09] ( 6, 70 ) int -> [sp+0xB8] -; V10 loc8 [V10 ] ( 2, 32 ) long -> [sp+0xB0] multireg-ret
+; V08 loc6 [V08,T14] ( 5, 54 ) int -> [sp+0xC8] +; V09 loc7 [V09,T09] ( 6, 70 ) int -> [sp+0xC4] +; V10 loc8 [V10 ] ( 2, 32 ) long -> [sp+0xB8] multireg-ret
;* V11 loc9 [V11 ] ( 0, 0 ) long -> zero-ref ;* V12 loc10 [V12 ] ( 0, 0 ) long -> zero-ref ;* V13 loc11 [V13 ] ( 0, 0 ) long -> zero-ref @@ -28,51 +28,51 @@ ;* V17 loc15 [V17 ] ( 0, 0 ) long -> zero-ref ;* V18 loc16 [V18 ] ( 0, 0 ) long -> zero-ref ; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V20 tmp1 [V20 ] ( 3, 24 ) struct ( 8) [sp+0xA8] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "non-inline candidate call" <System.ReadOnlySpan`1[uint]> -; V21 tmp2 [V21 ] ( 3, 24 ) struct ( 8) [sp+0xA0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V20 tmp1 [V20 ] ( 3, 24 ) struct ( 8) [sp+0xB0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "non-inline candidate call" <System.ReadOnlySpan`1[uint]> +; V21 tmp2 [V21 ] ( 3, 24 ) struct ( 8) [sp+0xA8] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V22 tmp3 [V22 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "non-inline candidate call" <System.Span`1[uint]>
-; V23 tmp4 [V23 ] ( 3, 12 ) struct ( 8) [sp+0x98] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V23 tmp4 [V23 ] ( 3, 12 ) struct ( 8) [sp+0xA0] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V24 tmp5 [V24 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "non-inline candidate call" <System.Span`1[uint]>
-; V25 tmp6 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x90] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
+; V25 tmp6 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x98] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[uint]>
;* V26 tmp7 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[uint]> ; V27 tmp8 [V27,T49] ( 2, 2 ) byref -> [sp+0x2C] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp9 [V28,T50] ( 2, 2 ) int -> [sp+0x8C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V28 tmp9 [V28,T50] ( 2, 2 ) int -> [sp+0x94] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP
; V29 tmp10 [V29,T37] ( 2, 4 ) byref -> r0 "field V14._reference (fldOffset=0x0)" P-INDEP ; V30 tmp11 [V30,T40] ( 2, 4 ) int -> r1 "field V14._length (fldOffset=0x4)" P-INDEP ; V31 tmp12 [V31,T38] ( 2, 4 ) byref -> r1 "field V16._reference (fldOffset=0x0)" P-INDEP ; V32 tmp13 [V32,T41] ( 2, 4 ) int -> r2 "field V16._length (fldOffset=0x4)" P-INDEP
-; V33 tmp14 [V33,T27] ( 2, 12 ) byref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V20._reference (fldOffset=0x0)" P-DEP -; V34 tmp15 [V34,T29] ( 2, 12 ) int -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V20._length (fldOffset=0x4)" P-DEP -; V35 tmp16 [V35,T28] ( 2, 12 ) byref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V21._reference (fldOffset=0x0)" P-DEP -; V36 tmp17 [V36,T30] ( 2, 12 ) int -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V21._length (fldOffset=0x4)" P-DEP
+; V33 tmp14 [V33,T27] ( 2, 12 ) byref -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V20._reference (fldOffset=0x0)" P-DEP +; V34 tmp15 [V34,T29] ( 2, 12 ) int -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V20._length (fldOffset=0x4)" P-DEP +; V35 tmp16 [V35,T28] ( 2, 12 ) byref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V21._reference (fldOffset=0x0)" P-DEP +; V36 tmp17 [V36,T30] ( 2, 12 ) int -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V21._length (fldOffset=0x4)" P-DEP
; V37 tmp18 [V37,T39] ( 2, 4 ) byref -> r7 "field V22._reference (fldOffset=0x0)" P-INDEP ; V38 tmp19 [V38,T42] ( 2, 4 ) int -> r8 "field V22._length (fldOffset=0x4)" P-INDEP
-; V39 tmp20 [V39,T35] ( 2, 6 ) byref -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V23._reference (fldOffset=0x0)" P-DEP -; V40 tmp21 [V40,T36] ( 2, 6 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V23._length (fldOffset=0x4)" P-DEP
+; V39 tmp20 [V39,T35] ( 2, 6 ) byref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V23._reference (fldOffset=0x0)" P-DEP +; V40 tmp21 [V40,T36] ( 2, 6 ) int -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V23._length (fldOffset=0x4)" P-DEP
; V41 tmp22 [V41,T61] ( 2, 1 ) byref -> r7 single-def "field V24._reference (fldOffset=0x0)" P-INDEP ; V42 tmp23 [V42,T62] ( 2, 1 ) int -> r8 "field V24._length (fldOffset=0x4)" P-INDEP
-; V43 tmp24 [V43,T57] ( 2, 1.50) byref -> [sp+0x90] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP -; V44 tmp25 [V44,T58] ( 2, 1.50) int -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
+; V43 tmp24 [V43,T57] ( 2, 1.50) byref -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP +; V44 tmp25 [V44,T58] ( 2, 1.50) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
;* V45 tmp26 [V45 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp27 [V46 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ; V47 tmp28 [V47,T31] ( 2, 8 ) int -> r3 "argument with side effect" ; V48 tmp29 [V48,T32] ( 2, 8 ) int -> r3 "argument with side effect" ; V49 tmp30 [V49,T33] ( 2, 8 ) int -> r3 "argument with side effect"
-; V50 tmp31 [V50 ] ( 1, 1 ) long -> [sp+0x80] multireg-ret "argument with side effect" -; V51 tmp32 [V51,T43] ( 3, 3 ) struct ( 8) [sp+0x78] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[uint]>
+; V50 tmp31 [V50 ] ( 1, 1 ) long -> [sp+0x88] multireg-ret "argument with side effect" +; V51 tmp32 [V51,T43] ( 3, 3 ) struct ( 8) [sp+0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[uint]>
; V52 tmp33 [V52,T51] ( 2, 2 ) int -> r3 "argument with side effect" ; V53 cse0 [V53,T44] ( 4, 2 ) int -> r3 "CSE - moderate" ; V54 cse1 [V54,T54] ( 3, 1.50) byref -> r2 "CSE - moderate" ; V55 cse2 [V55,T56] ( 3, 1.50) int -> r12 "CSE - moderate" ; V56 cse3 [V56,T55] ( 3, 1.50) byref -> lr "CSE - moderate" ;* V57 cse4 [V57 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V58 rat0 [V58,T01] ( 8,128 ) int -> [sp+0x74] "field V10.lo (fldOffset=0x0)" P-INDEP -; V59 rat1 [V59,T00] ( 10,160 ) int -> [sp+0x70] "field V10.hi (fldOffset=0x4)" P-INDEP -; V60 rat2 [V60,T02] ( 8,128 ) int -> [sp+0x6C] "field V11.lo (fldOffset=0x0)" P-INDEP -; V61 rat3 [V61,T06] ( 6, 96 ) int -> [sp+0x68] "field V11.hi (fldOffset=0x4)" P-INDEP -; V62 rat4 [V62,T03] ( 8,128 ) int -> [sp+0x64] "field V12.lo (fldOffset=0x0)" P-INDEP -; V63 rat5 [V63,T07] ( 6, 96 ) int -> [sp+0x60] "field V12.hi (fldOffset=0x4)" P-INDEP -; V64 rat6 [V64,T04] ( 8,128 ) int -> registers "field V13.lo (fldOffset=0x0)" P-INDEP
+; V58 rat0 [V58,T01] ( 8,128 ) int -> [sp+0x7C] "field V10.lo (fldOffset=0x0)" P-INDEP +; V59 rat1 [V59,T00] ( 10,160 ) int -> [sp+0x78] "field V10.hi (fldOffset=0x4)" P-INDEP +; V60 rat2 [V60,T02] ( 8,128 ) int -> [sp+0x74] "field V11.lo (fldOffset=0x0)" P-INDEP +; V61 rat3 [V61,T06] ( 6, 96 ) int -> [sp+0x70] "field V11.hi (fldOffset=0x4)" P-INDEP +; V62 rat4 [V62,T03] ( 8,128 ) int -> [sp+0x6C] "field V12.lo (fldOffset=0x0)" P-INDEP +; V63 rat5 [V63,T07] ( 6, 96 ) int -> [sp+0x68] "field V12.hi (fldOffset=0x4)" P-INDEP +; V64 rat6 [V64,T04] ( 8,128 ) int -> r5 "field V13.lo (fldOffset=0x0)" P-INDEP
; V65 rat7 [V65,T05] ( 8,128 ) int -> lr "field V13.hi (fldOffset=0x4)" P-INDEP ; V66 rat8 [V66,T45] ( 4, 2 ) int -> r0 "field V17.lo (fldOffset=0x0)" P-INDEP ; V67 rat9 [V67,T46] ( 4, 2 ) int -> r1 "field V17.hi (fldOffset=0x4)" P-INDEP @@ -80,8 +80,8 @@ ; V69 rat11 [V69,T48] ( 4, 2 ) int -> r7 "field V18.hi (fldOffset=0x4)" P-INDEP ; V70 rat12 [V70,T59] ( 2, 1.50) int -> r2 "field V50.lo (fldOffset=0x0)" P-INDEP ; V71 rat13 [V71,T60] ( 2, 1.50) int -> r3 "field V50.hi (fldOffset=0x4)" P-INDEP
-; V72 rat14 [V72,T10] ( 4, 64 ) int -> r6 "field V57.lo (fldOffset=0x0)" P-INDEP -; V73 rat15 [V73,T11] ( 4, 64 ) int -> r5 "field V57.hi (fldOffset=0x4)" P-INDEP
+; V72 rat14 [V72,T11] ( 4, 64 ) int -> r6 "field V57.lo (fldOffset=0x0)" P-INDEP +; V73 rat15 [V73,T12] ( 4, 64 ) int -> [sp+0x64] spill-single-def "field V57.hi (fldOffset=0x4)" P-INDEP
; V74 rat16 [V74 ] ( 1, 32 ) long -> [sp+0x58] multireg-ret "ReplaceWithLclVar is creating a new local variable" ; V75 rat17 [V75,T15] ( 2, 48 ) int -> r0 "field V74.lo (fldOffset=0x0)" P-INDEP ; V76 rat18 [V76,T16] ( 2, 48 ) int -> r1 "field V74.hi (fldOffset=0x4)" P-INDEP @@ -102,16 +102,16 @@ ; V91 rat33 [V91,T26] ( 2, 48 ) int -> r1 "field V89.hi (fldOffset=0x4)" P-INDEP ; V92 rat34 [V92,T52] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" ; V93 rat35 [V93,T53] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 int -> [r11-0xD0] -; TEMP_01 int -> [r11-0xD4]
+; TEMP_02 int -> [r11-0xD8] +; TEMP_01 int -> [r11-0xDC]
;
-; Lcl frame size = 220
+; Lcl frame size = 228
G_M11558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 220 - add r11, sp, 248
+ sub sp, 228 + add r11, sp, 256
sub r2, r11, 128 movs r3, 7 movs r0, 0 @@ -121,23 +121,23 @@ G_M11558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bhi SHORT pc-6 (-3 instructions) ;; size=28 bbWeight=1 PerfScore 11.00 G_M11558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x100]
+ ldr r5, [sp+0x108]
; byrRegs +[r5] str r5, [sp+0x2C] // [V27 tmp8] ; GC ptr vars +{V27}
- ldr r6, [sp+0x104] // [V00 arg0+0x04] - str r6, [sp+0x8C] // [V28 tmp9] - ldr r1, [sp+0x10C] // [V01 arg1+0x04]
+ ldr r6, [sp+0x10C] // [V00 arg0+0x04] + str r6, [sp+0x94] // [V28 tmp9] + ldr r1, [sp+0x114] // [V01 arg1+0x04]
cmp r1, 2 ldr r5, [sp+0x2C] // [V27 tmp8]
- ldr r6, [sp+0x8C] // [V28 tmp9]
+ ldr r6, [sp+0x94] // [V28 tmp9]
ble G_M11558_IG28 ;; size=20 bbWeight=1 PerfScore 9.00 G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ldr r1, [sp+0x100] // [V00 arg0]
+ ldr r1, [sp+0x108] // [V00 arg0]
; byrRegs +[r1]
- ldr r2, [sp+0x104] // [V00 arg0+0x04] - add r0, sp, 168 // [V20 tmp1]
+ ldr r2, [sp+0x10C] // [V00 arg0+0x04] + add r0, sp, 176 // [V20 tmp1]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -145,10 +145,10 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000 blx r3 // <unknown method> ; byrRegs -[r1] ; gcr arg pop 0
- ldr r1, [sp+0x108] // [V01 arg1]
+ ldr r1, [sp+0x110] // [V01 arg1]
; byrRegs +[r1]
- ldr r2, [sp+0x10C] // [V01 arg1+0x04] - add r0, sp, 160 // [V21 tmp2]
+ ldr r2, [sp+0x114] // [V01 arg1+0x04] + add r0, sp, 168 // [V21 tmp2]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -156,16 +156,16 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000 blx r3 // <unknown method> ; byrRegs -[r1] ; gcr arg pop 0
- add r0, sp, 208 // [V03 loc1]
+ add r0, sp, 216 // [V03 loc1]
str r0, [sp] // [V19 OutArgs]
- add r0, sp, 200 // [V04 loc2]
+ add r0, sp, 208 // [V04 loc2]
str r0, [sp+0x04] // [V19 OutArgs+0x04]
- ldr r0, [sp+0xA8] // [V33 tmp14]
+ ldr r0, [sp+0xB0] // [V33 tmp14]
; byrRegs +[r0]
- ldr r1, [sp+0xAC] // [V34 tmp15] - ldr r2, [sp+0xA0] // [V35 tmp16]
+ ldr r1, [sp+0xB4] // [V34 tmp15] + ldr r2, [sp+0xA8] // [V35 tmp16]
; byrRegs +[r2]
- ldr r3, [sp+0xA4] // [V36 tmp17]
+ ldr r3, [sp+0xAC] // [V36 tmp17]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -178,17 +178,17 @@ G_M11558_IG03: ; bbWeight=4, gcVars=0002000000000000 {V27}, gcrefRegs=000 mov r9, 0 movs r4, 1 mov lr, 0
- str lr, [sp+0xB8] // [V09 loc7] - ldr r0, [sp+0xC8] // [V04 loc2] - ldr r1, [sp+0xCC] // [V04 loc2+0x04]
+ str lr, [sp+0xC4] // [V09 loc7] + ldr r0, [sp+0xD0] // [V04 loc2] + ldr r1, [sp+0xD4] // [V04 loc2+0x04]
orrs r0, r1 beq G_M11558_IG06 ;; size=102 bbWeight=4 PerfScore 156.00 G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [sp+0xD0] // [V03 loc1] - ldr r1, [sp+0xD4] // [V03 loc1+0x04] - ldr r2, [sp+0xC8] // [V04 loc2] - ldr r3, [sp+0xCC] // [V04 loc2+0x04]
+ ldr r0, [sp+0xD8] // [V03 loc1] + ldr r1, [sp+0xDC] // [V03 loc1+0x04] + ldr r2, [sp+0xD0] // [V04 loc2] + ldr r3, [sp+0xD4] // [V04 loc2+0x04]
movw r12, LOW RELOC 0xD1FFAB1E movt r12, HIGH RELOC 0xD1FFAB1E add r12, pc @@ -201,9 +201,9 @@ G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byr bhs G_M11558_IG06 mov r2, r9 movs r3, 0
- str lr, [sp+0x74] // [V58 rat0]
+ str lr, [sp+0x7C] // [V58 rat0]
mov r0, lr
- str r12, [sp+0x70] // [V59 rat1]
+ str r12, [sp+0x78] // [V59 rat1]
mov r1, r12 movw r6, LOW RELOC 0xD1FFAB1E movt r6, HIGH RELOC 0xD1FFAB1E @@ -215,12 +215,12 @@ G_M11558_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byr movs r2, 0 adds r6, r0, r7 adc lr, r1, r2
- str lr, [sp+0x68] // [V61 rat3] - str r4, [sp+0xBC] // [V08 loc6]
+ str lr, [sp+0x70] // [V61 rat3] + str r4, [sp+0xC8] // [V08 loc6]
mov r2, r4 movs r3, 0 ...

+22 (+3.67%) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)

@@ -9,15 +9,15 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 12, 14 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol>
+; V00 this [V00,T02] ( 12, 15.96) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol>
; V01 arg1 [V01,T05] ( 7, 9 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.PEAssembly>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.DocumentationProvider> -; V03 arg3 [V03,T10] ( 3, 3 ) ubyte -> r8 single-def
+; V02 arg2 [V02,T10] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.DocumentationProvider> +; V03 arg3 [V03,T09] ( 3, 3.98) ubyte -> r7 single-def
; V04 arg4 [V04,T12] ( 2, 0.54) ubyte -> [sp+0x48] single-def
-; V05 loc0 [V05,T06] ( 6, 6.54) ref -> r9 class-hnd exact single-def <<unknown class>>
+; V05 loc0 [V05,T06] ( 6, 7.52) ref -> r9 class-hnd exact single-def <<unknown class>>
;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]> ; V07 loc2 [V07,T07] ( 5, 6.50) int -> r10 single-def
-; V08 loc3 [V08,T00] ( 15, 25.08) int -> r7
+; V08 loc3 [V08,T00] ( 15, 25.08) int -> r8
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 6, 24 ) ref -> [sp+0x14] class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol> ; V11 tmp2 [V11,T08] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -39,11 +39,11 @@ G_M53480_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r5] mov r6, r1 ; gcrRegs +[r6]
- mov r7, r2 - ; gcrRegs +[r7] - mov r8, r3
+ mov r8, r2 + ; gcrRegs +[r8] + mov r7, r3
;; size=22 bbWeight=1 PerfScore 9.00
-G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53480_IG02: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -117,14 +117,14 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} ; byrRegs -[r0] add r0, r5, 44 ; byrRegs +[r0]
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1] movw r12, LOW RELOC 0xD1FFAB1E movt r12, HIGH RELOC 0xD1FFAB1E add r12, pc ldr r12, [r12] blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r7]
+ ; gcrRegs -[r1 r8]
; byrRegs -[r0] mov r0, r6 ; gcrRegs +[r0] @@ -134,16 +134,16 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} ldr r2, [r0] ldr r3, [r4] blx r3 // <unknown method>
- mov r7, r0 - ; gcrRegs +[r7] - ldr r0, [r7+0x04]
+ mov r8, r0 + ; gcrRegs +[r8] + ldr r0, [r8+0x04]
; gcrRegs -[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4] blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1
- ; gcrRegs -[r7] +[r0]
+ ; gcrRegs -[r8] +[r0]
mov r9, r0 ; gcrRegs +[r9] mov r0, r6 @@ -152,16 +152,16 @@ G_M53480_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} add r4, pc ldr r3, [r4] blx r3 // <unknown method>
- mov r7, r0 - ; gcrRegs +[r7] - ldr r0, [r7+0x04]
+ mov r8, r0 + ; gcrRegs +[r8] + ldr r0, [r8+0x04]
; gcrRegs -[r0] add r10, r0, -1
- movs r7, 0 - ; gcrRegs -[r7]
+ mov r8, 0 + ; gcrRegs -[r8]
cmp r10, 0
- blt SHORT G_M53480_IG07 - ;; size=248 bbWeight=1 PerfScore 86.00
+ blt G_M53480_IG07 + ;; size=256 bbWeight=1 PerfScore 86.00
G_M53480_IG03: ; bbWeight=0.50, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz ldr r0, [r9+0x04] cmp r0, r10 @@ -186,15 +186,15 @@ G_M53480_IG04: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 blx r3 // CORINFO_HELP_READYTORUN_NEW mov r4, r0 ; gcrRegs +[r4]
- str r7, [sp] // [V09 OutArgs]
+ str r8, [sp] // [V09 OutArgs]
ldr lr, [sp+0x10] // [V13 tmp4] ; gcrRegs +[lr] ldr r2, [lr+0x04]
- cmp r7, r2 - bhs SHORT G_M53480_IG09
+ cmp r8, r2 + bhs G_M53480_IG09
add r2, lr, 8 ; byrRegs +[r2]
- lsl lr, r7, 2
+ lsl lr, r8, 2
; gcrRegs -[lr] str lr, [sp+0x18] // [V15 cse1] ldr r2, [r2+lr] @@ -230,14 +230,14 @@ G_M53480_IG04: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r7, r7, 1 - cmp r7, r10
+ add r8, r8, 1 + cmp r8, r10
ble SHORT G_M53480_IG04
- ;; size=120 bbWeight=3.96 PerfScore 170.28 -G_M53480_IG05: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=126 bbWeight=3.96 PerfScore 170.28 +G_M53480_IG05: ; bbWeight=1.98, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6] b SHORT G_M53480_IG07
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6] mov r0, r6 @@ -256,16 +256,16 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 blx r3 // CORINFO_HELP_READYTORUN_NEW mov r4, r0 ; gcrRegs +[r4]
- str r7, [sp] // [V09 OutArgs]
+ str r8, [sp] // [V09 OutArgs]
ldr r2, [sp+0x10] // [V13 tmp4] ; gcrRegs +[r2] ldr r3, [r2+0x04]
- cmp r7, r3
+ cmp r8, r3
bhs SHORT G_M53480_IG09 adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2]
- lsls r3, r7, 2
+ lsl r3, r8, 2
ldr r2, [r2+r3] ; gcrRegs +[r2] ; byrRegs -[r2] @@ -284,11 +284,11 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 blx r12 // <unknown method> ; gcrRegs -[r0-r2] ldr r1, [r9+0x04]
- cmp r7, r1
+ cmp r8, r1
bhs SHORT G_M53480_IG09 add r1, r9, 8 ; byrRegs +[r1]
- lsls r0, r7, 2
+ lsl r0, r8, 2
adds r0, r1, r0 ; byrRegs +[r0] ldr r1, [sp+0x14] // [V10 tmp1] @@ -302,11 +302,11 @@ G_M53480_IG06: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r7, r7, 1 - cmp r7, r10
+ add r8, r8, 1 + cmp r8, r10
ble SHORT G_M53480_IG06
- ;; size=116 bbWeight=0.04 PerfScore 1.80 -G_M53480_IG07: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref
+ ;; size=124 bbWeight=0.04 PerfScore 1.80 +G_M53480_IG07: ; bbWeight=1.98, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r6] movw r0, LOW RELOC 0xD1FFAB1E movt r0, HIGH RELOC 0xD1FFAB1E @@ -333,12 +333,12 @@ G_M53480_IG07: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, b blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- strb r8, [r5+0x38] - ;; size=56 bbWeight=1 PerfScore 19.00 -G_M53480_IG08: ; bbWeight=1, epilog, nogc, extend
+ strb r7, [r5+0x38] + ;; size=56 bbWeight=1.98 PerfScore 37.62 +G_M53480_IG08: ; bbWeight=1.98, epilog, nogc, extend
add sp, 36 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ;; size=6 bbWeight=1.98 PerfScore 3.96
G_M53480_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r5] movw r3, LOW RELOC 0xD1FFAB1E @@ -349,7 +349,7 @@ G_M53480_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 14, PerfScore 291.58, instruction count 216, allocated bytes for code 600 (MethodHash=1b0e2f17) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
+; Total bytes of code 622, prolog size 14, PerfScore 313.14, instruction count 216, allocated bytes for code 622 (MethodHash=1b0e2f17) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -361,7 +361,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 300 (0x0012c) Actual length = 600 (0x000258)
+ Function Length : 311 (0x00137) Actual length = 622 (0x00026e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+10 (+3.82%) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)

@@ -8,17 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 2.50) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> -; V01 arg1 [V01,T05] ( 6, 7 ) ref -> r7 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> -; V02 arg2 [V02,T03] ( 6, 7.50) ref -> r5 class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V03 arg3 [V03,T04] ( 7, 7.04) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V04 arg4 [V04,T08] ( 3, 2 ) int -> r9 single-def -; V05 arg5 [V05,T09] ( 2, 1 ) int -> [sp+0x34] single-def -; V06 arg6 [V06,T10] ( 1, 0.50) ref -> [sp+0x38] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject> -; V07 loc0 [V07,T00] ( 16, 19.62) int -> r10
+; V00 this [V00,T07] ( 3, 3.98) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> +; V01 arg1 [V01,T03] ( 6, 8.48) ref -> r5 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> +; V02 arg2 [V02,T04] ( 6, 7.50) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V03 arg3 [V03,T05] ( 7, 7.04) ref -> r7 class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V04 arg4 [V04,T08] ( 3, 3.48) int -> r9 single-def +; V05 arg5 [V05,T10] ( 2, 1 ) int -> [sp+0x34] single-def +; V06 arg6 [V06,T09] ( 1, 1.98) ref -> r10 class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject> +; V07 loc0 [V07,T00] ( 16, 19.62) int -> [sp+0x04]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T01] ( 4, 16 ) ref -> r1 "argument with side effect"
-; V10 cse0 [V10,T06] ( 7, 7.04) int -> [sp+0x04] spill-single-def "CSE - aggressive"
+; V10 cse0 [V10,T06] ( 7, 8.52) int -> [sp+0x00] spill-single-def "CSE - aggressive"
; V11 cse1 [V11,T02] ( 3, 11.88) int -> r2 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -29,140 +29,147 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 40 mov r8, r0 ; gcrRegs +[r8]
- mov r7, r1 - ; gcrRegs +[r7] - mov r5, r2
+ mov r5, r1
; gcrRegs +[r5]
- mov r6, r3
+ mov r6, r2
; gcrRegs +[r6]
+ mov r7, r3 + ; gcrRegs +[r7]
ldr r9, [sp+0x30] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 8.00 -G_M11155_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - add r10, r9, 1 - ldr r4, [r5+0x04] - str r4, [sp+0x04] - cmp r4, r10
+ ldr r10, [sp+0x38] // [V06 arg6] + ; gcrRegs +[r10] + ;; size=26 bbWeight=1 PerfScore 9.00 +G_M11155_IG02: ; bbWeight=1, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + add r4, r9, 1 + ldr r3, [r6+0x04] + str r3, [sp] + cmp r3, r4
ble SHORT G_M11155_IG07 ;; size=12 bbWeight=1 PerfScore 5.00
-G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - cmp r6, 0
+G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + cmp r7, 0
beq SHORT G_M11155_IG08
- cmp r10, 0
+ cmp r4, 0
blt SHORT G_M11155_IG08
- ldr r1, [r6+0x04] - cmp r1, r4
+ ldr r1, [r7+0x04] + cmp r1, r3
blt SHORT G_M11155_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.50 -G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - add r1, r5, 8
+ ;; size=14 bbWeight=0.50 PerfScore 3.50 +G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + add r1, r6, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ str r4, [sp+0x04] + lsls r2, r4, 2
ldr r1, [r1+r2] ; gcrRegs +[r1] ; byrRegs -[r1]
- add r0, r6, 8
+ add r0, r7, 8
; byrRegs +[r0] ldr r2, [r0+r2] ; gcrRegs +[r2]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0] ; byrRegs -[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this ; gcrRegs -[r0-r2] cmp r0, 0 bne SHORT G_M11155_IG12
- add r10, r10, 1 - ldr r4, [sp+0x04] // [V10 cse0] - cmp r4, r10
+ ldr r4, [sp+0x04] // [V07 loc0] + adds r4, r4, 1 + ldr r3, [sp] // [V10 cse0] + cmp r3, r4
bgt SHORT G_M11155_IG04
- ;; size=50 bbWeight=3.96 PerfScore 71.28 -G_M11155_IG05: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5-r6]
+ ;; size=52 bbWeight=3.96 PerfScore 79.20 +G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6-r7]
b SHORT G_M11155_IG09
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5-r6] - ldr r4, [sp+0x04] // [V10 cse0]
+ ;; size=2 bbWeight=1.98 PerfScore 1.98 +G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r6-r7] + ldr r3, [sp] // [V10 cse0]
b SHORT G_M11155_IG08 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5-r6]
+G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6-r7]
b SHORT G_M11155_IG09 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M11155_IG08: ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5-r6] - cmp r10, r4
+G_M11155_IG08: ; bbWeight=0.04, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r6-r7] + cmp r4, r3
bhs SHORT G_M11155_IG15
- add r1, r5, 8
+ add r1, r6, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ lsls r2, r4, 2
ldr r1, [r1+r2] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r2, [r6+0x04] - cmp r10, r2
+ ldr r2, [r7+0x04] + cmp r4, r2
bhs SHORT G_M11155_IG15
- add r2, r6, 8
+ add r2, r7, 8
; byrRegs +[r2]
- lsl r0, r10, 2
+ str r4, [sp+0x04] // [V07 loc0] + lsls r0, r4, 2
ldr r2, [r2+r0] ; gcrRegs +[r2] ; byrRegs -[r2]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this ; gcrRegs -[r0-r2] cmp r0, 0 bne SHORT G_M11155_IG12
- add r10, r10, 1 - ldr r4, [sp+0x04] // [V10 cse0] - cmp r4, r10
+ ldr r4, [sp+0x04] // [V07 loc0] + adds r4, r4, 1 + ldr lr, [sp] // [V10 cse0] + cmp lr, r4
bgt SHORT G_M11155_IG11
- ;; size=64 bbWeight=0.04 PerfScore 0.96 -G_M11155_IG09: ; bbWeight=0.50, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[r5-r6]
+ ;; size=66 bbWeight=0.04 PerfScore 1.04 +G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=0520 {r5 r8 r10}, byrefRegs=0000 {}, byref + ; gcrRegs -[r6-r7]
mov r0, r8 ; gcrRegs +[r0] mov r3, r9
- mov r1, r7
+ mov r1, r5
; gcrRegs +[r1]
- ldr r2, [sp+0x38] // [V06 arg6]
+ mov r2, r10
; gcrRegs +[r2] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this
- ; gcrRegs -[r0-r2 r7-r8] - ldr r0, [sp+0x04] // [V10 cse0] - ;; size=26 bbWeight=0.50 PerfScore 5.00 -G_M11155_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[r0-r2 r5 r8 r10] + ldr r0, [sp] // [V10 cse0] + ;; size=26 bbWeight=1.98 PerfScore 19.80 +G_M11155_IG10: ; bbWeight=1.98, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M11155_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r5-r8] - ldr r4, [sp+0x04] // [V10 cse0]
+ ;; size=6 bbWeight=1.98 PerfScore 3.96 +G_M11155_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r5-r8 r10] + ldr r3, [sp] // [V10 cse0]
b SHORT G_M11155_IG08 ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r6 r8]
+G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r7-r8 r10]
ldr r4, [sp+0x34] // [V05 arg5]
- cmp r4, r10
+ ldr r8, [sp+0x04] // [V07 loc0] + cmp r4, r8
bge SHORT G_M11155_IG13
- mov r3, r5
+ mov r3, r6
; gcrRegs +[r3]
- mov r0, r7
+ mov r0, r5
; gcrRegs +[r0] mov r1, r9 mov r2, r4 @@ -171,10 +178,10 @@ G_M11155_IG12: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} add r4, pc ldr lr, [r4] blx lr // <unknown method>
- ; gcrRegs -[r0 r3 r5 r7] - ;; size=30 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs -[r0 r3 r5-r6] + ;; size=34 bbWeight=0.50 PerfScore 6.50
G_M11155_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ...

+12 (+5.22%) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)

@@ -8,17 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 3, 2.50) ref -> r8 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> -; V01 arg1 [V01,T04] ( 5, 6.50) ref -> r6 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> -; V02 arg2 [V02,T06] ( 5, 3.54) ref -> r7 class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V03 arg3 [V03,T03] ( 7, 7.04) ref -> r5 class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V04 arg4 [V04,T09] ( 2, 1.50) int -> r9 single-def -; V05 arg5 [V05,T10] ( 1, 0.50) ref -> [sp+0x34] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject> -; V06 loc0 [V06,T00] ( 15, 19.12) int -> r10
+; V00 this [V00,T06] ( 3, 3.98) ref -> r7 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> +; V01 arg1 [V01,T03] ( 5, 7.98) ref -> r5 class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> +; V02 arg2 [V02,T07] ( 5, 3.54) ref -> r8 class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V03 arg3 [V03,T04] ( 7, 7.04) ref -> r6 class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V04 arg4 [V04,T09] ( 2, 2.98) int -> r9 single-def +; V05 arg5 [V05,T10] ( 1, 1.98) ref -> r10 class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject> +; V06 loc0 [V06,T00] ( 15, 19.12) int -> [sp+0x04]
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 4, 16 ) ref -> r1 "argument with side effect"
-; V09 cse0 [V09,T05] ( 7, 7.04) int -> [sp+0x04] spill-single-def "CSE - aggressive" -; V10 cse1 [V10,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse0 [V09,T05] ( 7, 8.52) int -> [sp+0x00] spill-single-def "CSE - aggressive" +; V10 cse1 [V10,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V11 cse2 [V11,T02] ( 3, 11.88) int -> r2 "CSE - aggressive" ; ; Lcl frame size = 12 @@ -27,138 +27,144 @@ G_M60484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, 12 add r11, sp, 40
- mov r8, r0 - ; gcrRegs +[r8] - mov r6, r1 - ; gcrRegs +[r6] - mov r7, r2
+ mov r7, r0
; gcrRegs +[r7]
- mov r5, r3
+ mov r5, r1
; gcrRegs +[r5]
+ mov r8, r2 + ; gcrRegs +[r8] + mov r6, r3 + ; gcrRegs +[r6]
ldr r9, [sp+0x30] // [V04 arg4]
- ;; size=22 bbWeight=1 PerfScore 8.00 -G_M60484_IG02: ; bbWeight=1, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - add r10, r9, 1 - ldr r4, [r7+0x04] - str r4, [sp+0x04] - cmp r4, r10
+ ldr r10, [sp+0x34] // [V05 arg5] + ; gcrRegs +[r10] + ;; size=26 bbWeight=1 PerfScore 9.00 +G_M60484_IG02: ; bbWeight=1, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + add r4, r9, 1 + ldr r3, [r8+0x04] + str r3, [sp] + cmp r3, r4
ble SHORT G_M60484_IG07
- ;; size=12 bbWeight=1 PerfScore 5.00 -G_M60484_IG03: ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - cmp r5, 0
+ ;; size=14 bbWeight=1 PerfScore 5.00 +G_M60484_IG03: ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + cmp r6, 0
beq SHORT G_M60484_IG08
- cmp r10, 0
+ cmp r4, 0
blt SHORT G_M60484_IG08
- ldr r1, [r5+0x04] - cmp r1, r4
+ ldr r1, [r6+0x04] + cmp r1, r3
blt SHORT G_M60484_IG06
- adds r7, 8 - ; gcrRegs -[r7] - ; byrRegs +[r7]
+ add r8, r8, 8 + ; gcrRegs -[r8] + ; byrRegs +[r8]
;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M60484_IG04: ; bbWeight=3.96, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, byref, isz - lsl r2, r10, 2 - ldr r1, [r7+r2]
+G_M60484_IG04: ; bbWeight=3.96, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0100 {r8}, byref, isz + str r4, [sp+0x04] + lsls r2, r4, 2 + ldr r1, [r8+r2]
; gcrRegs +[r1]
- add r0, r5, 8
+ add r0, r6, 8
; byrRegs +[r0] ldr r2, [r0+r2] ; gcrRegs +[r2]
- mov r0, r6
+ mov r0, r5
; gcrRegs +[r0] ; byrRegs -[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this ; gcrRegs -[r0-r2] cmp r0, 0 bne SHORT G_M60484_IG12
- add r10, r10, 1 - ldr r4, [sp+0x04] // [V09 cse0] - cmp r4, r10
+ ldr r4, [sp+0x04] // [V06 loc0] + adds r4, r4, 1 + ldr r3, [sp] // [V09 cse0] + cmp r3, r4
bgt SHORT G_M60484_IG04
- ;; size=46 bbWeight=3.96 PerfScore 67.32 -G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5] - ; byrRegs -[r7]
+ ;; size=50 bbWeight=3.96 PerfScore 75.24 +G_M60484_IG05: ; bbWeight=1.98, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] + ; byrRegs -[r8]
b SHORT G_M60484_IG09
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5 r7] - ldr r4, [sp+0x04] // [V09 cse0]
+ ;; size=2 bbWeight=1.98 PerfScore 1.98 +G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r6 r8] + ldr r3, [sp] // [V09 cse0]
b SHORT G_M60484_IG08 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5 r7]
+G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6 r8]
b SHORT G_M60484_IG09 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG08: ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5 r7] - cmp r10, r4
+G_M60484_IG08: ; bbWeight=0.04, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r6 r8] + cmp r4, r3
bhs SHORT G_M60484_IG14
- add r1, r7, 8
+ add r1, r8, 8
; byrRegs +[r1]
- lsl r2, r10, 2
+ lsls r2, r4, 2
ldr r1, [r1+r2] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r2, [r5+0x04] - cmp r10, r2
+ ldr r2, [r6+0x04] + cmp r4, r2
bhs SHORT G_M60484_IG14
- add r2, r5, 8
+ add r2, r6, 8
; byrRegs +[r2]
- lsl r0, r10, 2
+ str r4, [sp+0x04] // [V06 loc0] + lsls r0, r4, 2
ldr r2, [r2+r0] ; gcrRegs +[r2] ; byrRegs -[r2]
- mov r0, r6
+ mov r0, r5
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r0]
+ ldr r12, [r0]
ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this ; gcrRegs -[r0-r2] cmp r0, 0 bne SHORT G_M60484_IG12
- add r10, r10, 1 - ldr r4, [sp+0x04] // [V09 cse0] - cmp r4, r10
+ ldr r4, [sp+0x04] // [V06 loc0] + adds r4, r4, 1 + ldr lr, [sp] // [V09 cse0] + cmp lr, r4
bgt SHORT G_M60484_IG11
- ;; size=64 bbWeight=0.04 PerfScore 0.96 -G_M60484_IG09: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[r5 r7] - mov r0, r8
+ ;; size=66 bbWeight=0.04 PerfScore 1.04 +G_M60484_IG09: ; bbWeight=1.98, gcrefRegs=04A0 {r5 r7 r10}, byrefRegs=0000 {}, byref + ; gcrRegs -[r6 r8] + mov r0, r7
; gcrRegs +[r0] mov r3, r9
- mov r1, r6
+ mov r1, r5
; gcrRegs +[r1]
- ldr r2, [sp+0x34] // [V05 arg5]
+ mov r2, r10
; gcrRegs +[r2] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr lr, [r4] blx lr // System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this
- ; gcrRegs -[r0-r2 r6 r8] - ldr r0, [sp+0x04] // [V09 cse0] - ;; size=26 bbWeight=0.50 PerfScore 5.00 -G_M60484_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[r0-r2 r5 r7 r10] + ldr r0, [sp] // [V09 cse0] + ;; size=26 bbWeight=1.98 PerfScore 19.80 +G_M60484_IG10: ; bbWeight=1.98, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M60484_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r5-r8] - ldr r4, [sp+0x04] // [V09 cse0]
+ ;; size=6 bbWeight=1.98 PerfScore 3.96 +G_M60484_IG11: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r5-r8 r10] + ldr r3, [sp] // [V09 cse0]
b SHORT G_M60484_IG08 ;; size=4 bbWeight=0.02 PerfScore 0.04 G_M60484_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5-r8] - mov r0, r10
+ ; gcrRegs -[r5-r8 r10] + ldr r0, [sp+0x04] // [V06 loc0]
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M60484_IG13: ; bbWeight=0.50, epilog, nogc, extend add sp, 12 @@ -173,7 +179,7 @@ G_M60484_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 10, PerfScore 94.32, instruction count 89, allocated bytes for code 230 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 242, prolog size 10, PerfScore 122.56, instruction count 94, allocated bytes for code 242 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
; ============================================================ ...

libraries.pmi.linux.arm.checked.mch

-6 (-9.68%) : 3170.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.61) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M34838_IG09
+ blt SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,42 +45,30 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M34838_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bgt SHORT G_M34838_IG06
+ bgt SHORT G_M34838_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- bge SHORT G_M34838_IG11 - ;; size=4 bbWeight=4 PerfScore 8.00 -G_M34838_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r0, r3 - ;; size=2 bbWeight=1.61 PerfScore 1.61 -G_M34838_IG07: ; bbWeight=1.61, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1.61 PerfScore 1.61 -G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0]
+ blt SHORT G_M34838_IG08
subs r3, r3, 1 cmp r3, 0 bge SHORT G_M34838_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00 +G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - cmp r2, lr - ble SHORT G_M34838_IG08 - ;; size=4 bbWeight=0.39 PerfScore 0.77 -G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - b SHORT G_M34838_IG08 - ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.71 PerfScore 0.71 +G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 62, prolog size 6, PerfScore 54.81, instruction count 25, allocated bytes for code 62 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.19, instruction count 22, allocated bytes for code 56 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-8.82%) : 3160.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T07] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T05] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 6, 18.61) int -> lr
+; V04 loc0 [V04,T00] ( 6, 17.71) int -> lr
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> r12 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r4 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> r12 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r12 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 4
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr} add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] mov lr, 0 cmp r3, 0
- ble SHORT G_M35228_IG09
+ ble SHORT G_M35228_IG06
;; size=8 bbWeight=1 PerfScore 3.00 G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl r12, lr, 2 @@ -45,42 +45,30 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M35228_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r4
- bgt SHORT G_M35228_IG06
+ bgt SHORT G_M35228_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, r12
- bge SHORT G_M35228_IG11 - ;; size=4 bbWeight=4 PerfScore 8.00 -G_M35228_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r0, lr - ;; size=2 bbWeight=1.61 PerfScore 1.61 -G_M35228_IG07: ; bbWeight=1.61, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1.61 PerfScore 1.61 -G_M35228_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0]
+ blt SHORT G_M35228_IG08
add lr, lr, 1 cmp lr, r3 blt SHORT G_M35228_IG03
- ;; size=8 bbWeight=4 PerfScore 12.00 -G_M35228_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4 PerfScore 20.00 +G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - cmp r2, r12 - ble SHORT G_M35228_IG08 - ;; size=4 bbWeight=0.39 PerfScore 0.77 -G_M35228_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - b SHORT G_M35228_IG08 - ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M35228_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, lr + ;; size=2 bbWeight=0.71 PerfScore 0.71 +G_M35228_IG09: ; bbWeight=0.71, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 68, prolog size 8, PerfScore 54.81, instruction count 25, allocated bytes for code 68 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 8, PerfScore 52.19, instruction count 22, allocated bytes for code 62 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-34 (-4.34%) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)

@@ -63,7 +63,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r0, 0 ldr r7, [r6+0x04] cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
ldr r0, [r6+0x08] ; gcrRegs +[r0] movw r3, 0xd1ff @@ -109,7 +109,7 @@ G_M10937_IG06: ; bbWeight=0.27, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 G_M10937_IG07: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz subs r0, r4, 1 cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
add r9, r6, 8 ; byrRegs +[r9] lsls r0, r4, 2 @@ -170,7 +170,7 @@ G_M10937_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz movs r0, 1 cmp r0, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
ldr r0, [r6+0x0C] ; gcrRegs +[r0] movw r2, 0xd1ff @@ -178,14 +178,14 @@ G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r ldr r2, [r2] blx r2 // Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String cmp r0, 0
- beq SHORT G_M10937_IG22
+ beq SHORT G_M10937_IG23
movs r3, 2 cmp r4, 2
- ble SHORT G_M10937_IG25
+ ble SHORT G_M10937_IG22
;; size=32 bbWeight=0.50 PerfScore 6.50 G_M10937_IG18: ; bbWeight=0.25, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz cmp r7, r4
- blt SHORT G_M10937_IG24
+ blt SHORT G_M10937_IG21
;; size=4 bbWeight=0.25 PerfScore 0.50 G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz str r3, [sp+0x08] // [V08 loc5] @@ -205,7 +205,7 @@ G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 blx r3 // System.String:IsNullOrWhiteSpace(System.String):ubyte ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M10937_IG21
+ bne SHORT G_M10937_IG23
ldr r0, [sp+0x04] // [V09 loc6] ; gcrRegs +[r0] ldr r3, [sp+0x08] // [V08 loc5] @@ -213,27 +213,13 @@ G_M10937_IG19: ; bbWeight=3.96, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 cmp r3, r4 blt SHORT G_M10937_IG19 ;; size=48 bbWeight=3.96 PerfScore 75.24
-G_M10937_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
+G_M10937_IG20: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
; GC ptr vars -{V09}
- b SHORT G_M10937_IG25 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M10937_IG21: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - ; gcrRegs -[r0] - ldr r3, [sp+0x0C] // [V05 loc2] - b SHORT G_M10937_IG26 - ;; size=4 bbWeight=1.98 PerfScore 3.96 -G_M10937_IG22: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - ldr r3, [sp+0x0C] // [V05 loc2] - b SHORT G_M10937_IG26 - ;; size=4 bbWeight=0.25 PerfScore 0.50 -G_M10937_IG23: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - ldr r3, [sp+0x0C] // [V05 loc2] - b SHORT G_M10937_IG26 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M10937_IG24: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz - ; gcrRegs +[r0]
+ b SHORT G_M10937_IG22 + ;; size=2 bbWeight=1.98 PerfScore 1.98 +G_M10937_IG21: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, byref, isz
cmp r3, r7
- bhs G_M10937_IG46
+ bhs G_M10937_IG42
str r3, [sp+0x08] // [V08 loc5] lsls r1, r3, 2 ldr r1, [r9+r1] @@ -251,43 +237,41 @@ G_M10937_IG24: ; bbWeight=0.04, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 blx r3 // System.String:IsNullOrWhiteSpace(System.String):ubyte ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M10937_IG31
+ bne SHORT G_M10937_IG23
ldr r0, [sp+0x04] // [V09 loc6] ; gcrRegs +[r0] ldr r1, [sp+0x08] // [V08 loc5] adds r1, r1, 1 cmp r1, r4 mov r3, r1
- blt SHORT G_M10937_IG24
+ blt SHORT G_M10937_IG21
;; size=56 bbWeight=0.04 PerfScore 0.88
-G_M10937_IG25: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref
+G_M10937_IG22: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0200 {r9}, gcvars, byref
; GC ptr vars -{V09}
- ldr r3, [r0+0x04] - str r3, [sp+0x0C] // [V05 loc2] - ldr r3, [sp+0x0C] // [V05 loc2] - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M10937_IG26: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+ ldr r1, [r0+0x04] + str r1, [sp+0x0C] // [V05 loc2] + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M10937_IG23: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0] cmp r8, 0
- bne SHORT G_M10937_IG36
+ bne SHORT G_M10937_IG32
;; size=6 bbWeight=1 PerfScore 2.00
-G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - str r3, [sp+0x0C] // [V05 loc2]
+G_M10937_IG24: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
ldr r0, [r6+0x08] ; gcrRegs +[r0] ldrsb r1, [r0] movs r1, 1
- movw r2, 0xd1ff - movt r2, 0xd1ff - ldr r2, [r2] - blx r2 // System.String:TrimWhiteSpaceHelper(int):System.String:this
+ movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.String:TrimWhiteSpaceHelper(int):System.String:this
; gcrRegs -[r6] mov r6, r0 ; gcrRegs +[r6] cmp r10, 0
- bne SHORT G_M10937_IG28
+ bne SHORT G_M10937_IG25
cmp r4, 1
- bne SHORT G_M10937_IG28
+ bne SHORT G_M10937_IG25
mov r0, r6 movw r3, 0xd1ff movt r3, 0xd1ff @@ -296,8 +280,8 @@ G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r ; gcrRegs -[r6] mov r6, r0 ; gcrRegs +[r6]
- ;; size=50 bbWeight=0.50 PerfScore 9.50 -G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=48 bbWeight=0.50 PerfScore 9.00 +G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0] ldrsb r0, [r6] mov r0, r6 @@ -311,31 +295,7 @@ G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M10937_IG34 - mov r0, r6 - ; gcrRegs +[r0] - movw r1, 0xd1ff - movt r1, 0xd1ff - movs r2, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 0 - bne SHORT G_M10937_IG33 - mov r0, r6 - ; gcrRegs +[r0] - movw r1, 0xd1ff - movt r1, 0xd1ff - movs r2, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - cmp r0, 0 - bne SHORT G_M10937_IG32
+ bne SHORT G_M10937_IG30
mov r0, r6 ; gcrRegs +[r0] movw r1, 0xd1ff @@ -348,31 +308,51 @@ G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r ; gcrRegs -[r0] cmp r0, 0 bne SHORT G_M10937_IG29
+ mov r0, r6 + ; gcrRegs +[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + movs r2, 0 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 0 + bne SHORT G_M10937_IG28 + mov r0, r6 + ; gcrRegs +[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + movs r2, 0 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcrRegs -[r0] + cmp r0, 0 + bne SHORT G_M10937_IG26
movs r1, 0
- b SHORT G_M10937_IG30
+ b SHORT G_M10937_IG27
;; size=120 bbWeight=0.50 PerfScore 21.50
-G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
+G_M10937_IG26: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG30: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - b SHORT G_M10937_IG35
+G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz + b SHORT G_M10937_IG31
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10937_IG31: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz - ldr r3, [sp+0x0C] // [V05 loc2] - b SHORT G_M10937_IG26 - ;; size=4 bbWeight=0.02 PerfScore 0.04 -G_M10937_IG32: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+G_M10937_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
movs r1, 2
- b SHORT G_M10937_IG35
+ b SHORT G_M10937_IG31
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG33: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
+G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz
movs r1, 3
- b SHORT G_M10937_IG35
+ b SHORT G_M10937_IG31
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG34: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
+G_M10937_IG30: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref
movs r1, 4 ...

+20 (+5.43%) : 129495.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T05] ( 10, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Xml.XmlWellFormedWriter> ; V01 arg1 [V01,T06] ( 8, 12.27) ref -> r5 class-hnd single-def <System.String> ; V02 loc0 [V02,T00] ( 17, 44.50) int -> r6
-; V03 loc1 [V03,T07] ( 7, 11.47) ref -> r5 class-hnd exact <System.String>
+; V03 loc1 [V03,T07] ( 7, 11.47) ref -> r8 class-hnd exact <System.String>
; V04 loc2 [V04,T15] ( 4, 2.50) ref -> r0 class-hnd <System.String> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T13] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>> @@ -26,7 +26,7 @@ ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp12 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18,T02] ( 7, 32.95) ref -> r7 class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T02] ( 7, 32.95) ref -> r9 class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T12] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V20 tmp15 [V20,T09] ( 2, 8 ) byref -> r0 "impAppendStmt" ;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -35,18 +35,18 @@ ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V26 tmp21 [V26,T03] ( 3, 24 ) ref -> r2 "arr expr"
-; V27 tmp22 [V27,T14] ( 3, 3 ) ref -> r0 "arr expr" -; V28 tmp23 [V28,T04] ( 3, 24 ) ref -> r0 "arr expr"
+; V27 tmp22 [V27,T14] ( 3, 3 ) ref -> r2 "arr expr" +; V28 tmp23 [V28,T04] ( 3, 24 ) ref -> r2 "arr expr"
; V29 PSPSym [V29,T17] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym" ; V30 cse0 [V30,T10] ( 6, 6.41) ref -> r1 multi-def "CSE - aggressive" ; ; Lcl frame size = 16 G_M50074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
sub sp, 16
- add r11, sp, 32 - add r2, sp, 40
+ add r11, sp, 40 + add r2, sp, 48
str r2, [sp+0x0C] // [V29 PSPSym] str r0, [sp+0x04] // [V00 this] ; GC ptr vars +{V00} @@ -57,17 +57,17 @@ G_M50074_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 8.00 G_M50074_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz cmp r5, 0
- beq SHORT G_M50074_IG08
+ beq SHORT G_M50074_IG17
ldr r6, [r4+0x34] cmp r6, 0
- blt SHORT G_M50074_IG13
+ blt SHORT G_M50074_IG21
;; size=10 bbWeight=1 PerfScore 5.00 G_M50074_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r2, [r4+0x14] ; gcrRegs +[r2] ldr r1, [r2+0x04] cmp r6, r1
- bhs SHORT G_M50074_IG09
+ bhs SHORT G_M50074_IG16
lsls r1, r6, 4 adds r1, 8 adds r2, r2, r1 @@ -76,30 +76,99 @@ G_M50074_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r7, [r2+0x04] ; gcrRegs +[r7] cmp r7, r5
- beq SHORT G_M50074_IG14
+ beq SHORT G_M50074_IG08
;; size=20 bbWeight=4 PerfScore 40.00 G_M50074_IG04: ; bbWeight=1.71, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r2] cmp r7, 0
- beq SHORT G_M50074_IG12
+ beq SHORT G_M50074_IG20
;; size=4 bbWeight=1.71 PerfScore 3.41 G_M50074_IG05: ; bbWeight=1.70, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz ldr r2, [r7+0x04] ldr r1, [r5+0x04] cmp r2, r1
- bne SHORT G_M50074_IG12
+ bne SHORT G_M50074_IG20
;; size=8 bbWeight=1.70 PerfScore 6.80 G_M50074_IG06: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz ldr r2, [r7+0x04] ldr r1, [r5+0x04] cmp r2, r1
- beq SHORT G_M50074_IG11
+ beq SHORT G_M50074_IG19
;; size=8 bbWeight=1.07 PerfScore 4.27 G_M50074_IG07: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M50074_IG10
+ b SHORT G_M50074_IG18
;; size=2 bbWeight=1.07 PerfScore 1.07
-G_M50074_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M50074_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5 r7]
+ ldr r2, [r4+0x14] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + cmp r6, r1 + bhs SHORT G_M50074_IG16 + lsls r1, r6, 4 + adds r1, 8 + ldr r8, [r2+r1] + ; gcrRegs +[r8] + adds r6, r6, 1 + ldr r2, [r4+0x34] + ; gcrRegs -[r2] + cmp r6, r2 + bgt SHORT G_M50074_IG25 + ;; size=24 bbWeight=0.50 PerfScore 5.50 +G_M50074_IG09: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4] + ldr r4, [sp+0x04] // [V00 this] + ; gcrRegs +[r4] + ldr r2, [r4+0x14] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + cmp r6, r1 + bhs SHORT G_M50074_IG16 + lsls r1, r6, 4 + adds r1, 8 + ldr r9, [r2+r1] + ; gcrRegs +[r9] + cmp r9, r8 + beq SHORT G_M50074_IG15 + ;; size=22 bbWeight=4 PerfScore 40.00 +G_M50074_IG10: ; bbWeight=1.71, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r2] + cmp r9, 0 + beq SHORT G_M50074_IG24 + ;; size=6 bbWeight=1.71 PerfScore 3.41 +G_M50074_IG11: ; bbWeight=1.70, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz + cmp r8, 0 + beq SHORT G_M50074_IG24 + ;; size=6 bbWeight=1.70 PerfScore 3.40 +G_M50074_IG12: ; bbWeight=1.70, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz + ldr r2, [r9+0x04] + ldr r1, [r8+0x04] + cmp r2, r1 + bne SHORT G_M50074_IG24 + ;; size=12 bbWeight=1.70 PerfScore 6.80 +G_M50074_IG13: ; bbWeight=1.07, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz + ldr r2, [r9+0x04] + ldr r1, [r8+0x04] + cmp r2, r1 + beq SHORT G_M50074_IG23 + ;; size=12 bbWeight=1.07 PerfScore 4.27 +G_M50074_IG14: ; bbWeight=1.07, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz + b SHORT G_M50074_IG22 + ;; size=2 bbWeight=1.07 PerfScore 1.07 +G_M50074_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8-r9] + movs r0, 0 + b SHORT G_M50074_IG27 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M50074_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M50074_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ; gcrRegs +[r4]
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -116,15 +185,8 @@ G_M50074_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcr arg pop 0 bkpt ;; size=36 bbWeight=0 PerfScore 0.00
-G_M50074_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M50074_IG10: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref - ; gcrRegs +[r4-r5 r7]
+G_M50074_IG18: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref + ; gcrRegs +[r5 r7]
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -136,7 +198,7 @@ G_M50074_IG10: ; bbWeight=1.07, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=22 bbWeight=1.07 PerfScore 7.48
-G_M50074_IG11: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG19: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
add r0, r7, 8 ; byrRegs +[r0] ldr r2, [r7+0x04] @@ -151,77 +213,24 @@ G_M50074_IG11: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {} ; byrRegs -[r0-r1] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M50074_IG14
+ bne SHORT G_M50074_IG08
;; size=28 bbWeight=2 PerfScore 20.00
-G_M50074_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG20: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1 cmp r6, 0 bge SHORT G_M50074_IG03 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M50074_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M50074_IG21: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x10] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M50074_IG25
+ bne SHORT G_M50074_IG26
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M50074_IG26
+ b SHORT G_M50074_IG27
;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M50074_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5] - ldr r0, [r4+0x14] - ; gcrRegs +[r0] - ldr r1, [r0+0x04] - cmp r6, r1 - bhs SHORT G_M50074_IG09 - lsls r1, r6, 4 - adds r1, 8 - ldr r5, [r0+r1] - ; gcrRegs +[r5] - adds r6, r6, 1 - ldr r0, [r4+0x34] - ; gcrRegs -[r0] - cmp r6, r0 - bgt SHORT G_M50074_IG23 - ;; size=22 bbWeight=0.50 PerfScore 5.50 -G_M50074_IG15: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - ldr r4, [sp+0x04] // [V00 this] - ; gcrRegs +[r4] - ldr r0, [r4+0x14] - ; gcrRegs +[r0] - ldr r1, [r0+0x04] - cmp r6, r1 - bhs SHORT G_M50074_IG09 - lsls r1, r6, 4 - adds r1, 8 - ldr r7, [r0+r1]
...

+6 (+9.68%) : 3156.dasm - System.SpanHelpers:IndexOfAnyInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T05] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T08] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T08] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T03] ( 4, 7 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 6, 19 ) int -> lr
+; V04 loc0 [V04,T00] ( 6, 17.50) int -> lr
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r12 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r4 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T04] ( 2, 8 ) int -> r12 "Inlining Arg"
+; V10 tmp4 [V10,T04] ( 3, 8.77) int -> r12 "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> r12 "CSE - aggressive" ; ; Lcl frame size = 4
-G_M23107_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M23107_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr} add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M23107_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] mov lr, 0 cmp r3, 0
- ble SHORT G_M23107_IG08
+ ble SHORT G_M23107_IG09
;; size=8 bbWeight=1 PerfScore 3.00 G_M23107_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl r12, lr, 2 @@ -45,32 +45,41 @@ G_M23107_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M23107_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r4
- bgt SHORT G_M23107_IG07
+ bgt SHORT G_M23107_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M23107_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, r12
- blt SHORT G_M23107_IG07 - mov r0, lr
+ blt SHORT G_M23107_IG08 + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M23107_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00 -G_M23107_IG06: ; bbWeight=2, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M23107_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, r12 + ble SHORT G_M23107_IG11 + ;; size=4 bbWeight=0.39 PerfScore 0.77 +G_M23107_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M23107_IG11 + ;; size=2 bbWeight=0.04 PerfScore 0.04 +G_M23107_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0] add lr, lr, 1 cmp lr, r3 blt SHORT G_M23107_IG03 ;; size=8 bbWeight=4 PerfScore 12.00
-G_M23107_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23107_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M23107_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M23107_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M23107_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, lr + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M23107_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 62, prolog size 8, PerfScore 50.77, instruction count 22, allocated bytes for code 62 (MethodHash=a163a5bc) for method System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 48.58, instruction count 25, allocated bytes for code 68 (MethodHash=a163a5bc) for method System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -82,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+10.71%) : 3166.dasm - System.SpanHelpers:LastIndexOfAnyInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.77) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M37321_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M37321_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M37321_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M37321_IG08
+ blt SHORT G_M37321_IG09
;; size=6 bbWeight=1 PerfScore 3.00 G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,32 +45,41 @@ G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M37321_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bgt SHORT G_M37321_IG07
+ bgt SHORT G_M37321_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M37321_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- blt SHORT G_M37321_IG07 - mov r0, r3
+ blt SHORT G_M37321_IG08 + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M37321_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00 -G_M37321_IG06: ; bbWeight=2, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M37321_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr + ble SHORT G_M37321_IG11 + ;; size=4 bbWeight=0.39 PerfScore 0.77 +G_M37321_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M37321_IG11 + ;; size=2 bbWeight=0.04 PerfScore 0.04 +G_M37321_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0 bge SHORT G_M37321_IG03 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37321_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37321_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37321_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M37321_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M37321_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M37321_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.77, instruction count 22, allocated bytes for code 56 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 48.58, instruction count 25, allocated bytes for code 62 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -82,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm.Release.mch

-24 (-4.46%) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -9,16 +9,16 @@ ; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 8, 5.07) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> -; V01 arg1 [V01,T03] ( 8, 8.95) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T04] ( 8, 5.07) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> +; V01 arg1 [V01,T06] ( 8, 4.67) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.36) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T07] ( 5, 6.81) int -> r7 -; V04 loc2 [V04,T10] ( 9, 6.24) int -> r8 -; V05 loc3 [V05,T05] ( 6, 7.93) int -> r9 -; V06 loc4 [V06,T08] ( 9, 6.49) ref -> r10 class-hnd <System.__Canon> -;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T05] ( 5, 6.81) int -> r7 +; V04 loc2 [V04,T09] ( 9, 6.24) int -> r8 +; V05 loc3 [V05,T11] ( 6, 3.66) int -> r9 +; V06 loc4 [V06,T07] ( 9, 6.49) ref -> r10 class-hnd <System.__Canon> +;* V07 loc5 [V07,T17] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 21.27) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 22.55) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 18.28) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.38) int -> [sp+0x0C] ; V11 loc9 [V11 ] ( 3, 0.57) ref -> [sp+0x08] 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,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+;* V18 tmp6 [V18,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
; V19 tmp7 [V19,T19] ( 4, 0.53) int -> r3 "Inline return value spill temp"
-; V20 tmp8 [V20,T15] ( 3, 0.83) int -> r3 "Inlining Arg"
+; V20 tmp8 [V20,T14] ( 3, 0.83) int -> r3 "Inlining Arg"
; V21 tmp9 [V21,T21] ( 3, 0.38) int -> r2 "Inline return value spill temp"
-; V22 tmp10 [V22,T16] ( 3, 0.83) int -> r2 "Inlining Arg"
+; V22 tmp10 [V22,T15] ( 3, 0.83) 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.76) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.12) int -> registers multi-def "CSE - moderate" -; V27 cse1 [V27,T04] ( 3, 8.28) ref -> r1 "CSE - aggressive" -; V28 rat0 [V28,T14] ( 3, 0.83) int -> r0 "Spilling to split statement for tree" -; V29 rat1 [V29,T17] ( 3, 0.76) int -> r0 "runtime lookup" -; V30 rat2 [V30,T13] ( 3, 1.06) int -> r2 "fgMakeTemp is creating a new local variable"
+; V26 cse0 [V26,T10] ( 6, 5.12) int -> r0 multi-def "CSE - moderate" +; V27 cse1 [V27,T03] ( 3, 8.28) ref -> r1 "CSE - aggressive" +; V28 rat0 [V28,T13] ( 3, 0.83) int -> r0 "Spilling to split statement for tree" +; V29 rat1 [V29,T16] ( 3, 0.76) int -> r0 "runtime lookup" +; V30 rat2 [V30,T12] ( 3, 1.06) int -> r2 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 28 @@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r2, 0 str r2, [sp+0x08] // [V11 loc9] str r0, [r11-0x24]
- mov r5, r0 - ; gcrRegs +[r5] - mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1 + ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00 G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6] cmp r6, 0 beq SHORT G_M8298_IG09 @@ -65,139 +65,135 @@ G_M8298_IG03: ; bbWeight=0.72, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 ldr r7, [r6+0x04] mov r8, 0 mov r9, 0
- ldr r0, [r4+0x04] - cmp r0, 0
+ ldr r1, [r5+0x04] + cmp r1, 0
ble G_M8298_IG23 ;; size=18 bbWeight=0.72 PerfScore 4.34 G_M8298_IG04: ; bbWeight=0.72, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8 - ; byrRegs +[r0] - lsl r1, r9, 2 - ldr r10, [r0+r1]
+ add r1, r5, 8 + ; byrRegs +[r1] + lsl r0, r9, 2 + ldr r10, [r1+r0]
; gcrRegs +[r10]
- movs r3, 0
+ movs r2, 0
cmp r7, 0 ble SHORT G_M8298_IG17 ;; size=18 bbWeight=0.72 PerfScore 4.34 G_M8298_IG05: ; bbWeight=0.36, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r0]
+ ; byrRegs -[r1]
cmp r6, 0 beq SHORT G_M8298_IG14 cmp r10, 0 beq SHORT G_M8298_IG14
- ldr r0, [r10] - movw lr, 0xd1ff - movt lr, 0xd1ff - cmp r0, lr
+ ldr r1, [r10] + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0
bne SHORT G_M8298_IG14
- ldr r0, [r6+0x04] - cmp r0, r7
+ ldr r1, [r6+0x04] + cmp r1, r7
blt SHORT G_M8298_IG14 ;; size=32 bbWeight=0.36 PerfScore 4.34 G_M8298_IG06: ; bbWeight=4.76, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- add r0, r6, 8 - ; byrRegs +[r0] - lsls r1, r3, 2 - ldr r12, [r0+r1] - ; gcrRegs +[r12] - cmp r12, 0
+ add r1, r6, 8 + ; byrRegs +[r1] + lsls r3, r2, 2 + ldr r3, [r1+r3] + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M8298_IG17
- ;; size=16 bbWeight=4.76 PerfScore 23.81 -G_M8298_IG07: ; bbWeight=4.27, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r0] - ldr r0, [r12] - cmp r0, lr
+ ;; size=12 bbWeight=4.76 PerfScore 23.81 +G_M8298_IG07: ; bbWeight=4.27, gcrefRegs=0478 {r3 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r1] + ldr r1, [r3] + cmp r1, r0
bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28] - ldr r1, [r10+0x28] - cmp r0, r1 - beq SHORT G_M8298_IG11 - ;; size=20 bbWeight=4.27 PerfScore 29.87 -G_M8298_IG08: ; bbWeight=4.95, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12] - b SHORT G_M8298_IG12 - ;; size=2 bbWeight=4.95 PerfScore 4.95
+ ldr r1, [r3+0x28] + ldr lr, [r10+0x28] + cmp r1, lr + bne SHORT G_M8298_IG12 + ;; size=16 bbWeight=4.27 PerfScore 29.87 +G_M8298_IG08: ; bbWeight=0.03, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r10] + b SHORT G_M8298_IG11 + ;; size=2 bbWeight=0.03 PerfScore 0.03
G_M8298_IG09: ; bbWeight=0.28, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10] - adds r0, r5, 4
+ ; gcrRegs -[r3 r6] + adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] ;; size=14 bbWeight=0.28 PerfScore 1.38 G_M8298_IG10: ; bbWeight=0.28, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.28 PerfScore 0.55
-G_M8298_IG11: ; bbWeight=4.31, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4 r6 r12] - mov r0, r4
+G_M8298_IG11: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r3 r5-r6] + mov r0, r5
; gcrRegs +[r0] mov r1, r9
- mov r2, r12
+ mov r2, r3
; gcrRegs +[r2] movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff blx r3 // CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r0 r2]
; gcr arg pop 0 b SHORT G_M8298_IG22
- ;; size=18 bbWeight=4.31 PerfScore 30.17
+ ;; size=18 bbWeight=0.03 PerfScore 0.24
G_M8298_IG12: ; bbWeight=4.95, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r10]
- adds r3, r3, 1 - cmp r3, r7
+ adds r2, r2, 1 + cmp r2, r7
blt SHORT G_M8298_IG06 ;; size=6 bbWeight=4.95 PerfScore 14.85
-G_M8298_IG13: ; bbWeight=0.36, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.19, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG17
- ;; size=2 bbWeight=0.36 PerfScore 0.36
+ ;; size=2 bbWeight=0.19 PerfScore 0.19
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04] - cmp r3, r12
+ ldr r3, [r6+0x04] + cmp r2, r3
bhs G_M8298_IG36
- add lr, r6, 8 - ; byrRegs +[lr] - lsls r0, r3, 2 - ldr r12, [lr+r0] - ; gcrRegs +[r12] - mov lr, r12 - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0
+ add r0, r6, 8 + ; byrRegs +[r0] + lsls r1, r2, 2 + ldr r3, [r0+r1] + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M8298_IG17
- ;; size=28 bbWeight=0.05 PerfScore 0.43 -G_M8298_IG15: ; bbWeight=0.04, gcrefRegs=4470 {r4 r5 r6 r10 lr}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12] - ldr r0, [r10] - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1 - bne G_M8298_IG37 - ldr r0, [lr] - cmp r0, r1
+ ;; size=20 bbWeight=0.05 PerfScore 0.38 +G_M8298_IG15: ; bbWeight=0.04, gcrefRegs=0478 {r3 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
...

-20 (-3.70%) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -9,16 +9,16 @@ ; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 8, 4.95) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> -; V01 arg1 [V01,T03] ( 8, 9.21) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T05] ( 8, 4.95) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 8, 4.74) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.31) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 7.05) int -> r7 -; V04 loc2 [V04,T10] ( 9, 5.79) int -> r8 -; V05 loc3 [V05,T04] ( 6, 8.26) int -> r9 -; V06 loc4 [V06,T09] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon> -;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T04] ( 5, 7.05) int -> r7 +; V04 loc2 [V04,T09] ( 9, 5.79) int -> r8 +; V05 loc3 [V05,T11] ( 6, 3.79) int -> r9 +; V06 loc4 [V06,T08] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon> +;* V07 loc5 [V07,T13] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 22.10) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 23.84) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 19.37) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.32) int -> [sp+0x0C] ; V11 loc9 [V11 ] ( 3, 0.47) ref -> [sp+0x08] 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,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V19 tmp7 [V19,T19] ( 4, 0.44) int -> r2 "Inline return value spill temp" -; V20 tmp8 [V20,T15] ( 3, 0.69) int -> r2 "Inlining Arg" -; V21 tmp9 [V21,T21] ( 3, 0.32) int -> lr "Inline return value spill temp" -; V22 tmp10 [V22,T16] ( 3, 0.69) int -> lr "Inlining Arg"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V19 tmp7 [V19,T19] ( 4, 0.44) int -> lr "Inline return value spill temp" +; V20 tmp8 [V20,T15] ( 3, 0.69) int -> lr "Inlining Arg" +; V21 tmp9 [V21,T21] ( 3, 0.32) int -> registers "Inline return value spill temp" +; V22 tmp10 [V22,T16] ( 3, 0.69) int -> r12 "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.63) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.41) int -> registers multi-def "CSE - moderate" -; V27 cse1 [V27,T05] ( 3, 7.58) ref -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T10] ( 6, 5.41) int -> r1 multi-def "CSE - moderate" +; V27 cse1 [V27,T03] ( 3, 7.58) ref -> r1 "CSE - aggressive"
; V28 rat0 [V28,T14] ( 3, 0.69) int -> r0 "Spilling to split statement for tree" ; V29 rat1 [V29,T17] ( 3, 0.63) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
+; V30 rat2 [V30,T12] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 28 @@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r2, 0 str r2, [sp+0x08] // [V11 loc9] str r0, [r11-0x24]
- mov r5, r0 - ; gcrRegs +[r5] - mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1 + ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00 G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6] cmp r6, 0 beq SHORT G_M8298_IG09 @@ -65,12 +65,12 @@ G_M8298_IG03: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 ldr r7, [r6+0x04] mov r8, 0 mov r9, 0
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
cmp r0, 0
- ble G_M8298_IG21 - ;; size=18 bbWeight=0.74 PerfScore 4.42
+ ble SHORT G_M8298_IG21 + ;; size=16 bbWeight=0.74 PerfScore 4.42
G_M8298_IG04: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8
+ add r0, r5, 8
; byrRegs +[r0] lsl r1, r9, 2 ldr r10, [r0+r1] @@ -86,9 +86,9 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 cmp r10, 0 beq SHORT G_M8298_IG14 ldr r0, [r10]
- movw lr, 0xd1ff - movt lr, 0xd1ff - cmp r0, lr
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
bne SHORT G_M8298_IG14 ldr r0, [r6+0x04] cmp r0, r7 @@ -97,82 +97,78 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 G_M8298_IG06: ; bbWeight=5.00, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz add r0, r6, 8 ; byrRegs +[r0]
- lsls r1, r3, 2 - ldr r12, [r0+r1] - ; gcrRegs +[r12] - cmp r12, 0
+ lsls r2, r3, 2 + ldr r2, [r0+r2] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M8298_IG15
- ;; size=16 bbWeight=5.00 PerfScore 25.01 -G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.00 PerfScore 25.01 +G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [r2] + cmp r0, r1 + bne SHORT G_M8298_IG12 + ldr r0, [r2+0x28] + ldr lr, [r10+0x28]
cmp r0, lr bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28] - ldr r1, [r10+0x28] - cmp r0, r1 - beq SHORT G_M8298_IG11 - ;; size=20 bbWeight=4.53 PerfScore 31.73 -G_M8298_IG08: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12] - b SHORT G_M8298_IG12 - ;; size=2 bbWeight=5.16 PerfScore 5.16
+ ;; size=16 bbWeight=4.53 PerfScore 31.73 +G_M8298_IG08: ; bbWeight=0.11, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r10] + b SHORT G_M8298_IG11 + ;; size=2 bbWeight=0.11 PerfScore 0.11
G_M8298_IG09: ; bbWeight=0.26, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10] - adds r0, r5, 4
+ ; gcrRegs -[r2 r6] + adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] ;; size=14 bbWeight=0.26 PerfScore 1.32 G_M8298_IG10: ; bbWeight=0.26, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.26 PerfScore 0.53
-G_M8298_IG11: ; bbWeight=4.58, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4 r6 r12] - mov r0, r4
+G_M8298_IG11: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r2 r5-r6] + mov r0, r5
; 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 b SHORT G_M8298_IG20
- ;; size=18 bbWeight=4.58 PerfScore 32.05
+ ;; size=16 bbWeight=0.11 PerfScore 0.63
G_M8298_IG12: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r10] adds r3, r3, 1 cmp r3, r7 blt SHORT G_M8298_IG06 ;; size=6 bbWeight=5.16 PerfScore 15.48
-G_M8298_IG13: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG15
- ;; size=2 bbWeight=0.37 PerfScore 0.37
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04] - cmp r3, r12 - bhs G_M8298_IG37 - add lr, r6, 8 - ; byrRegs +[lr]
+ ldr r2, [r6+0x04] + cmp r3, r2 + bhs G_M8298_IG36 + add r1, r6, 8 + ; byrRegs +[r1]
lsls r0, r3, 2
- ldr r12, [lr+r0] - ; gcrRegs +[r12] - mov lr, r12 - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0 - bne SHORT G_M8298_IG33 - ;; size=28 bbWeight=0.05 PerfScore 0.45
+ ldr r2, [r1+r0] + ; gcrRegs +[r2] + cmp r2, 0 + bne SHORT G_M8298_IG28 + ;; size=20 bbWeight=0.05 PerfScore 0.40
G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12 lr]
+ ; gcrRegs -[r2] + ; byrRegs -[r1]
cmp r8, 0 bne SHORT G_M8298_IG16 mov r8, r3 @@ -180,12 +176,12 @@ G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 G_M8298_IG16: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x04] cmp r0, r8
- ble SHORT G_M8298_IG25
+ ble SHORT G_M8298_IG23
;; size=6 bbWeight=0.63 PerfScore 1.89 G_M8298_IG17: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x04] cmp r8, r0
- bhs SHORT G_M8298_IG37
+ bhs SHORT G_M8298_IG36
add r0, r6, 8 ; byrRegs +[r0] lsl r1, r8, 2 @@ -209,7 +205,7 @@ G_M8298_IG18: ; bbWeight=2.53, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 ; gcr arg pop 0 ;; size=22 bbWeight=2.53 PerfScore 17.68 G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref
- ldr r2, [r5]
+ ldr r2, [r4]
ldr r2, [r2+0x24] ldr r2, [r2] ldr r2, [r2] @@ -234,13 +230,13 @@ G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 ;; size=40 bbWeight=0.63 PerfScore 9.47 G_M8298_IG20: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ...

-20 (-3.70%) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)

@@ -9,16 +9,16 @@ ; 5 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 8, 4.95) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> -; V01 arg1 [V01,T03] ( 8, 9.21) ref -> r4 class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T05] ( 8, 4.95) ref -> r4 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> +; V01 arg1 [V01,T07] ( 8, 4.74) ref -> r5 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 12.31) ref -> r6 class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 7.05) int -> r7 -; V04 loc2 [V04,T10] ( 9, 5.79) int -> r8 -; V05 loc3 [V05,T04] ( 6, 8.26) int -> r9 -; V06 loc4 [V06,T09] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon> -;* V07 loc5 [V07,T12] ( 0, 0 ) ubyte -> zero-ref
+; V03 loc1 [V03,T04] ( 5, 7.05) int -> r7 +; V04 loc2 [V04,T09] ( 9, 5.79) int -> r8 +; V05 loc3 [V05,T11] ( 6, 3.79) int -> r9 +; V06 loc4 [V06,T08] ( 9, 6.73) ref -> r10 class-hnd <System.__Canon> +;* V07 loc5 [V07,T13] ( 0, 0 ) ubyte -> zero-ref
; V08 loc6 [V08,T01] ( 11, 22.10) int -> [sp+0x10]
-; V09 loc7 [V09,T00] ( 10, 23.84) ref -> [sp+0x04] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 19.37) ref -> [sp+0x04] class-hnd <System.__Canon>
; V10 loc8 [V10,T20] ( 3, 0.32) int -> [sp+0x0C] ; V11 loc9 [V11 ] ( 3, 0.47) ref -> [sp+0x08] 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,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V19 tmp7 [V19,T19] ( 4, 0.44) int -> r2 "Inline return value spill temp" -; V20 tmp8 [V20,T15] ( 3, 0.69) int -> r2 "Inlining Arg" -; V21 tmp9 [V21,T21] ( 3, 0.32) int -> lr "Inline return value spill temp" -; V22 tmp10 [V22,T16] ( 3, 0.69) int -> lr "Inlining Arg"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V19 tmp7 [V19,T19] ( 4, 0.44) int -> lr "Inline return value spill temp" +; V20 tmp8 [V20,T15] ( 3, 0.69) int -> lr "Inlining Arg" +; V21 tmp9 [V21,T21] ( 3, 0.32) int -> registers "Inline return value spill temp" +; V22 tmp10 [V22,T16] ( 3, 0.69) int -> r12 "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.63) int -> r0 "argument with side effect"
-; V26 cse0 [V26,T11] ( 6, 5.41) int -> registers multi-def "CSE - moderate" -; V27 cse1 [V27,T05] ( 3, 7.58) ref -> r1 "CSE - aggressive"
+; V26 cse0 [V26,T10] ( 6, 5.41) int -> r1 multi-def "CSE - moderate" +; V27 cse1 [V27,T03] ( 3, 7.58) ref -> r1 "CSE - aggressive"
; V28 rat0 [V28,T14] ( 3, 0.69) int -> r0 "Spilling to split statement for tree" ; V29 rat1 [V29,T17] ( 3, 0.63) int -> r0 "runtime lookup"
-; V30 rat2 [V30,T13] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
+; V30 rat2 [V30,T12] ( 3, 0.88) int -> r3 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 28 @@ -50,13 +50,13 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r2, 0 str r2, [sp+0x08] // [V11 loc9] str r0, [r11-0x24]
- mov r5, r0 - ; gcrRegs +[r5] - mov r4, r1
+ mov r4, r0
; gcrRegs +[r4]
+ mov r5, r1 + ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 8.00 G_M8298_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
+ ldr r6, [r4+0x04]
; gcrRegs +[r6] cmp r6, 0 beq SHORT G_M8298_IG09 @@ -65,12 +65,12 @@ G_M8298_IG03: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 ldr r7, [r6+0x04] mov r8, 0 mov r9, 0
- ldr r0, [r4+0x04]
+ ldr r0, [r5+0x04]
cmp r0, 0
- ble G_M8298_IG21 - ;; size=18 bbWeight=0.74 PerfScore 4.42
+ ble SHORT G_M8298_IG21 + ;; size=16 bbWeight=0.74 PerfScore 4.42
G_M8298_IG04: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- add r0, r4, 8
+ add r0, r5, 8
; byrRegs +[r0] lsl r1, r9, 2 ldr r10, [r0+r1] @@ -86,9 +86,9 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 cmp r10, 0 beq SHORT G_M8298_IG14 ldr r0, [r10]
- movw lr, 0xd1ff - movt lr, 0xd1ff - cmp r0, lr
+ movw r1, 0xd1ff + movt r1, 0xd1ff + cmp r0, r1
bne SHORT G_M8298_IG14 ldr r0, [r6+0x04] cmp r0, r7 @@ -97,82 +97,78 @@ G_M8298_IG05: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 G_M8298_IG06: ; bbWeight=5.00, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz add r0, r6, 8 ; byrRegs +[r0]
- lsls r1, r3, 2 - ldr r12, [r0+r1] - ; gcrRegs +[r12] - cmp r12, 0
+ lsls r2, r3, 2 + ldr r2, [r0+r2] + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M8298_IG15
- ;; size=16 bbWeight=5.00 PerfScore 25.01 -G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=1470 {r4 r5 r6 r10 r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.00 PerfScore 25.01 +G_M8298_IG07: ; bbWeight=4.53, gcrefRegs=0474 {r2 r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [r2] + cmp r0, r1 + bne SHORT G_M8298_IG12 + ldr r0, [r2+0x28] + ldr lr, [r10+0x28]
cmp r0, lr bne SHORT G_M8298_IG12
- ldr r0, [r12+0x28] - ldr r1, [r10+0x28] - cmp r0, r1 - beq SHORT G_M8298_IG11 - ;; size=20 bbWeight=4.53 PerfScore 31.73 -G_M8298_IG08: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12] - b SHORT G_M8298_IG12 - ;; size=2 bbWeight=5.16 PerfScore 5.16
+ ;; size=16 bbWeight=4.53 PerfScore 31.73 +G_M8298_IG08: ; bbWeight=0.11, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r10] + b SHORT G_M8298_IG11 + ;; size=2 bbWeight=0.11 PerfScore 0.11
G_M8298_IG09: ; bbWeight=0.26, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6 r10] - adds r0, r5, 4
+ ; gcrRegs -[r2 r6] + adds r0, r4, 4
; byrRegs +[r0]
- mov r1, r4
+ mov r1, r5
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r5]
; byrRegs -[r0] ;; size=14 bbWeight=0.26 PerfScore 1.32 G_M8298_IG10: ; bbWeight=0.26, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.26 PerfScore 0.53
-G_M8298_IG11: ; bbWeight=4.58, gcVars=00000000 {}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4 r6 r12] - mov r0, r4
+G_M8298_IG11: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0074 {r2 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r2 r5-r6] + mov r0, r5
; 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 b SHORT G_M8298_IG20
- ;; size=18 bbWeight=4.58 PerfScore 32.05
+ ;; size=16 bbWeight=0.11 PerfScore 0.63
G_M8298_IG12: ; bbWeight=5.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r10] adds r3, r3, 1 cmp r3, r7 blt SHORT G_M8298_IG06 ;; size=6 bbWeight=5.16 PerfScore 15.48
-G_M8298_IG13: ; bbWeight=0.37, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.16, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
b SHORT G_M8298_IG15
- ;; size=2 bbWeight=0.37 PerfScore 0.37
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M8298_IG14: ; bbWeight=0.05, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ldr r12, [r6+0x04] - cmp r3, r12 - bhs G_M8298_IG37 - add lr, r6, 8 - ; byrRegs +[lr]
+ ldr r2, [r6+0x04] + cmp r3, r2 + bhs G_M8298_IG36 + add r1, r6, 8 + ; byrRegs +[r1]
lsls r0, r3, 2
- ldr r12, [lr+r0] - ; gcrRegs +[r12] - mov lr, r12 - ; gcrRegs +[lr] - ; byrRegs -[lr] - cmp lr, 0 - bne SHORT G_M8298_IG33 - ;; size=28 bbWeight=0.05 PerfScore 0.45
+ ldr r2, [r1+r0] + ; gcrRegs +[r2] + cmp r2, 0 + bne SHORT G_M8298_IG28 + ;; size=20 bbWeight=0.05 PerfScore 0.40
G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12 lr]
+ ; gcrRegs -[r2] + ; byrRegs -[r1]
cmp r8, 0 bne SHORT G_M8298_IG16 mov r8, r3 @@ -180,12 +176,12 @@ G_M8298_IG15: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 G_M8298_IG16: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x04] cmp r0, r8
- ble SHORT G_M8298_IG25
+ ble SHORT G_M8298_IG23
;; size=6 bbWeight=0.63 PerfScore 1.89 G_M8298_IG17: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz ldr r0, [r6+0x04] cmp r8, r0
- bhs SHORT G_M8298_IG37
+ bhs SHORT G_M8298_IG36
add r0, r6, 8 ; byrRegs +[r0] lsl r1, r8, 2 @@ -209,7 +205,7 @@ G_M8298_IG18: ; bbWeight=2.53, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 ; gcr arg pop 0 ;; size=22 bbWeight=2.53 PerfScore 17.68 G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref
- ldr r2, [r5]
+ ldr r2, [r4]
ldr r2, [r2+0x24] ldr r2, [r2] ldr r2, [r2] @@ -234,13 +230,13 @@ G_M8298_IG19: ; bbWeight=0.63, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0 ;; size=40 bbWeight=0.63 PerfScore 9.47 G_M8298_IG20: ; bbWeight=0.74, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ...

+4 (+3.51%) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)

@@ -9,8 +9,8 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 4.70) int -> r4 single-def -; V01 arg1 [V01,T02] ( 5, 4 ) ref -> r5 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.76) int -> r4 single-def +; V01 arg1 [V01,T02] ( 5, 4.07) ref -> r5 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.29) int -> r6 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -54,41 +54,44 @@ G_M49425_IG05: ; bbWeight=1, epilog, nogc, extend G_M49425_IG06: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] cmp r6, 0
- beq SHORT G_M49425_IG08
+ beq SHORT G_M49425_IG07
ldr r6, [r6+0x14] cmp r6, r4
- beq SHORT G_M49425_IG04 - ;; size=10 bbWeight=0.20 PerfScore 0.99 -G_M49425_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - cmp r6, 0 - beq SHORT G_M49425_IG08 - ldr r6, [r6+0x14] - cmp r6, r4 - beq SHORT G_M49425_IG04 - cmp r6, 0 - beq SHORT G_M49425_IG08 - ldr r6, [r6+0x14] - cmp r6, r4 - beq SHORT G_M49425_IG04 - cmp r6, 0 - bne SHORT G_M49425_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M49425_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bne SHORT G_M49425_IG09 + b SHORT G_M49425_IG04 + ;; size=12 bbWeight=0.20 PerfScore 1.18 +G_M49425_IG07: ; bbWeight=0.07, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r4 mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=14 bbWeight=0 PerfScore 0.00 -G_M49425_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0.07 PerfScore 0.33 +G_M49425_IG08: ; bbWeight=0.07, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.07 PerfScore 0.20 +G_M49425_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r1] + cmp r6, 0 + beq SHORT G_M49425_IG07 + ldr r6, [r6+0x14] + cmp r6, r4 + beq SHORT G_M49425_IG04 + cmp r6, 0 + beq SHORT G_M49425_IG07 + ldr r6, [r6+0x14] + cmp r6, r4 + beq SHORT G_M49425_IG04 + cmp r6, 0 + bne SHORT G_M49425_IG03 + b SHORT G_M49425_IG07 + ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 12, PerfScore 22.49, instruction count 45, allocated bytes for code 114 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 118, prolog size 12, PerfScore 23.21, instruction count 47, allocated bytes for code 118 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -100,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+3.51%) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)

@@ -9,8 +9,8 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 4.85) int -> r4 single-def -; V01 arg1 [V01,T02] ( 5, 4 ) ref -> r5 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.88) int -> r4 single-def +; V01 arg1 [V01,T02] ( 5, 4.03) ref -> r5 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.90) int -> r6 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -54,41 +54,44 @@ G_M49425_IG05: ; bbWeight=1, epilog, nogc, extend G_M49425_IG06: ; bbWeight=0.35, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] cmp r6, 0
- beq SHORT G_M49425_IG08
+ beq SHORT G_M49425_IG07
ldr r6, [r6+0x14] cmp r6, r4
- beq SHORT G_M49425_IG04 - ;; size=10 bbWeight=0.35 PerfScore 1.74 -G_M49425_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - cmp r6, 0 - beq SHORT G_M49425_IG08 - ldr r6, [r6+0x14] - cmp r6, r4 - beq SHORT G_M49425_IG04 - cmp r6, 0 - beq SHORT G_M49425_IG08 - ldr r6, [r6+0x14] - cmp r6, r4 - beq SHORT G_M49425_IG04 - cmp r6, 0 - bne SHORT G_M49425_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M49425_IG08: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bne SHORT G_M49425_IG09 + b SHORT G_M49425_IG04 + ;; size=12 bbWeight=0.35 PerfScore 2.09 +G_M49425_IG07: ; bbWeight=0.03, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r4 mov r1, r5 ; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=14 bbWeight=0 PerfScore 0.00 -G_M49425_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0.03 PerfScore 0.17 +G_M49425_IG08: ; bbWeight=0.03, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.03 PerfScore 0.10 +G_M49425_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r1] + cmp r6, 0 + beq SHORT G_M49425_IG07 + ldr r6, [r6+0x14] + cmp r6, r4 + beq SHORT G_M49425_IG04 + cmp r6, 0 + beq SHORT G_M49425_IG07 + ldr r6, [r6+0x14] + cmp r6, r4 + beq SHORT G_M49425_IG04 + cmp r6, 0 + bne SHORT G_M49425_IG03 + b SHORT G_M49425_IG07 + ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 12, PerfScore 23.24, instruction count 45, allocated bytes for code 114 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 118, prolog size 12, PerfScore 23.87, instruction count 47, allocated bytes for code 118 (MethodHash=6bc83eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -100,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+4.30%) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)

@@ -11,44 +11,44 @@ ; ; V00 this [V00,T00] ( 9, 5.27) ref -> r5 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> ; V01 arg1 [V01,T01] ( 5, 3.45) ref -> r6 ld-addr-op class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T17] ( 5, 1.09) byref -> [sp+0x04] spill-single-def -; V03 loc1 [V03,T06] ( 3, 2 ) byref -> r0
+; V02 loc0 [V02,T17] ( 6, 1.09) byref -> r9 +; V03 loc1 [V03,T07] ( 3, 2 ) byref -> r0
; V04 loc2 [V04,T11] ( 4, 1.36) ref -> r7 class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc7 [V09,T16] ( 3, 1.27) int -> r8
-; V10 loc8 [V10,T02] ( 6, 2.91) int -> r3 -; V11 loc9 [V11,T09] ( 3, 1.64) ref -> r9 class-hnd exact single-def <<unknown class>> -; V12 loc10 [V12,T10] ( 4, 1.55) int -> r10
+; V10 loc8 [V10,T02] ( 7, 2.91) int -> r9 +; V11 loc9 [V11,T09] ( 3, 1.64) ref -> r10 class-hnd exact single-def <<unknown class>> +; V12 loc10 [V12,T10] ( 7, 1.55) int -> [sp+0x10]
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V15 tmp2 [V15,T03] ( 4, 2.73) int -> r4 "VirtualCall with runtime lookup" ;* V16 tmp3 [V16 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V17 tmp4 [V17,T18] ( 4, 0 ) int -> [sp+0x18] "VirtualCall with runtime lookup"
+; V17 tmp4 [V17,T18] ( 4, 0 ) int -> [sp+0x0C] "VirtualCall with runtime lookup"
;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp6 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp" ; V22 tmp9 [V22,T12] ( 3, 1.36) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V23 tmp10 [V23,T04] ( 3, 2.73) int -> r0 "index expr"
-; V24 cse0 [V24,T07] ( 3, 2.00) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V24 cse0 [V24,T06] ( 4, 2.00) int -> [sp+0x08] spill-single-def "CSE - aggressive"
; V25 cse1 [V25,T13] ( 3, 1.36) int -> r9 "CSE - conservative" ; V26 rat0 [V26,T08] ( 3, 2 ) int -> r0 "Spilling to split statement for tree" ; V27 rat1 [V27,T05] ( 3, 2.55) int -> r4 "fgMakeTemp is creating a new local variable" ; V28 rat2 [V28,T19] ( 3, 0 ) int -> r0 "Spilling to split statement for tree" ; V29 rat3 [V29,T20] ( 3, 0 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; V30 rat4 [V30 ] ( 1, 0.91) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V30 rat4 [V30 ] ( 1, 0.91) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V31 rat5 [V31,T14] ( 2, 1.36) int -> r0 "field V30.lo (fldOffset=0x0)" P-INDEP ; V32 rat6 [V32,T15] ( 2, 1.36) int -> r1 "field V30.hi (fldOffset=0x4)" P-INDEP ;
-; Lcl frame size = 36
+; Lcl frame size = 28
G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 36 - add r11, sp, 64
+ sub sp, 28 + add r11, sp, 56
str r0, [r11-0x24] mov r5, r0 ; gcrRegs +[r5] @@ -57,24 +57,56 @@ G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=18 bbWeight=1 PerfScore 6.00 G_M63194_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz cmp r6, 0
- beq G_M63194_IG21
+ beq SHORT G_M63194_IG17
ldr r0, [r5+0x04] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M63194_IG12 - ;; size=12 bbWeight=1 PerfScore 5.00 -G_M63194_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0 r6] - movs r0, 0 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M63194_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, epilog, nogc - ; byrRegs +[r0] - add sp, 36 - pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M63194_IG05: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r6-r7] - ; byrRegs -[r0]
+ beq SHORT G_M63194_IG12 + ;; size=10 bbWeight=1 PerfScore 5.00 +G_M63194_IG03: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + ldr r0, [r5+0x08] + ; gcrRegs +[r0] + cmp r0, 0 + bne SHORT G_M63194_IG04 + movw r0, 0xd1ff + ; gcrRegs -[r0] + movt r0, 0xd1ff + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=34 bbWeight=0.45 PerfScore 5.00 +G_M63194_IG04: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz + ldr r7, [r5+0x0C] + ; gcrRegs +[r7] + cmp r7, 0 + bne SHORT G_M63194_IG05 + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + ;; size=34 bbWeight=0.45 PerfScore 5.00 +G_M63194_IG05: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5] + ldr r1, [r0+0x24] + ldr r1, [r1] + ldr r4, [r1+0x1C] + cmp r4, 0 + beq SHORT G_M63194_IG07 + ;; size=12 bbWeight=0.45 PerfScore 2.73 +G_M63194_IG06: ; bbWeight=0.36, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M63194_IG08 + ;; size=2 bbWeight=0.36 PerfScore 0.36 +G_M63194_IG07: ; bbWeight=0.09, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff movt r1, 0xd1ff movw r3, 0xd1ff @@ -83,7 +115,7 @@ G_M63194_IG05: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6 ; gcr arg pop 0 mov r4, r0 ;; size=20 bbWeight=0.09 PerfScore 0.55
-G_M63194_IG06: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7 ; gcrRegs +[r0] mov r1, r6 @@ -105,161 +137,75 @@ G_M63194_IG06: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx lr // CORINFO_HELP_ULMOD ; gcr arg pop 0 tst r0, r0
- bmi SHORT G_M63194_IG07
+ bmi SHORT G_M63194_IG09
tst r1, r1
- bne SHORT G_M63194_IG19 - b SHORT G_M63194_IG08
+ bne SHORT G_M63194_IG15 + b SHORT G_M63194_IG10
;; size=44 bbWeight=0.45 PerfScore 8.64
-G_M63194_IG07: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG09: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r1, -1
- bne SHORT G_M63194_IG19
+ bne SHORT G_M63194_IG15
;; size=6 bbWeight=0.45 PerfScore 0.91
-G_M63194_IG08: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG10: ; bbWeight=0.45, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, r9
- bhs SHORT G_M63194_IG20
+ bhs SHORT G_M63194_IG16
add r3, r4, 8 ; byrRegs +[r3] lsls r0, r0, 2
- ldr r3, [r3+r0] - ; byrRegs -[r3] - ldr r9, [r5+0x08] - ; gcrRegs +[r9] - mov r10, 0 - subs r3, r3, 1 - ;; size=22 bbWeight=0.45 PerfScore 3.64 -G_M63194_IG09: ; bbWeight=0.82, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [r3+r0] + ldr r10, [r5+0x08] + ; gcrRegs +[r10] + movs r4, 0
; gcrRegs -[r4]
- ldr r4, [r9+0x04] - str r4, [sp+0x14] - cmp r4, r3 - bls SHORT G_M63194_IG03
+ add r9, r9, -1 + ;; size=24 bbWeight=0.45 PerfScore 3.64 +G_M63194_IG11: ; bbWeight=0.82, gcrefRegs=04E0 {r5 r6 r7 r10}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r3] + ldr r3, [r10+0x04] + str r3, [sp+0x08] + cmp r3, r9 + bhi SHORT G_M63194_IG14
;; size=10 bbWeight=0.82 PerfScore 3.27
-G_M63194_IG10: ; bbWeight=0.36, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz - lsls r3, r3, 4 - add r0, r3, 8 - add r3, r9, r0 - ; byrRegs +[r3] - str r3, [sp+0x04] - ; GC ptr vars +{V02} - ldr r0, [r3+0x08] - cmp r0, r8 - beq SHORT G_M63194_IG22 - ;; size=18 bbWeight=0.36 PerfScore 2.55 -G_M63194_IG11: ; bbWeight=0.36, gcVars=00020000 {V02}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0008 {r3}, gcvars, byref, isz - ldr r3, [r3+0x0C] - ; byrRegs -[r3] - add r10, r10, 1 - cmp r4, r10 - blo SHORT G_M63194_IG18 - b SHORT G_M63194_IG09 - ;; size=12 bbWeight=0.36 PerfScore 1.82 -G_M63194_IG12: ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r7 r9] - ; GC ptr vars -{V02} - ldr r0, [r5+0x08] - ; gcrRegs +[r0] - cmp r0, 0 - bne SHORT G_M63194_IG13 - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=34 bbWeight=0.45 PerfScore 5.00 -G_M63194_IG13: ; bbWeight=0.45, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - ldr r7, [r5+0x0C] - ; gcrRegs +[r7] - cmp r7, 0 - bne SHORT G_M63194_IG14 - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=34 bbWeight=0.45 PerfScore 5.00 -G_M63194_IG14: ; bbWeight=0.45, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ldr r0, [r5] - ldr r1, [r0+0x24] - ldr r1, [r1] - ldr r4, [r1+0x1C] - cmp r4, 0 - beq SHORT G_M63194_IG05 - ;; size=12 bbWeight=0.45 PerfScore 2.73 -G_M63194_IG15: ; bbWeight=0.36, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-14 (-12.73%) : 143677.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeulong:int (FullOpts)

@@ -10,9 +10,9 @@ ; ; V00 arg0 [V00,T10] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01 ] ( 6, 10.20) long -> [sp+0x00] ld-addr-op single-def
-; V02 arg2 [V02 ] ( 4, 8.20) long -> [sp+0x18] ld-addr-op single-def
+; V02 arg2 [V02 ] ( 3, 12 ) long -> [sp+0x18] ld-addr-op single-def
; V03 arg3 [V03,T16] ( 1, 1 ) int -> [sp+0x20] single-def
-; V04 loc0 [V04,T01] ( 7, 19.90) int -> r3
+; V04 loc0 [V04,T01] ( 7, 18.74) int -> r3
; V05 loc1 [V05,T11] ( 2, 8 ) byref -> r2 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T14] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -22,19 +22,19 @@ ;* V11 cse0 [V11 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V12 rat0 [V12,T04] ( 4, 6.10) int -> [sp+0x00] do-not-enreg[] "field V01.lo (fldOffset=0x0)" P-DEP ; V13 rat1 [V13,T05] ( 4, 6.10) int -> [sp+0x04] do-not-enreg[] "field V01.hi (fldOffset=0x4)" P-DEP
-; V14 rat2 [V14,T12] ( 2, 4.10) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP -; V15 rat3 [V15,T13] ( 2, 4.10) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
+; V14 rat2 [V14,T12] ( 2, 8 ) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP +; V15 rat3 [V15,T13] ( 1, 4 ) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
; V16 rat4 [V16,T06] ( 3, 8.10) int -> lr "field V08.lo (fldOffset=0x0)" P-INDEP ; V17 rat5 [V17,T07] ( 3, 8.10) int -> r12 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat6 [V18,T08] ( 3, 8.10) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP -; V19 rat7 [V19,T09] ( 3, 8.10) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat6 [V18,T08] ( 3, 12 ) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP +; V19 rat7 [V19,T09] ( 2, 8 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
; V20 rat8 [V20,T02] ( 3, 12 ) int -> r1 "field V11.lo (fldOffset=0x0)" P-INDEP ; V21 rat9 [V21,T03] ( 3, 12 ) int -> r2 "field V11.hi (fldOffset=0x4)" P-INDEP ; V22 rat10 [V22,T00] ( 3, 24 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 8
-G_M18970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18970_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r2,r3,r4,r5,r11,lr} add r11, sp, 16 str r2, [sp] // [V01 arg1] @@ -45,7 +45,7 @@ G_M18970_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ldr r3, [sp+0x20] // [V03 arg3] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M18970_IG09
+ blt SHORT G_M18970_IG06
;; size=8 bbWeight=1 PerfScore 4.00 G_M18970_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsls r2, r3, 3 @@ -67,48 +67,35 @@ G_M18970_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b ldr r5, [sp+0x04] // [V13 rat1] cmp lr, r4 sbcs lr, r12, r5
- blo SHORT G_M18970_IG06
+ blo SHORT G_M18970_IG08
;; size=12 bbWeight=0.10 PerfScore 0.49 G_M18970_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz ldr lr, [sp+0x18] // [V14 rat2] cmp lr, r1 ldr lr, [sp+0x1C] // [V15 rat3]
- sbcs lr, lr, r2 - bhs SHORT G_M18970_IG11 - ;; size=16 bbWeight=4 PerfScore 20.00 -G_M18970_IG06: ; bbWeight=1.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r0, r3 - ;; size=2 bbWeight=1.90 PerfScore 1.90 -G_M18970_IG07: ; bbWeight=1.90, epilog, nogc, extend - pop {r2,r3,r4,r5,r11,pc} - ;; size=4 bbWeight=1.90 PerfScore 1.90 -G_M18970_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0]
+ sbcs r2, lr, r2 + blo SHORT G_M18970_IG08 + ldr r2, [sp+0x18] // [V14 rat2] + cmp r1, r2
subs r3, r3, 1 cmp r3, 0 bge SHORT G_M18970_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M18970_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=4 PerfScore 40.00 +G_M18970_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18970_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M18970_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18970_IG11: ; bbWeight=0.10, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - ldr lr, [sp+0x18] // [V14 rat2] - ldr r12, [sp+0x1C] // [V15 rat3] - cmp r1, lr - sbcs r2, r2, r12 - bhs SHORT G_M18970_IG08 - ;; size=16 bbWeight=0.10 PerfScore 0.49 -G_M18970_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - b SHORT G_M18970_IG08 - ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M18970_IG08: ; bbWeight=0.74, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.74 PerfScore 0.74 +G_M18970_IG09: ; bbWeight=0.74, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.74 PerfScore 0.74
-; Total bytes of code 110, prolog size 12, PerfScore 89.83, instruction count 42, allocated bytes for code 110 (MethodHash=9cb9b5e5) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 94.98, instruction count 38, allocated bytes for code 96 (MethodHash=9cb9b5e5) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +107,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-9.68%) : 145301.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeuint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.44) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.44) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.56) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.73) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.88) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.88) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M63363_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M63363_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M63363_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M63363_IG09
+ blt SHORT G_M63363_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M63363_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,42 +45,30 @@ G_M63363_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M63363_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bhi SHORT G_M63363_IG06
+ bhi SHORT G_M63363_IG08
;; size=4 bbWeight=0.44 PerfScore 0.88 G_M63363_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- bhs SHORT G_M63363_IG11 - ;; size=4 bbWeight=4 PerfScore 8.00 -G_M63363_IG06: ; bbWeight=1.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r0, r3 - ;; size=2 bbWeight=1.56 PerfScore 1.56 -G_M63363_IG07: ; bbWeight=1.56, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1.56 PerfScore 1.56 -G_M63363_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0]
+ blo SHORT G_M63363_IG08
subs r3, r3, 1 cmp r3, 0 bge SHORT G_M63363_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M63363_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00 +G_M63363_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M63363_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M63363_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M63363_IG11: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - cmp r2, lr - bls SHORT G_M63363_IG08 - ;; size=4 bbWeight=0.44 PerfScore 0.88 -G_M63363_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - b SHORT G_M63363_IG08 - ;; size=2 bbWeight=0.32 PerfScore 0.32
+G_M63363_IG08: ; bbWeight=0.73, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.73 PerfScore 0.73 +G_M63363_IG09: ; bbWeight=0.73, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 62, prolog size 6, PerfScore 55.20, instruction count 25, allocated bytes for code 62 (MethodHash=fa4a087c) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.35, instruction count 22, allocated bytes for code 56 (MethodHash=fa4a087c) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-9.68%) : 142735.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T06] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.39) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.61) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> r3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> lr "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M34838_IG09
+ blt SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,42 +45,30 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M34838_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bgt SHORT G_M34838_IG06
+ bgt SHORT G_M34838_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- bge SHORT G_M34838_IG11 - ;; size=4 bbWeight=4 PerfScore 8.00 -G_M34838_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r0, r3 - ;; size=2 bbWeight=1.61 PerfScore 1.61 -G_M34838_IG07: ; bbWeight=1.61, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1.61 PerfScore 1.61 -G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0]
+ blt SHORT G_M34838_IG08
subs r3, r3, 1 cmp r3, 0 bge SHORT G_M34838_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=4 PerfScore 20.00 +G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG11: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - cmp r2, lr - ble SHORT G_M34838_IG08 - ;; size=4 bbWeight=0.39 PerfScore 0.77 -G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz - b SHORT G_M34838_IG08 - ;; size=2 bbWeight=0.04 PerfScore 0.04
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.71 PerfScore 0.71 +G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.71 PerfScore 0.71
-; Total bytes of code 62, prolog size 6, PerfScore 54.81, instruction count 25, allocated bytes for code 62 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 52.19, instruction count 22, allocated bytes for code 56 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+10.71%) : 145297.dasm - System.SpanHelpers:LastIndexOfAnyInRangeuint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.44) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.44) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.88) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.88) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M13244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M13244_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M13244_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M13244_IG08
+ blt SHORT G_M13244_IG09
;; size=6 bbWeight=1 PerfScore 3.00 G_M13244_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,32 +45,41 @@ G_M13244_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M13244_IG04: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bhi SHORT G_M13244_IG07
+ bhi SHORT G_M13244_IG08
;; size=4 bbWeight=0.44 PerfScore 0.88 G_M13244_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- blo SHORT G_M13244_IG07 - mov r0, r3
+ blo SHORT G_M13244_IG08 + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M13244_IG06: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00 -G_M13244_IG06: ; bbWeight=2, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M13244_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr + bls SHORT G_M13244_IG11 + ;; size=4 bbWeight=0.44 PerfScore 0.88 +G_M13244_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M13244_IG11 + ;; size=2 bbWeight=0.32 PerfScore 0.32 +G_M13244_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0 bge SHORT G_M13244_IG03 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M13244_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13244_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M13244_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M13244_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M13244_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M13244_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.88, instruction count 22, allocated bytes for code 56 (MethodHash=7756cc43) for method System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 49.08, instruction count 25, allocated bytes for code 62 (MethodHash=7756cc43) for method System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -82,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+10.71%) : 142731.dasm - System.SpanHelpers:LastIndexOfAnyInRangeint:int (FullOpts)

@@ -10,20 +10,20 @@ ; ; V00 arg0 [V00,T05] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01,T04] ( 4, 6.39) int -> r1 ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 3, 4 ) int -> r2 ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 4, 4.39) int -> r2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T00] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> lr ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r12 "Inlining Arg" ;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T03] ( 2, 8 ) int -> lr "Inlining Arg"
+; V10 tmp4 [V10,T03] ( 3, 8.77) int -> lr "Inlining Arg"
; V11 cse0 [V11,T02] ( 3, 10 ) int -> lr "CSE - aggressive" ; ; Lcl frame size = 0
-G_M37321_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M37321_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr} mov r11, sp ;; size=6 bbWeight=1 PerfScore 2.00 @@ -31,7 +31,7 @@ G_M37321_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M37321_IG08
+ blt SHORT G_M37321_IG09
;; size=6 bbWeight=1 PerfScore 3.00 G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsl lr, r3, 2 @@ -45,32 +45,41 @@ G_M37321_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ;; size=16 bbWeight=4 PerfScore 24.00 G_M37321_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r1, r12
- bgt SHORT G_M37321_IG07
+ bgt SHORT G_M37321_IG08
;; size=4 bbWeight=0.39 PerfScore 0.77 G_M37321_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r2, lr
- blt SHORT G_M37321_IG07 - mov r0, r3
+ blt SHORT G_M37321_IG08 + ;; size=4 bbWeight=2 PerfScore 4.00 +G_M37321_IG06: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ;; size=6 bbWeight=2 PerfScore 6.00 -G_M37321_IG06: ; bbWeight=2, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M37321_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ cmp r2, lr + ble SHORT G_M37321_IG11 + ;; size=4 bbWeight=0.39 PerfScore 0.77 +G_M37321_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M37321_IG11 + ;; size=2 bbWeight=0.04 PerfScore 0.04 +G_M37321_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0 bge SHORT G_M37321_IG03 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37321_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37321_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M37321_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M37321_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M37321_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M37321_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 56, prolog size 6, PerfScore 50.77, instruction count 22, allocated bytes for code 56 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 48.58, instruction count 25, allocated bytes for code 62 (MethodHash=fbeb6e36) for method System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -82,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+12.50%) : 143672.dasm - System.SpanHelpers:LastIndexOfAnyInRangeulong:int (FullOpts)

@@ -10,9 +10,9 @@ ; ; V00 arg0 [V00,T08] ( 3, 6 ) byref -> r0 single-def ; V01 arg1 [V01 ] ( 6, 10.20) long -> [sp+0x00] ld-addr-op single-def
-; V02 arg2 [V02 ] ( 3, 6 ) long -> [sp+0x18] ld-addr-op single-def
+; V02 arg2 [V02 ] ( 4, 4.20) long -> [sp+0x18] ld-addr-op single-def
; V03 arg3 [V03,T16] ( 1, 1 ) int -> [sp+0x20] single-def
-; V04 loc0 [V04,T01] ( 7, 20 ) int -> r3
+; V04 loc0 [V04,T01] ( 7, 18.50) int -> r3
; V05 loc1 [V05,T09] ( 2, 8 ) byref -> r2 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -22,19 +22,19 @@ ;* V11 cse0 [V11 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive" ; V12 rat0 [V12,T04] ( 4, 6.10) int -> [sp+0x00] do-not-enreg[] "field V01.lo (fldOffset=0x0)" P-DEP ; V13 rat1 [V13,T05] ( 4, 6.10) int -> [sp+0x04] do-not-enreg[] "field V01.hi (fldOffset=0x4)" P-DEP
-; V14 rat2 [V14,T14] ( 2, 4 ) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP -; V15 rat3 [V15,T15] ( 1, 2 ) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
+; V14 rat2 [V14,T14] ( 2, 2.10) int -> [sp+0x18] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP +; V15 rat3 [V15,T15] ( 2, 2.10) int -> [sp+0x1C] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP
; V16 rat4 [V16,T06] ( 3, 8.10) int -> lr "field V08.lo (fldOffset=0x0)" P-INDEP ; V17 rat5 [V17,T07] ( 3, 8.10) int -> r12 "field V08.hi (fldOffset=0x4)" P-INDEP
-; V18 rat6 [V18,T10] ( 3, 6 ) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP -; V19 rat7 [V19,T11] ( 2, 4 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
+; V18 rat6 [V18,T10] ( 3, 4.10) int -> r1 "field V10.lo (fldOffset=0x0)" P-INDEP +; V19 rat7 [V19,T11] ( 3, 4.10) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP
; V20 rat8 [V20,T02] ( 3, 10 ) int -> r1 "field V11.lo (fldOffset=0x0)" P-INDEP ; V21 rat9 [V21,T03] ( 3, 10 ) int -> r2 "field V11.hi (fldOffset=0x4)" P-INDEP ; V22 rat10 [V22,T00] ( 3, 24 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 8
-G_M42181_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M42181_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r2,r3,r4,r5,r11,lr} add r11, sp, 16 str r2, [sp] // [V01 arg1] @@ -45,7 +45,7 @@ G_M42181_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ldr r3, [sp+0x20] // [V03 arg3] subs r3, r3, 1 cmp r3, 0
- blt SHORT G_M42181_IG08
+ blt SHORT G_M42181_IG09
;; size=8 bbWeight=1 PerfScore 4.00 G_M42181_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz lsls r2, r3, 3 @@ -67,37 +67,47 @@ G_M42181_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b ldr r5, [sp+0x04] // [V13 rat1] cmp lr, r4 sbcs lr, r12, r5
- blo SHORT G_M42181_IG07
+ blo SHORT G_M42181_IG08
;; size=12 bbWeight=0.10 PerfScore 0.49 G_M42181_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz ldr lr, [sp+0x18] // [V14 rat2] cmp lr, r1 ldr lr, [sp+0x1C] // [V15 rat3]
- sbcs r2, lr, r2 - blo SHORT G_M42181_IG07 - ldr r0, [sp+0x18] // [V14 rat2]
+ sbcs lr, lr, r2 + blo SHORT G_M42181_IG08 + ;; size=16 bbWeight=2 PerfScore 10.00 +G_M42181_IG06: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
+ ldr r0, [sp+0x18] // [V14 rat2] + ldr lr, [sp+0x1C] // [V15 rat3]
cmp r1, r0
- mov r0, r3 - ;; size=22 bbWeight=2 PerfScore 16.00 -G_M42181_IG06: ; bbWeight=2, epilog, nogc, extend - pop {r2,r3,r4,r5,r11,pc} - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M42181_IG07: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
+ sbcs r0, r2, lr + bhs SHORT G_M42181_IG11 + ;; size=14 bbWeight=0.10 PerfScore 0.49 +G_M42181_IG07: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M42181_IG11 + ;; size=2 bbWeight=0.04 PerfScore 0.04 +G_M42181_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0] subs r3, r3, 1 cmp r3, 0 bge SHORT G_M42181_IG03 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M42181_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42181_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0] mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M42181_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M42181_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M42181_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov r0, r3 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M42181_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 12, PerfScore 83.49, instruction count 38, allocated bytes for code 96 (MethodHash=69cf5b3a) for method System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 77.03, instruction count 42, allocated bytes for code 108 (MethodHash=69cf5b3a) for method System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -109,7 +119,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.linux.arm.checked.mch

-24 (-2.80%) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,18 +8,18 @@ ; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T38] ( 5, 5 ) int -> r7 single-def -; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def +; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T51] ( 0, 0 ) int -> zero-ref single-def -; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10 -; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28] -; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7 -; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def +; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10 +; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20] +; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7 +; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> @@ -27,53 +27,53 @@ ;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg" -; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg" +; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg" -; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" -; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg" +; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg" -; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg" +; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg" -; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg" +; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg" -; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg" -; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg" +; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg" +; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg" -; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg" +; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -89,15 +89,15 @@ ;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg" -; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg" +; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -107,15 +107,15 @@ ;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg" -; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg" +; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" -; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> -; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP -; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP -; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" +; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> +; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP +; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP +; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP ;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -134,8 +134,8 @@ ;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP -; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP +; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP ;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP @@ -144,8 +144,8 @@ ;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP -; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP +; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP ;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP ;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP @@ -154,13 +154,13 @@ ;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP ;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP -; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP +; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP ;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP ;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP ;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP ;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP @@ -174,13 +174,13 @@ ;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP ;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP -; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP +; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP ;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP ;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP ;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP ;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP ;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP @@ -194,27 +194,26 @@ ;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP ;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP ;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate" -; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate" -; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative" +; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M39392_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r4, r0 ; gcrRegs +[r4] ;; size=14 bbWeight=1 PerfScore 5.00 G_M39392_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34] cmp r7, r6
- bhi G_M39392_IG38
+ bhi G_M39392_IG36
lsls r0, r7, 1 add r8, r5, r0 ; byrRegs +[r8] @@ -233,7 +232,7 @@ G_M39392_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, ldr r3, [r3] blx r3 // <unknown method> cmp r7, 0
- bne G_M39392_IG35
+ bne G_M39392_IG33
;; size=18 bbWeight=1 PerfScore 6.00 G_M39392_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz movs r1, 10 @@ -252,7 +251,7 @@ G_M39392_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r ;; size=26 bbWeight=0.50 PerfScore 5.50 G_M39392_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz cmp r7, r9
- bhi G_M39392_IG38
...

-24 (-2.80%) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,18 +8,18 @@ ; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T38] ( 5, 5 ) int -> r7 single-def -; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def +; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T51] ( 0, 0 ) int -> zero-ref single-def -; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10 -; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28] -; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7 -; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def +; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10 +; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20] +; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7 +; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> @@ -27,53 +27,53 @@ ;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg" -; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg" +; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg" -; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" -; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg" +; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg" -; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg" +; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg" -; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg" +; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg" -; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg" -; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg" +; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg" +; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg" -; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg" +; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -89,15 +89,15 @@ ;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg" -; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg" +; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -107,15 +107,15 @@ ;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg" -; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg" +; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" -; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> -; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP -; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP -; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" +; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> +; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP +; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP +; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP ;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -134,8 +134,8 @@ ;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP -; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP +; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP ;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP @@ -144,8 +144,8 @@ ;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP -; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP +; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP ;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP ;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP @@ -154,13 +154,13 @@ ;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP ;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP -; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP +; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP ;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP ;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP ;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP ;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP @@ -174,13 +174,13 @@ ;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP ;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP -; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP +; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP ;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP ;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP ;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP ;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP ;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP @@ -194,27 +194,26 @@ ;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP ;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP ;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate" -; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate" -; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative" +; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M55662_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r4, r0 ; gcrRegs +[r4] ;; size=14 bbWeight=1 PerfScore 5.00 G_M55662_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34] cmp r7, r6
- bhi G_M55662_IG38
+ bhi G_M55662_IG36
lsls r0, r7, 1 add r8, r5, r0 ; byrRegs +[r8] @@ -233,7 +232,7 @@ G_M55662_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, ldr r3, [r3] blx r3 // <unknown method> cmp r7, 0
- bne G_M55662_IG35
+ bne G_M55662_IG33
;; size=18 bbWeight=1 PerfScore 6.00 G_M55662_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz movs r1, 10 @@ -252,7 +251,7 @@ G_M55662_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r ;; size=26 bbWeight=0.50 PerfScore 5.50 G_M55662_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz cmp r7, r9
- bhi G_M55662_IG38
...

-24 (-2.80%) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,18 +8,18 @@ ; 0 inlinees with PGO data; 35 single block inlinees; 21 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T27] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> -; V01 arg1 [V01,T37] ( 4, 4 ) struct ( 8) [sp+0x58] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T16] ( 10, 6.50) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner> +; V01 arg1 [V01,T27] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T38] ( 5, 5 ) int -> r7 single-def -; V04 loc2 [V04,T04] ( 25, 61.50) int -> [sp+0x2C]
+; V03 loc1 [V03,T29] ( 5, 5 ) int -> r7 single-def +; V04 loc2 [V04,T00] ( 25, 33.50) int -> [sp+0x24]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T51] ( 0, 0 ) int -> zero-ref single-def -; V08 loc6 [V08,T13] ( 8, 28.50) int -> r10 -; V09 loc7 [V09,T12] ( 14, 29.50) int -> [sp+0x28] -; V10 loc8 [V10,T07] ( 5, 42 ) int -> r7 -; V11 loc9 [V11,T02] ( 8, 74 ) int -> [sp+0x24]
+;* V07 loc5 [V07,T50] ( 0, 0 ) int -> zero-ref single-def +; V08 loc6 [V08,T02] ( 8, 28.50) int -> r10 +; V09 loc7 [V09,T24] ( 14, 7 ) int -> [sp+0x20] +; V10 loc8 [V10,T15] ( 6, 9 ) int -> r7 +; V11 loc9 [V11,T10] ( 8, 14.50) int -> [sp+0x1C]
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> @@ -27,53 +27,53 @@ ;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp6 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp7 [V19,T28] ( 6, 8 ) int -> r9 "Inlining Arg" -; V20 tmp8 [V20,T41] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
+; V19 tmp7 [V19,T17] ( 6, 8 ) int -> r9 "Inlining Arg" +; V20 tmp8 [V20,T32] ( 3, 4 ) byref -> r8 single-def "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V22 tmp10 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V23 tmp11 [V23,T50] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V23 tmp11 [V23,T48] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V28 tmp16 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V29 tmp17 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp18 [V30,T45] ( 3, 3 ) int -> r9 "Inlining Arg" -; V31 tmp19 [V31,T47] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" -; V32 tmp20 [V32,T08] ( 4, 32 ) int -> r10 "Inlining Arg"
+; V30 tmp18 [V30,T39] ( 3, 3 ) int -> r9 "Inlining Arg" +; V31 tmp19 [V31,T42] ( 2, 2 ) byref -> r8 single-def "Inlining Arg" +; V32 tmp20 [V32,T01] ( 4, 32 ) int -> r10 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp22 [V34,T22] ( 2, 16 ) byref -> r7 "Inlining Arg"
+; V34 tmp22 [V34,T08] ( 2, 16 ) byref -> r7 "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V36 tmp24 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V37 tmp25 [V37,T35] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V37 tmp25 [V37,T23] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp27 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V40 tmp28 [V40 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp31 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp32 [V44,T17] ( 3, 24 ) int -> r9 "Inlining Arg" -; V45 tmp33 [V45,T23] ( 2, 16 ) byref -> r8 "Inlining Arg"
+; V44 tmp32 [V44,T05] ( 3, 24 ) int -> r9 "Inlining Arg" +; V45 tmp33 [V45,T09] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp35 [V47,T06] ( 6, 44 ) int -> [sp+0x20] spill-single-def "Inlining Arg" -; V48 tmp36 [V48,T14] ( 3, 24 ) byref -> r8 "Inlining Arg"
+; V47 tmp35 [V47,T26] ( 6, 6 ) int -> [sp+0x18] spill-single-def "Inlining Arg" +; V48 tmp36 [V48,T36] ( 3, 3 ) byref -> r8 "Inlining Arg"
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V50 tmp38 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp39 [V51,T36] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V51 tmp39 [V51,T49] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp41 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V54 tmp42 [V54 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V56 tmp44 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V57 tmp45 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T18] ( 3, 24 ) int -> [sp+0x1C] spill-single-def "Inlining Arg" -; V59 tmp47 [V59,T24] ( 2, 16 ) byref -> r8 "Inlining Arg" -; V60 tmp48 [V60,T09] ( 3, 32 ) int -> r0 "Inline return value spill temp"
+; V58 tmp46 [V58,T40] ( 3, 3 ) int -> [sp+0x14] spill-single-def "Inlining Arg" +; V59 tmp47 [V59,T43] ( 2, 2 ) byref -> r8 "Inlining Arg" +; V60 tmp48 [V60,T28] ( 3, 6 ) int -> r0 "Inline return value spill temp"
;* V61 tmp49 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp50 [V62,T01] ( 3, 80 ) int -> r0 "Inlining Arg" -; V63 tmp51 [V63,T00] ( 4,128 ) int -> r8 "Inlining Arg"
+; V62 tmp50 [V62,T12] ( 3, 12 ) int -> r0 "Inlining Arg" +; V63 tmp51 [V63,T07] ( 4, 16 ) int -> r8 "Inlining Arg"
;* V64 tmp52 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp53 [V65,T03] ( 2, 64 ) byref -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V65 tmp53 [V65,T18] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp55 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V68 tmp56 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -89,15 +89,15 @@ ;* V78 tmp66 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V79 tmp67 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V80 tmp68 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp69 [V81,T25] ( 3, 12 ) int -> [sp+0x18] spill-single-def "Inlining Arg" -; V82 tmp70 [V82,T29] ( 2, 8 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V81 tmp69 [V81,T13] ( 3, 12 ) int -> [sp+0x10] spill-single-def "Inlining Arg" +; V82 tmp70 [V82,T19] ( 2, 8 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V83 tmp71 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V84 tmp72 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V85 tmp73 [V85 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V86 tmp74 [V86 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V87 tmp75 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V88 tmp76 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V89 tmp77 [V89,T26] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
+; V89 tmp77 [V89,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V90 tmp78 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V91 tmp79 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V92 tmp80 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> @@ -107,15 +107,15 @@ ;* V96 tmp84 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp85 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp86 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp87 [V99,T40] ( 4, 4 ) int -> r6 "Inlining Arg" -; V100 tmp88 [V100,T39] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V99 tmp87 [V99,T31] ( 4, 4 ) int -> r6 "Inlining Arg" +; V100 tmp88 [V100,T30] ( 5, 5 ) int -> r5 "Inlining Arg"
;* V101 tmp89 [V101 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V102 tmp90 [V102,T46] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" -; V103 tmp91 [V103,T44] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> -; V104 tmp92 [V104,T21] ( 6, 16 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V105 tmp93 [V105,T05] ( 12, 51 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP -; V106 tmp94 [V106,T20] ( 7, 22.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP -; V107 tmp95 [V107,T11] ( 10, 31 ) int -> [sp+0x14] "field V05._length (fldOffset=0x4)" P-INDEP
+; V102 tmp90 [V102,T41] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" +; V103 tmp91 [V103,T37] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>> +; V104 tmp92 [V104,T11] ( 6, 12.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V105 tmp93 [V105,T04] ( 13, 26 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP +; V106 tmp94 [V106,T06] ( 7, 19 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP +; V107 tmp95 [V107,T03] ( 10, 27.50) int -> [sp+0x0C] "field V05._length (fldOffset=0x4)" P-INDEP
;* V108 tmp96 [V108 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V109 tmp97 [V109 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP ;* V110 tmp98 [V110 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -134,8 +134,8 @@ ;* V123 tmp111 [V123 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V124 tmp112 [V124 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V125 tmp113 [V125 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V126 tmp114 [V126,T48] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP -; V127 tmp115 [V127,T49] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
+; V126 tmp114 [V126,T44] ( 2, 1 ) byref -> r8 single-def "field V29._reference (fldOffset=0x0)" P-INDEP +; V127 tmp115 [V127,T46] ( 2, 1 ) int -> r9 single-def "field V29._length (fldOffset=0x4)" P-INDEP
;* V128 tmp116 [V128 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V129 tmp117 [V129 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP ;* V130 tmp118 [V130 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP @@ -144,8 +144,8 @@ ;* V133 tmp121 [V133 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V134 tmp122 [V134 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp123 [V135 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V136 tmp124 [V136,T30] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP -; V137 tmp125 [V137,T33] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
+; V136 tmp124 [V136,T20] ( 2, 8 ) byref -> r8 "field V43._reference (fldOffset=0x0)" P-INDEP +; V137 tmp125 [V137,T22] ( 2, 8 ) int -> r9 "field V43._length (fldOffset=0x4)" P-INDEP
;* V138 tmp126 [V138 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP ;* V139 tmp127 [V139 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP ;* V140 tmp128 [V140 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP @@ -154,13 +154,13 @@ ;* V143 tmp131 [V143 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP ;* V144 tmp132 [V144 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V145 tmp133 [V145 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP
-; V146 tmp134 [V146,T31] ( 2, 8 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP -; V147 tmp135 [V147,T34] ( 2, 8 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
+; V146 tmp134 [V146,T45] ( 2, 1 ) byref -> r8 "field V57._reference (fldOffset=0x0)" P-INDEP +; V147 tmp135 [V147,T47] ( 2, 1 ) int -> r0 "field V57._length (fldOffset=0x4)" P-INDEP
;* V148 tmp136 [V148 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP ;* V149 tmp137 [V149 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP ;* V150 tmp138 [V150 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp139 [V151 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x4)" P-INDEP
-; V152 tmp140 [V152,T10] ( 2, 32 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp140 [V152,T33] ( 2, 4 ) byref -> r2 "field V67._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp141 [V153 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x4)" P-INDEP ;* V154 tmp142 [V154 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP ;* V155 tmp143 [V155 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x4)" P-INDEP @@ -174,13 +174,13 @@ ;* V163 tmp151 [V163 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V164 tmp152 [V164 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP ;* V165 tmp153 [V165 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP
-; V166 tmp154 [V166,T42] ( 2, 4 ) byref -> r9 "field V80._reference (fldOffset=0x0)" P-INDEP -; V167 tmp155 [V167,T43] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
+; V166 tmp154 [V166,T34] ( 2, 4 ) byref -> r0 "field V80._reference (fldOffset=0x0)" P-INDEP +; V167 tmp155 [V167,T35] ( 2, 4 ) int -> lr "field V80._length (fldOffset=0x4)" P-INDEP
;* V168 tmp156 [V168 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP ;* V169 tmp157 [V169 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x4)" P-INDEP ;* V170 tmp158 [V170 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP ;* V171 tmp159 [V171 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x4)" P-INDEP
-; V172 tmp160 [V172,T32] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp160 [V172,T21] ( 2, 8 ) byref -> r1 "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp161 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP ;* V174 tmp162 [V174 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP ;* V175 tmp163 [V175 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP @@ -194,27 +194,26 @@ ;* V183 tmp171 [V183 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP ;* V184 tmp172 [V184 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP ;* V185 tmp173 [V185 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
-; V186 cse0 [V186,T15] ( 3, 24 ) byref -> [sp+0x04] hoist "CSE - moderate" -; V187 cse1 [V187,T16] ( 3, 24 ) byref -> [sp+0x00] "CSE - moderate" -; V188 cse2 [V188,T19] ( 3, 24 ) int -> [sp+0x10] "CSE - moderate"
+; V186 cse0 [V186,T25] ( 3, 6.50) byref -> [sp+0x00] hoist "CSE - conservative" +; V187 cse1 [V187,T38] ( 3, 3 ) byref -> r9 "CSE - conservative"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M63279_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r4, r0 ; gcrRegs +[r4] ;; size=14 bbWeight=1 PerfScore 5.00 G_M63279_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x58]
+ ldr r5, [sp+0x50]
; byrRegs +[r5]
- ldr r6, [sp+0x5C]
+ ldr r6, [sp+0x54]
ldr r7, [r4+0x34] cmp r7, r6
- bhi G_M63279_IG38
+ bhi G_M63279_IG36
lsls r0, r7, 1 add r8, r5, r0 ; byrRegs +[r8] @@ -233,7 +232,7 @@ G_M63279_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, ldr r3, [r3] blx r3 // <unknown method> cmp r7, 0
- bne G_M63279_IG35
+ bne G_M63279_IG33
;; size=18 bbWeight=1 PerfScore 6.00 G_M63279_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz movs r1, 10 @@ -252,7 +251,7 @@ G_M63279_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r ;; size=26 bbWeight=0.50 PerfScore 5.50 G_M63279_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz cmp r7, r9
- bhi G_M63279_IG38
...

+20 (+2.82%) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T20] ( 3, 6 ) ref -> r4 class-hnd single-def <FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader>
-; V01 arg1 [V01 ] ( 4, 7 ) struct ( 4) [sp+0x34] single-def <FSharp.Compiler.IO.ReadOnlyByteMemory>
+; V01 arg1 [V01 ] ( 4, 7 ) struct ( 4) [sp+0x3C] single-def <FSharp.Compiler.IO.ReadOnlyByteMemory>
; V02 arg2 [V02,T26] ( 3, 3 ) ref -> r6 class-hnd single-def <FSharp.Compiler.AbstractIL.IL+ILType>
-; V03 arg3 [V03,T22] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]> -; V04 arg4 [V04,T34] ( 1, 1 ) int -> [sp+0x38] single-def -; V05 arg5 [V05,T35] ( 1, 1 ) int -> [sp+0x3C] single-def -; V06 loc0 [V06 ] ( 3, 6 ) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn> -; V07 loc1 [V07,T16] ( 3, 9 ) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V03 arg3 [V03,T23] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]> +; V04 arg4 [V04,T32] ( 1, 1.98) int -> r7 single-def +; V05 arg5 [V05,T33] ( 1, 1.98) int -> r8 single-def +; V06 loc0 [V06 ] ( 3, 6 ) ref -> [sp+0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn> +; V07 loc1 [V07,T15] ( 3, 9.98) ref -> r5 class-hnd exact single-def <<unknown class>>
; V08 loc2 [V08,T25] ( 6, 6.54) ref -> r6 class-hnd exact single-def <<unknown class>>
-; V09 loc3 [V09,T23] ( 5, 7 ) ref -> r5 class-hnd exact single-def <<unknown class>> -; V10 loc4 [V10,T05] ( 15, 23.54) int -> r7 -; V11 loc5 [V11,T17] ( 4, 8 ) ref -> r9 class-hnd <FSharp.Compiler.AbstractIL.IL+ILType> -; V12 loc6 [V12,T10] ( 6, 18 ) int -> r6
+; V09 loc3 [V09,T22] ( 5, 7.98) ref -> r5 class-hnd exact single-def <<unknown class>> +; V10 loc4 [V10,T05] ( 15, 25.50) int -> r9 +; V11 loc5 [V11,T17] ( 4, 8 ) ref -> [sp+0x10] class-hnd <FSharp.Compiler.AbstractIL.IL+ILType> +; V12 loc6 [V12,T10] ( 6, 19.96) int -> r7
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes> ; V15 tmp2 [V15,T12] ( 6, 12 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILReturn> @@ -28,7 +28,7 @@ ; V17 tmp4 [V17,T28] ( 2, 4 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.AbstractIL.IL+ILReturn> ; V18 tmp5 [V18,T18] ( 4, 8 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]]> ;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> r7 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> r9 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V21 tmp8 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes> ;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes> ;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given> @@ -42,13 +42,13 @@ ;* V31 tmp18 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]> ; V32 tmp19 [V32,T01] ( 4, 34 ) ref -> r5 class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]> ;* V33 tmp20 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
-; V34 tmp21 [V34,T21] ( 2, 8 ) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
+; V34 tmp21 [V34,T21] ( 2, 8 ) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
;* V35 tmp22 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <FSharp.Compiler.AbstractIL.IL+ILType> ;* V36 tmp23 [V36,T31] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp24 [V37,T03] ( 4, 26 ) int -> r7 "Inlining Arg"
+; V37 tmp24 [V37,T03] ( 4, 26 ) int -> r9 "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
-; V39 tmp26 [V39,T00] ( 22, 88 ) ref -> [sp+0x08] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter> -; V40 tmp27 [V40,T19] ( 4, 8 ) ref -> r10 class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V39 tmp26 [V39,T00] ( 22, 88 ) ref -> [sp+0x0C] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter> +; V40 tmp27 [V40,T19] ( 4, 8 ) ref -> [sp+0x08] class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes> ;* V42 tmp29 [V42 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes> ;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given> @@ -56,43 +56,45 @@ ; V45 tmp32 [V45,T14] ( 4, 10 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]> ; V46 tmp33 [V46,T06] ( 7, 22 ) int -> r7 "Inline stloc first use temp" ;* V47 tmp34 [V47,T36] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V48 tmp35 [V48,T11] ( 2, 16 ) ref -> r9 class-hnd exact "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
+; V48 tmp35 [V48,T11] ( 2, 16 ) ref -> r8 class-hnd exact "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
; V49 tmp36 [V49,T02] ( 4, 32 ) ref -> r2 class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
-; V50 tmp37 [V50,T15] ( 4, 7 ) ref -> [sp+0x34] do-not-enreg[] single-def "field V01.bytes (fldOffset=0x0)" P-DEP
+; V50 tmp37 [V50,T16] ( 4, 7 ) ref -> [sp+0x3C] do-not-enreg[] single-def "field V01.bytes (fldOffset=0x0)" P-DEP
;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref "field V14.array (fldOffset=0x0)" P-INDEP
-;* V52 tmp39 [V52,T32] ( 0, 0 ) ref -> zero-ref single-def "field V21.array (fldOffset=0x0)" P-INDEP
+;* V52 tmp39 [V52,T34] ( 0, 0 ) ref -> zero-ref single-def "field V21.array (fldOffset=0x0)" P-INDEP
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "field V22.array (fldOffset=0x0)" P-INDEP ;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref "field V38.array (fldOffset=0x0)" P-INDEP ;* V55 tmp42 [V55,T29] ( 0, 0 ) ref -> zero-ref "field V41.array (fldOffset=0x0)" P-INDEP ;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref "field V42.array (fldOffset=0x0)" P-INDEP ;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V58 cse0 [V58,T33] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
+;* V58 cse0 [V58,T35] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
; V59 cse1 [V59,T08] ( 3, 20 ) ref -> r0 "CSE - aggressive"
-; V60 cse2 [V60,T09] ( 3, 20 ) ref -> r8 "CSE - aggressive" -; V61 cse3 [V61,T13] ( 7, 11.50) int -> r8 "CSE - moderate" -; V62 cse4 [V62,T27] ( 2, 4.50) int -> r9 hoist "CSE - moderate"
+; V60 cse2 [V60,T09] ( 3, 20 ) ref -> r10 "CSE - aggressive" +; V61 cse3 [V61,T13] ( 7, 11.50) int -> r10 "CSE - moderate" +; V62 cse4 [V62,T27] ( 2, 4.50) int -> r8 hoist "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M51799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 16 - add r11, sp, 44
+ sub sp, 24 + add r11, sp, 52
movs r1, 0
- str r1, [sp+0x0C] // [V06 loc0]
+ str r1, [sp+0x14] // [V06 loc0]
mov r4, r0 ; gcrRegs +[r4] mov r6, r2 ; gcrRegs +[r6] mov r5, r3 ; gcrRegs +[r5]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ldr r7, [sp+0x40] // [V04 arg4] + ldr r8, [sp+0x44] // [V05 arg5] + ;; size=28 bbWeight=1 PerfScore 11.00
G_M51799_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff
- ldr r7, [r0] - ; gcrRegs +[r7]
+ ldr r9, [r0] + ; gcrRegs +[r9]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -116,21 +118,21 @@ G_M51799_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ; byrRegs -[r0] add r0, r2, 12 ; byrRegs +[r0]
- mov r1, r7
+ mov r1, r9
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r7]
+ ; gcrRegs -[r1 r9]
; byrRegs -[r0] mov r1, -1 str r1, [r2+0x10]
- str r2, [sp+0x0C] // [V06 loc0]
+ str r2, [sp+0x14] // [V06 loc0]
ldrsb r1, [r5] movs r1, 0 mov r0, r5 ; gcrRegs +[r0]
- ;; size=82 bbWeight=1 PerfScore 27.00
+ ;; size=84 bbWeight=1 PerfScore 27.00
G_M51799_IG03: ; bbWeight=8, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r2] ldr r0, [r0+0x08] @@ -152,33 +154,33 @@ G_M51799_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- movs r7, 0 - ;; size=22 bbWeight=1 PerfScore 7.00
+ mov r9, 0 + ;; size=24 bbWeight=1 PerfScore 7.00
G_M51799_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r8, [r5+0x08] - ; gcrRegs +[r8] - cmp r8, 0
+ ldr r10, [r5+0x08] + ; gcrRegs +[r10] + cmp r10, 0
beq SHORT G_M51799_IG08 ;; size=10 bbWeight=8 PerfScore 24.00
-G_M51799_IG07: ; bbWeight=4, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+G_M51799_IG07: ; bbWeight=4, gcrefRegs=0470 {r4 r5 r6 r10}, byrefRegs=0000 {}, byref, isz
ldr r2, [r5+0x04] ; gcrRegs +[r2] mov r0, r6 ; gcrRegs +[r0]
- mov r1, r7
+ mov r1, r9
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_ARRADDR_ST ; gcrRegs -[r0 r2 r5] ; gcr arg pop 0
- mov r5, r8
+ mov r5, r10
; gcrRegs +[r5]
- adds r7, r7, 1
+ add r9, r9, 1
b SHORT G_M51799_IG06
- ;; size=22 bbWeight=4 PerfScore 36.00
+ ;; size=24 bbWeight=4 PerfScore 36.00
G_M51799_IG08: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5 r8]
+ ; gcrRegs -[r5 r10]
ldr r1, [r6+0x04] movw r0, 0xd1ff movt r0, 0xd1ff @@ -189,81 +191,87 @@ G_M51799_IG08: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- movs r7, 0 - ldr r8, [r5+0x04] - cmp r8, 0
+ mov r9, 0 + ldr r10, [r5+0x04] + cmp r10, 0
ble G_M51799_IG21
- ;; size=36 bbWeight=1 PerfScore 11.00
+ ;; size=38 bbWeight=1 PerfScore 11.00
G_M51799_IG09: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] ldr r0, [r6+0x04]
- cmp r0, r8
+ cmp r0, r10
blt SHORT G_M51799_IG16 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M51799_IG10: ; bbWeight=3.96, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref add r0, r6, 8 ; byrRegs +[r0]
- lsls r3, r7, 2 - ldr r9, [r0+r3] - ; gcrRegs +[r9]
+ lsl r3, r9, 2 + ldr r3, [r0+r3] + ; gcrRegs +[r3] + str r3, [sp+0x10] // [V11 loc5] + ; GC ptr vars +{V11}
movw r0, 0xd1ff ; byrRegs -[r0] movt r0, 0xd1ff
- ldr r10, [r0] - ; gcrRegs +[r10]
+ ldr r2, [r0] + ; gcrRegs +[r2] + str r2, [sp+0x08] // [V40 tmp27] + ; GC ptr vars +{V40}
movw r0, 0xd1ff movt r0, 0xd1ff
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWSFAST - ; gcrRegs +[r0]
+ movw r1, 0xd1ff + movt r1, 0xd1ff + blx r1 // CORINFO_HELP_NEWSFAST + ; gcrRegs -[r2-r3] +[r0]
; gcr arg pop 0 mov r1, r0 ; gcrRegs +[r1] movs r0, 0 ; gcrRegs -[r0] str r0, [r1+0x04]
- str r1, [sp+0x08] // [V39 tmp26]
+ str r1, [sp+0x0C] // [V39 tmp26]
; GC ptr vars +{V39} add r0, r1, 8 ; byrRegs +[r0]
- mov r1, r9
+ ldr r1, [sp+0x10] // [V11 loc5]
...

+28 (+3.27%) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)

@@ -8,88 +8,89 @@ ; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 39,506 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser> -; V01 TypeCtx [V01,T42] ( 7, 5.56) int -> [sp+0x20] single-def -; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r8 single-def -; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> r5 single-def -; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> -; V05 arg4 [V05,T29] ( 4, 24 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> -; V06 arg5 [V06,T30] ( 4, 24 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> -; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r9 single-def -; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r10 -; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [sp+0x64] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser> +; V01 TypeCtx [V01,T43] ( 7, 5.56) int -> [sp+0x20] single-def +; V02 arg1 [V02,T30] ( 4, 14 ) byref -> r7 single-def +; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r8 single-def +; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [sp+0x50] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> +; V05 arg4 [V05,T29] ( 4, 20 ) ref -> r6 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> +; V06 arg5 [V06,T27] ( 4, 24 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> +; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r10 single-def +; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r9 +; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [sp+0x64] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> -; V12 loc2 [V12,T17] ( 3, 52 ) int -> [sp+0x18] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> +; V12 loc2 [V12,T16] ( 3, 34 ) int -> [sp+0x18] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) int -> r1 "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) int -> r1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [sp+0x10] spill-single-def -; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> r1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [sp+0x0C] spill-single-def +; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> r1
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]> ;* V25 tmp12 [V25 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> r3 -; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> r3 +; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> r3 -; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> r2 +; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> r2 -; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r1 +; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> r2 -; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> r2 +; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> r2 -; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> r2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r1 +; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r1 -; V57 tmp44 [V57,T04] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V56 tmp43 [V56,T02] ( 4,224 ) ref -> lr +; V57 tmp44 [V57,T03] ( 3,192 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r1 -; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> lr class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> lr +; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> r3 -; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> r3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> r3 +; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> r1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon> -;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V71 tmp58 [V71,T06] ( 3, 80 ) int -> r0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> r1 class-hnd "Inlining Arg" <System.__Canon> +;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V71 tmp58 [V71,T13] ( 3, 48 ) int -> r0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [sp+0x0C] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP -;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [sp+0x08] spill-single-def "field V10.isPossibleElement (fldOffset=0x4)" P-INDEP +;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x8)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [sp+0x14] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0xa)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP ;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" -; V80 rat1 [V80,T44] ( 3, 5.60) int -> r0 "spilling expr" -; V81 rat2 [V81,T45] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [sp+0x10] multi-def "CSE - moderate" +; V80 rat0 [V80,T44] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable" +; V81 rat1 [V81,T45] ( 3, 5.60) int -> r0 "spilling expr" +; V82 rat2 [V82,T46] ( 3, 4.48) int -> r1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 44 @@ -102,35 +103,35 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [r11-0x24] mov r4, r0 ; gcrRegs +[r4]
- mov r8, r2 - ; byrRegs +[r8] - mov r5, r3
+ mov r7, r2 + ; byrRegs +[r7] + mov r8, r3
mov r3, r1 ldr r6, [sp+0x54] // [V05 arg4] ; gcrRegs +[r6]
- ldr r7, [sp+0x58] // [V06 arg5] - ; gcrRegs +[r7] - ldr r9, [sp+0x5C] // [V07 arg6] - ldr r10, [sp+0x60] // [V08 arg7]
+ ldr r5, [sp+0x58] // [V06 arg5] + ; gcrRegs +[r5] + ldr r10, [sp+0x5C] // [V07 arg6] + ldr r9, [sp+0x60] // [V08 arg7]
;; size=38 bbWeight=1 PerfScore 14.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldrb r2, [sp+0x64] strb r2, [sp+0x14] // [V75 tmp62] ldr lr, [sp+0x50] // [V04 arg3] ; gcrRegs +[lr]
- str lr, [sp+0x0C] // [V73 tmp60]
+ str lr, [sp+0x08] // [V73 tmp60]
; GC ptr vars +{V73} ldr r0, [r3+0x20] ldr r1, [r0+0x08] cmp r1, 0 beq SHORT G_M39451_IG04 ;; size=24 bbWeight=1 PerfScore 8.00
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, gcvars, byref, isz
; gcrRegs -[lr] str r3, [sp+0x20] // [V01 TypeCtx] b SHORT G_M39451_IG05 ;; size=4 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
str r3, [sp+0x20] // [V01 TypeCtx] mov r0, r3 movw r1, 0xd1ff @@ -140,7 +141,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 blx r12 // CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r1, r0 ;; size=24 bbWeight=0.20 PerfScore 1.60
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref
ldr r0, [r4+0xA4] ; gcrRegs +[r0] movw r12, 0xd1ff @@ -150,13 +151,13 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r blx r12 // Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this str r0, [sp+0x1C] // [V11 loc1] ;; size=22 bbWeight=1 PerfScore 7.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r0]
- uxtb r0, r10
+ uxtb r0, r9
cmp r0, 0 bne SHORT G_M39451_IG16 ;; size=8 bbWeight=8 PerfScore 24.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0 @@ -180,239 +181,59 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r mov r3, r1 ; gcrRegs +[r3] ;; size=38 bbWeight=2 PerfScore 28.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r1] ldrh r0, [r3+0x08]
- uxth r3, r5
+ uxth r3, r8
; gcrRegs -[r3]
+ str r3, [sp+0x10] // [V79 cse0]
cmp r0, r3
- beq G_M39451_IG39 - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M39451_IG09: ; bbWeight=4, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref, isz - ldr r3, [r4+0x08] - ; gcrRegs +[r3] - cmp r3, 0
+ beq G_M39451_IG33 + ;; size=14 bbWeight=2 PerfScore 10.00 +G_M39451_IG09: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref, isz + ldr r2, [r4+0x08] + ; gcrRegs +[r2] + cmp r2, 0
bne SHORT G_M39451_IG11 ;; size=6 bbWeight=4 PerfScore 12.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0100 {r8}, byref - ; gcrRegs -[r3]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0080 {r7}, byref + ; gcrRegs -[r2]
mov r0, r4 ; gcrRegs +[r0]
- movw r3, 0xd1ff - movt r3, 0xd1ff
...

+18 (+4.15%) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)

@@ -11,14 +11,14 @@ ; V01 arg1 [V01,T04] ( 7, 7.04) ref -> r5 class-hnd single-def <Microsoft.ML.Data.VBuffer`1[float][]> ; V02 arg2 [V02,T05] ( 7, 7.04) ref -> r6 class-hnd single-def <float[]> ; V03 arg3 [V03,T02] ( 7, 8 ) int -> r4 single-def
-; V04 arg4 [V04,T14] ( 1, 1 ) ubyte -> [sp+0x38] single-def
+; V04 arg4 [V04,T13] ( 1, 1.98) ubyte -> [sp+0x38] single-def
; V05 arg5 [V05,T07] ( 8, 8.02) byref -> r8 single-def ; V06 arg6 [V06,T10] ( 5, 5 ) byref -> [sp+0x40] single-def ; V07 arg7 [V07,T08] ( 9, 8 ) byref -> r9 single-def ; V08 arg8 [V08,T09] ( 6, 5.50) byref -> r10 single-def ; V09 loc0 [V09,T00] ( 17, 25.08) int -> [sp+0x04] ; V10 loc1 [V10,T01] ( 10, 14 ) float -> f17
-; V11 loc2 [V11,T13] ( 3, 1.50) float -> f0 single-def
+; V11 loc2 [V11,T14] ( 3, 1.50) float -> f0 single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 cse0 [V13,T11] ( 4, 4.54) float -> f16 hoist multi-def "CSE - aggressive" ; V14 cse1 [V14,T03] ( 3, 9.90) float -> f8 "CSE - aggressive" @@ -57,10 +57,10 @@ G_M61013_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0788 {r3 r str r1, [r3] mov r1, -1 str r1, [r10]
- movs r2, 0
+ mov lr, 0
cmp r4, 0 ble G_M61013_IG13
- ;; size=38 bbWeight=1 PerfScore 12.00
+ ;; size=40 bbWeight=1 PerfScore 12.00
G_M61013_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz ; byrRegs -[r3] cmp r5, 0 @@ -77,17 +77,17 @@ G_M61013_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r vmov.i2f s16, r1 ;; size=28 bbWeight=0.50 PerfScore 6.00 G_M61013_IG04: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
- str r2, [sp+0x04] - lsls r1, r2, 4
+ str lr, [sp+0x04] + lsl r1, lr, 4
adds r1, 8 adds r1, r5, r1 ; byrRegs +[r1] mov r0, r7 ; byrRegs +[r0]
- movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // <unknown method>
+ movw r12, 0xd1ff + movt r12, 0xd1ff + ldr r12, [r12] + blx r12 // <unknown method>
; byrRegs -[r0-r1] vmul s8, s0, s16 add r1, r6, 8 @@ -101,7 +101,7 @@ G_M61013_IG04: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r vcmp s17, s8 vmrs APSR, FPSCR bhi SHORT G_M61013_IG06
- ;; size=60 bbWeight=3.96 PerfScore 79.20
+ ;; size=64 bbWeight=3.96 PerfScore 79.20
G_M61013_IG05: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz ; byrRegs -[r1] vstr s8, [r9] @@ -126,40 +126,40 @@ G_M61013_IG06: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r G_M61013_IG07: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz adds r3, r3, 1 cmp r3, r4
- mov r2, r3
+ mov lr, r3
blt SHORT G_M61013_IG04 ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M61013_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
+G_M61013_IG08: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; gcrRegs -[r5-r6] b SHORT G_M61013_IG13
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 1.98
G_M61013_IG09: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz ; gcrRegs +[r5-r6] ldr r1, [r5+0x04]
- cmp r2, r1
+ cmp lr, r1
bhs SHORT G_M61013_IG17
- str r2, [sp+0x04] // [V09 loc0] - lsls r1, r2, 4
+ str lr, [sp+0x04] // [V09 loc0] + lsl r1, lr, 4
adds r1, 8 adds r1, r5, r1 ; byrRegs +[r1] mov r0, r7 ; byrRegs +[r0]
- movw lr, 0xd1ff - movt lr, 0xd1ff - ldr lr, [lr] - blx lr // <unknown method>
+ movw r12, 0xd1ff + movt r12, 0xd1ff + ldr r12, [r12] + blx r12 // <unknown method>
; byrRegs -[r0-r1] mov r0, -0x40000000 vmov.i2f s16, r0 vmul s8, s0, s16 ldr r0, [r6+0x04]
- ldr r2, [sp+0x04] // [V09 loc0] - cmp r2, r0
+ ldr lr, [sp+0x04] // [V09 loc0] + cmp lr, r0
bhs SHORT G_M61013_IG17 add r0, r6, 8 ; byrRegs +[r0]
- lsls r3, r2, 2
+ lsl r3, lr, 2
adds r0, r0, r3 vldr s9, [r0] vadd s17, s8, s9 @@ -167,7 +167,7 @@ G_M61013_IG09: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r vcmp s17, s8 vmrs APSR, FPSCR bhi SHORT G_M61013_IG11
- ;; size=80 bbWeight=0.04 PerfScore 1.12
+ ;; size=88 bbWeight=0.04 PerfScore 1.12
G_M61013_IG10: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz ; byrRegs -[r0] vldr s8, [r8] @@ -177,9 +177,9 @@ G_M61013_IG10: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r ldr r3, [r0] str r3, [r10] vstr s17, [r8]
- str r2, [r0]
+ str lr, [r0]
b SHORT G_M61013_IG12
- ;; size=24 bbWeight=0.02 PerfScore 0.16
+ ;; size=26 bbWeight=0.02 PerfScore 0.16
G_M61013_IG11: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz ; byrRegs -[r0] vldr s8, [r9] @@ -187,23 +187,23 @@ G_M61013_IG11: ; bbWeight=0.02, gcrefRegs=0060 {r5 r6}, byrefRegs=0780 {r vmrs APSR, FPSCR bhs SHORT G_M61013_IG16 vstr s17, [r9]
- str r2, [r10]
+ str lr, [r10]
ldr r0, [sp+0x40] // [V06 arg6] ; byrRegs +[r0] ;; size=24 bbWeight=0.02 PerfScore 0.14 G_M61013_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0781 {r0 r7 r8 r9 r10}, byref, isz
- adds r2, r2, 1 - cmp r2, r4
+ add lr, lr, 1 + cmp lr, r4
str r0, [sp+0x40] // [V06 arg6] blt SHORT G_M61013_IG09
- ;; size=8 bbWeight=0.04 PerfScore 0.16 -G_M61013_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
+ ;; size=10 bbWeight=0.04 PerfScore 0.16 +G_M61013_IG13: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz
; gcrRegs -[r5-r6] ; byrRegs -[r0] ldrb r0, [sp+0x38] // [V04 arg4] cmp r0, 0 beq SHORT G_M61013_IG15
- ;; size=8 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
G_M61013_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0780 {r7 r8 r9 r10}, byref, isz mov r0, r7 ; byrRegs +[r0] @@ -244,7 +244,7 @@ G_M61013_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 434, prolog size 14, PerfScore 168.36, instruction count 148, allocated bytes for code 434 (MethodHash=d18f11aa) for method Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
+; Total bytes of code 452, prolog size 14, PerfScore 172.28, instruction count 148, allocated bytes for code 452 (MethodHash=d18f11aa) for method Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -256,7 +256,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 217 (0x000d9) Actual length = 434 (0x0001b2)
+ Function Length : 226 (0x000e2) Actual length = 452 (0x0001c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 93 20 23 50 -252 +494
benchmarks.run_pgo.linux.arm.checked.mch 33 5 11 17 -20 +90
benchmarks.run_tiered.linux.arm.checked.mch 93 20 23 50 -232 +510
coreclr_tests.run.linux.arm.checked.mch 4,040 292 313 3,435 -1,914 +2,004
libraries.crossgen2.linux.arm.checked.mch 219 36 42 141 -528 +456
libraries.pmi.linux.arm.checked.mch 401 85 102 214 -1,172 +1,594
libraries_tests.run.linux.arm.Release.mch 746 284 146 316 -2,376 +502
librariestestsnotieredcompilation.run.linux.arm.Release.mch 536 134 198 204 -2,120 +3,486
realworld.run.linux.arm.checked.mch 101 25 23 53 -708 +492
6,262 901 881 4,480 -9,322 +9,628

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 42,331 4,278 38,053 1,165 (2.68%) 1,165 (2.68%)
benchmarks.run_pgo.linux.arm.checked.mch 47,709 18,036 29,673 753 (1.55%) 753 (1.55%)
benchmarks.run_tiered.linux.arm.checked.mch 72,866 38,765 34,101 1,011 (1.37%) 1,011 (1.37%)
coreclr_tests.run.linux.arm.checked.mch 471,634 259,195 212,439 7,529 (1.57%) 7,529 (1.57%)
libraries.crossgen2.linux.arm.checked.mch 197,974 14 197,960 424 (0.21%) 424 (0.21%)
libraries.pmi.linux.arm.checked.mch 272,819 6 272,813 7,891 (2.81%) 7,891 (2.81%)
libraries_tests.run.linux.arm.Release.mch 33,537 3,662 29,875 1,186 (3.42%) 1,186 (3.42%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,024 21,625 252,399 34,271 (11.12%) 34,271 (11.12%)
realworld.run.linux.arm.checked.mch 36,436 153 36,283 1,426 (3.77%) 1,426 (3.77%)
1,449,330 345,734 1,103,596 55,656 (3.70%) 55,656 (3.70%)

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: 13690874 (overridden on cmd)
Total bytes of diff: 13691116 (overridden on cmd)
Total bytes of delta: 242 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         102 : 25610.dasm (2.24 % of base)
          62 : 4669.dasm (7.18 % of base)
          56 : 13381.dasm (19.72 % of base)
          46 : 8474.dasm (2.85 % of base)
          44 : 27868.dasm (1.34 % of base)
          44 : 28013.dasm (1.36 % of base)
          28 : 6426.dasm (1.79 % of base)
          16 : 16909.dasm (4.57 % of base)
          12 : 24266.dasm (1.83 % of base)
          10 : 23747.dasm (0.12 % of base)
          10 : 33760.dasm (0.10 % of base)
          10 : 39066.dasm (1.39 % of base)
          10 : 41892.dasm (0.69 % of base)
           8 : 19605.dasm (1.67 % of base)
           8 : 7246.dasm (1.90 % of base)
           6 : 25302.dasm (0.24 % of base)
           4 : 13338.dasm (0.75 % of base)
           4 : 13684.dasm (0.24 % of base)
           4 : 29465.dasm (0.63 % of base)
           4 : 7037.dasm (0.87 % of base)

Top file improvements (bytes):
         -78 : 24673.dasm (-7.91 % of base)
         -32 : 24674.dasm (-0.84 % of base)
         -28 : 12745.dasm (-1.61 % of base)
         -22 : 29768.dasm (-2.27 % of base)
         -14 : 20003.dasm (-0.44 % of base)
         -12 : 24723.dasm (-0.65 % of base)
         -10 : 5359.dasm (-0.43 % of base)
          -8 : 31723.dasm (-0.50 % of base)
          -6 : 17258.dasm (-0.36 % of base)
          -6 : 20488.dasm (-0.18 % of base)
          -6 : 13368.dasm (-0.27 % of base)
          -6 : 7387.dasm (-1.59 % of base)
          -4 : 6224.dasm (-0.28 % of base)
          -4 : 4382.dasm (-0.96 % of base)
          -4 : 4387.dasm (-0.97 % of base)
          -4 : 733.dasm (-1.06 % of base)
          -2 : 13371.dasm (-0.16 % of base)
          -2 : 22356.dasm (-0.18 % of base)
          -2 : 8377.dasm (-0.11 % of base)
          -2 : 4663.dasm (-0.28 % of base)

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

Top method regressions (bytes):
         102 (2.24 % of base) : 25610.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
          62 (7.18 % of base) : 4669.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          56 (19.72 % of base) : 13381.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          46 (2.85 % of base) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
          44 (1.34 % of base) : 27868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          44 (1.36 % of base) : 28013.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          28 (1.79 % of base) : 6426.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
          16 (4.57 % of base) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
          12 (1.83 % of base) : 24266.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          10 (0.12 % of base) : 23747.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
          10 (0.10 % of base) : 33760.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
          10 (0.69 % of base) : 41892.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
          10 (1.39 % of base) : 39066.dasm - SciMark2.SOR:execute(double,double[][],int) (FullOpts)
           8 (1.67 % of base) : 19605.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (FullOpts)
           8 (1.90 % of base) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
           6 (0.24 % of base) : 25302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           4 (0.63 % of base) : 29465.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (FullOpts)
           4 (0.24 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
           4 (0.87 % of base) : 7037.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
           4 (0.75 % of base) : 13338.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)

Top method improvements (bytes):
         -78 (-7.91 % of base) : 24673.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)
         -32 (-0.84 % of base) : 24674.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)
         -28 (-1.61 % of base) : 12745.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -22 (-2.27 % of base) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -14 (-0.44 % of base) : 20003.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -12 (-0.65 % of base) : 24723.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)
         -10 (-0.43 % of base) : 5359.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          -8 (-0.50 % of base) : 31723.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
          -6 (-1.59 % of base) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -6 (-0.18 % of base) : 20488.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)
          -6 (-0.27 % of base) : 13368.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          -6 (-0.36 % of base) : 17258.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          -4 (-0.97 % of base) : 4387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-1.06 % of base) : 733.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-0.96 % of base) : 4382.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-0.28 % of base) : 6224.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
          -2 (-0.18 % of base) : 22356.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
          -2 (-0.11 % of base) : 8377.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
          -2 (-0.28 % of base) : 4663.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
          -2 (-0.16 % of base) : 13371.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)

Top method regressions (percentages):
          56 (19.72 % of base) : 13381.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          62 (7.18 % of base) : 4669.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          16 (4.57 % of base) : 16909.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
          46 (2.85 % of base) : 8474.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         102 (2.24 % of base) : 25610.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
           8 (1.90 % of base) : 7246.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (1.83 % of base) : 24266.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          28 (1.79 % of base) : 6426.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
           8 (1.67 % of base) : 19605.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (FullOpts)
          10 (1.39 % of base) : 39066.dasm - SciMark2.SOR:execute(double,double[][],int) (FullOpts)
          44 (1.36 % of base) : 28013.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          44 (1.34 % of base) : 27868.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           4 (0.87 % of base) : 7037.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
           4 (0.75 % of base) : 13338.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          10 (0.69 % of base) : 41892.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
           4 (0.63 % of base) : 29465.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (FullOpts)
           4 (0.24 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
           6 (0.24 % of base) : 25302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           2 (0.15 % of base) : 9598.dasm - BilinearTest:BilinearInterpol(double[],double[],double,double,double[],double,double,double):double[] (FullOpts)
           2 (0.14 % of base) : 2030.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
         -78 (-7.91 % of base) : 24673.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)
         -22 (-2.27 % of base) : 29768.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -28 (-1.61 % of base) : 12745.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          -6 (-1.59 % of base) : 7387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-1.06 % of base) : 733.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-0.97 % of base) : 4387.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-0.96 % of base) : 4382.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
         -32 (-0.84 % of base) : 24674.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)
         -12 (-0.65 % of base) : 24723.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)
          -8 (-0.50 % of base) : 31723.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -14 (-0.44 % of base) : 20003.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -10 (-0.43 % of base) : 5359.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          -6 (-0.36 % of base) : 17258.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          -4 (-0.28 % of base) : 6224.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (FullOpts)
          -2 (-0.28 % of base) : 4663.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
          -6 (-0.27 % of base) : 13368.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          -6 (-0.18 % of base) : 20488.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)
          -2 (-0.18 % of base) : 22356.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
          -2 (-0.16 % of base) : 13371.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)
          -2 (-0.11 % of base) : 8377.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (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: 24676696 (overridden on cmd)
Total bytes of diff: 24676766 (overridden on cmd)
Total bytes of delta: 70 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          62 : 24027.dasm (7.18 % of base)
           4 : 17233.dasm (0.24 % of base)
           4 : 24592.dasm (1.24 % of base)
           4 : 13986.dasm (1.24 % of base)
           4 : 9530.dasm (0.87 % of base)
           2 : 16865.dasm (0.62 % of base)
           2 : 23935.dasm (0.62 % of base)
           2 : 14411.dasm (0.14 % of base)
           2 : 40786.dasm (0.62 % of base)
           2 : 14056.dasm (0.28 % of base)
           2 : 17741.dasm (0.62 % of base)

Top file improvements (bytes):
          -6 : 5440.dasm (-1.55 % of base)
          -4 : 6586.dasm (-0.95 % of base)
          -4 : 2268.dasm (-1.04 % of base)
          -4 : 6588.dasm (-0.96 % of base)
          -2 : 9314.dasm (-0.14 % of base)

16 total files with Code Size differences (5 improved, 11 regressed), 17 unchanged.

Top method regressions (bytes):
          62 (7.18 % of base) : 24027.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
           4 (0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
           4 (0.87 % of base) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
           4 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           4 (1.24 % of base) : 13986.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.14 % of base) : 14411.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
           2 (0.62 % of base) : 16865.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 23935.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 40786.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 17741.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.28 % of base) : 14056.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)

Top method improvements (bytes):
          -6 (-1.55 % of base) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.96 % of base) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-1.04 % of base) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.95 % of base) : 6586.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -2 (-0.14 % of base) : 9314.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)

Top method regressions (percentages):
          62 (7.18 % of base) : 24027.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
           4 (1.24 % of base) : 24592.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           4 (1.24 % of base) : 13986.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           4 (0.87 % of base) : 9530.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
           2 (0.62 % of base) : 16865.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 23935.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 40786.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.62 % of base) : 17741.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
           2 (0.28 % of base) : 14056.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
           4 (0.24 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
           2 (0.14 % of base) : 14411.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)

Top method improvements (percentages):
          -6 (-1.55 % of base) : 5440.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-1.04 % of base) : 2268.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.96 % of base) : 6588.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.95 % of base) : 6586.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -2 (-0.14 % of base) : 9314.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)

16 total methods with Code Size differences (5 improved, 11 regressed).


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: 17982904 (overridden on cmd)
Total bytes of diff: 17983182 (overridden on cmd)
Total bytes of delta: 278 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         102 : 48074.dasm (2.24 % of base)
          62 : 6984.dasm (7.18 % of base)
          56 : 32704.dasm (19.72 % of base)
          46 : 17948.dasm (2.85 % of base)
          44 : 54644.dasm (1.34 % of base)
          44 : 55791.dasm (1.36 % of base)
          28 : 12613.dasm (1.79 % of base)
          28 : 44994.dasm (3.27 % of base)
          16 : 38232.dasm (4.57 % of base)
          10 : 53075.dasm (0.12 % of base)
          10 : 72998.dasm (0.69 % of base)
          10 : 63651.dasm (0.10 % of base)
          10 : 66371.dasm (1.39 % of base)
           8 : 16392.dasm (1.90 % of base)
           8 : 40868.dasm (1.67 % of base)
           6 : 47370.dasm (0.24 % of base)
           4 : 32649.dasm (0.75 % of base)
           4 : 13574.dasm (0.87 % of base)
           4 : 29579.dasm (0.24 % of base)
           4 : 59745.dasm (0.63 % of base)

Top file improvements (bytes):
         -78 : 45853.dasm (-7.89 % of base)
         -32 : 45876.dasm (-0.84 % of base)
         -22 : 59989.dasm (-2.27 % of base)
         -14 : 42474.dasm (-0.44 % of base)
         -12 : 46023.dasm (-0.65 % of base)
         -10 : 8730.dasm (-0.43 % of base)
          -8 : 31813.dasm (-0.45 % of base)
          -8 : 60861.dasm (-0.50 % of base)
          -6 : 42995.dasm (-0.18 % of base)
          -6 : 19472.dasm (-1.59 % of base)
          -6 : 43090.dasm (-0.27 % of base)
          -6 : 38556.dasm (-0.36 % of base)
          -4 : 4857.dasm (-0.96 % of base)
          -4 : 19703.dasm (-0.28 % of base)
          -4 : 4865.dasm (-0.97 % of base)
          -4 : 1946.dasm (-1.06 % of base)
          -2 : 17689.dasm (-0.11 % of base)
          -2 : 32693.dasm (-0.16 % of base)
          -2 : 3719.dasm (-0.28 % of base)
          -2 : 44320.dasm (-0.18 % of base)

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

Top method regressions (bytes):
         102 (2.24 % of base) : 48074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
          62 (7.18 % of base) : 6984.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
          56 (19.72 % of base) : 32704.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
          46 (2.85 % of base) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
          44 (1.34 % of base) : 54644.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          44 (1.36 % of base) : 55791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          28 (3.27 % of base) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
          28 (1.79 % of base) : 12613.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
          16 (4.57 % of base) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
          10 (0.12 % of base) : 53075.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
          10 (0.10 % of base) : 63651.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
          10 (0.69 % of base) : 72998.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
          10 (1.39 % of base) : 66371.dasm - SciMark2.SOR:execute(double,double[][],int) (Tier0-FullOpts)
           8 (1.67 % of base) : 40868.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (Tier0-FullOpts)
           8 (1.90 % of base) : 16392.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (Tier0-FullOpts)
           6 (0.24 % of base) : 47370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
           4 (0.63 % of base) : 59745.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (Tier0-FullOpts)
           4 (0.24 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
           4 (0.87 % of base) : 13574.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
           4 (0.75 % of base) : 32649.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (Tier0-FullOpts)

Top method improvements (bytes):
         -78 (-7.89 % of base) : 45853.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)
         -32 (-0.84 % of base) : 45876.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 (-2.27 % of base) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
         -14 (-0.44 % of base) : 42474.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         -12 (-0.65 % of base) : 46023.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)
         -10 (-0.43 % of base) : 8730.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
          -8 (-0.50 % of base) : 60861.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
          -8 (-0.45 % of base) : 31813.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
          -6 (-1.59 % of base) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -6 (-0.18 % of base) : 42995.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)
          -6 (-0.27 % of base) : 43090.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (Tier1)
          -6 (-0.36 % of base) : 38556.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          -4 (-0.97 % of base) : 4865.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-1.06 % of base) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.96 % of base) : 4857.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.28 % of base) : 19703.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
          -2 (-0.18 % of base) : 44320.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
          -2 (-0.11 % of base) : 17689.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier0-FullOpts)
          -2 (-0.28 % of base) : 3719.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
          -2 (-0.16 % of base) : 32693.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (Tier0-FullOpts)

Top method regressions (percentages):
          56 (19.72 % of base) : 32704.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
          62 (7.18 % of base) : 6984.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier0-FullOpts)
          16 (4.57 % of base) : 38232.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
          28 (3.27 % of base) : 44994.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
          46 (2.85 % of base) : 17948.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         102 (2.24 % of base) : 48074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
           8 (1.90 % of base) : 16392.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (Tier0-FullOpts)
          28 (1.79 % of base) : 12613.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
           8 (1.67 % of base) : 40868.dasm - IDEAEncryption:DoIDEAIteration(ubyte[],ubyte[],ubyte[],int,int,ushort[],ushort[]):long (Tier0-FullOpts)
          10 (1.39 % of base) : 66371.dasm - SciMark2.SOR:execute(double,double[][],int) (Tier0-FullOpts)
          44 (1.36 % of base) : 55791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          44 (1.34 % of base) : 54644.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           4 (0.87 % of base) : 13574.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0-FullOpts)
           4 (0.75 % of base) : 32649.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (Tier0-FullOpts)
          10 (0.69 % of base) : 72998.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier0-FullOpts)
           4 (0.63 % of base) : 59745.dasm - JetStream.SampleVarianceUpperTriangularMatrix:.ctor(double[]):this (Tier0-FullOpts)
           4 (0.24 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
           6 (0.24 % of base) : 47370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
           2 (0.15 % of base) : 19693.dasm - BilinearTest:BilinearInterpol(double[],double[],double,double,double[],double,double,double):double[] (Tier0-FullOpts)
           2 (0.14 % of base) : 4338.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)

Top method improvements (percentages):
         -78 (-7.89 % of base) : 45853.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)
         -22 (-2.27 % of base) : 59989.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
          -6 (-1.59 % of base) : 19472.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-1.06 % of base) : 1946.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.97 % of base) : 4865.dasm - System.Globalization.CompareInfo:EndsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
          -4 (-0.96 % of base) : 4857.dasm - System.Globalization.CompareInfo:StartsWithOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (Tier0-FullOpts)
         -32 (-0.84 % of base) : 45876.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)
         -12 (-0.65 % of base) : 46023.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)
          -8 (-0.50 % of base) : 60861.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
          -8 (-0.45 % of base) : 31813.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -14 (-0.44 % of base) : 42474.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         -10 (-0.43 % of base) : 8730.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier0-FullOpts)
          -6 (-0.36 % of base) : 38556.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          -4 (-0.28 % of base) : 19703.dasm - System.Number:NegativeInt128ToDecStr(System.Int128,int,System.String):System.String (Tier0-FullOpts)
          -2 (-0.28 % of base) : 3719.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier0-FullOpts)
          -6 (-0.27 % of base) : 43090.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (Tier1)
          -6 (-0.18 % of base) : 42995.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)
          -2 (-0.18 % of base) : 44320.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier0-FullOpts)
          -2 (-0.16 % of base) : 32693.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (Tier0-FullOpts)
          -2 (-0.11 % of base) : 17689.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int: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: 321240776 (overridden on cmd)
Total bytes of diff: 321240866 (overridden on cmd)
Total bytes of delta: 90 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          40 : 83069.dasm (2.36 % of base)
          40 : 344994.dasm (2.36 % of base)
          34 : 83153.dasm (2.19 % of base)
          34 : 83295.dasm (2.19 % of base)
          34 : 150418.dasm (2.20 % of base)
          34 : 345045.dasm (2.19 % of base)
          34 : 345130.dasm (2.19 % of base)
          34 : 381852.dasm (2.20 % of base)
          32 : 178100.dasm (1.17 % of base)
          26 : 192032.dasm (0.95 % of base)
          26 : 305551.dasm (7.56 % of base)
          24 : 345516.dasm (3.01 % of base)
          24 : 83875.dasm (3.01 % of base)
          24 : 83920.dasm (3.01 % of base)
          24 : 185953.dasm (1.96 % of base)
          24 : 200822.dasm (0.89 % of base)
          24 : 409592.dasm (1.96 % of base)
          24 : 312427.dasm (4.29 % of base)
          24 : 139144.dasm (2.75 % of base)
          24 : 345546.dasm (3.01 % of base)

Top file improvements (bytes):
         -84 : 134638.dasm (-4.07 % of base)
         -70 : 398740.dasm (-0.92 % of base)
         -70 : 157964.dasm (-0.92 % of base)
         -44 : 185942.dasm (-3.36 % of base)
         -44 : 409584.dasm (-3.35 % of base)
         -32 : 275136.dasm (-1.03 % of base)
         -28 : 122724.dasm (-0.87 % of base)
         -24 : 212325.dasm (-0.74 % of base)
         -22 : 304388.dasm (-5.67 % of base)
         -22 : 382451.dasm (-2.27 % of base)
         -22 : 151681.dasm (-2.27 % of base)
         -22 : 311135.dasm (-5.67 % of base)
         -20 : 71277.dasm (-3.79 % of base)
         -20 : 32438.dasm (-3.79 % of base)
         -18 : 137238.dasm (-0.82 % of base)
         -18 : 313633.dasm (-0.82 % of base)
         -18 : 151129.dasm (-0.82 % of base)
         -18 : 298917.dasm (-0.82 % of base)
         -18 : 32893.dasm (-0.82 % of base)
         -18 : 141330.dasm (-0.82 % of base)

75 total files with Code Size differences (35 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
          40 (2.36 % of base) : 344994.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
          40 (2.36 % of base) : 83069.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectDouble:ValidateResult(double[],double[],double[],double[],System.String):this (Tier0-FullOpts)
          34 (2.19 % of base) : 345045.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
          34 (2.19 % of base) : 83153.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (Tier0-FullOpts)
          34 (2.19 % of base) : 345130.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
          34 (2.19 % of base) : 83295.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
          34 (2.20 % of base) : 381852.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          34 (2.20 % of base) : 150418.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          32 (1.17 % of base) : 178100.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
          26 (0.95 % of base) : 192032.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
          26 (7.56 % of base) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
          24 (3.01 % of base) : 345516.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt16:ValidateResult(short[],short,short,System.String):this (FullOpts)
          24 (3.01 % of base) : 83875.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt16:ValidateResult(short[],short,short,System.String):this (Tier0-FullOpts)
          24 (3.01 % of base) : 345546.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorUInt16:ValidateResult(ushort[],ushort,ushort,System.String):this (FullOpts)
          24 (3.01 % of base) : 83920.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorUInt16:ValidateResult(ushort[],ushort,ushort,System.String):this (Tier0-FullOpts)
          24 (1.96 % of base) : 409592.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (FullOpts)
          24 (1.96 % of base) : 185953.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (Tier0-FullOpts)
          24 (2.75 % of base) : 139144.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
          24 (0.89 % of base) : 200822.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
          24 (4.29 % of base) : 312427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)

Top method improvements (bytes):
         -84 (-4.07 % of base) : 134638.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (Instrumented Tier1)
         -70 (-0.92 % of base) : 398740.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
         -70 (-0.92 % of base) : 157964.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (Tier0-FullOpts)
         -44 (-3.35 % of base) : 409584.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
         -44 (-3.36 % of base) : 185942.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
         -32 (-1.03 % of base) : 275136.dasm - Internal.TypeSystem.Ecma.EcmaModule:ResolveTypeReference(System.Reflection.Metadata.TypeReferenceHandle):System.Object:this (Tier1)
         -28 (-0.87 % of base) : 122724.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -24 (-0.74 % of base) : 212325.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
         -22 (-2.27 % of base) : 382451.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -22 (-2.27 % of base) : 151681.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
         -22 (-5.67 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -22 (-5.67 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-3.79 % of base) : 71277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.79 % of base) : 32438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-0.82 % of base) : 137238.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
         -18 (-0.82 % of base) : 313633.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
         -18 (-0.82 % of base) : 151129.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
         -18 (-0.82 % of base) : 298917.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
         -18 (-0.82 % of base) : 32893.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
         -18 (-0.82 % of base) : 141330.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)

Top method regressions (percentages):
          16 (13.33 % of base) : 126922.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          14 (11.48 % of base) : 23798.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          26 (7.56 % of base) : 305551.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
          24 (4.29 % of base) : 312427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
          22 (3.83 % of base) : 24441.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
           4 (3.51 % of base) : 311104.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 71304.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 167508.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 225947.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 232011.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 237067.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 242295.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 24443.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 261035.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 271820.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 299332.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 300785.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 277897.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 304305.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 32547.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)

Top method improvements (percentages):
         -22 (-5.67 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -22 (-5.67 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -10 (-5.10 % of base) : 116194.dasm - System.SpanHelpers:IndexOfNullByte(uint):int (Tier1)
         -16 (-4.35 % of base) : 301841.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
          -4 (-4.35 % of base) : 116083.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
          -4 (-4.35 % of base) : 199842.dasm - System.String:IsNullOrWhiteSpace(System.String):ubyte (Tier1)
         -84 (-4.07 % of base) : 134638.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (Instrumented Tier1)
         -14 (-3.85 % of base) : 302423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -20 (-3.79 % of base) : 71277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.79 % of base) : 32438.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -44 (-3.36 % of base) : 185942.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier0-FullOpts)
         -44 (-3.35 % of base) : 409584.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
         -10 (-2.73 % of base) : 272938.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -10 (-2.73 % of base) : 301128.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -16 (-2.73 % of base) : 141359.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          -8 (-2.68 % of base) : 44546.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
          -8 (-2.68 % of base) : 83509.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
          -8 (-2.68 % of base) : 35029.dasm - System.Number+BigInteger:Add(byref,byref,byref) (Tier1)
          -6 (-2.54 % of base) : 30975.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Tier1)
         -12 (-2.28 % of base) : 39592.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: 35803568 (overridden on cmd)
Total bytes of diff: 35803496 (overridden on cmd)
Total bytes of delta: -72 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          50 : 103492.dasm (3.32 % of base)
          50 : 158017.dasm (0.23 % of base)
          36 : 103490.dasm (1.47 % of base)
          30 : 194501.dasm (2.91 % of base)
          24 : 158938.dasm (0.86 % of base)
          22 : 80834.dasm (3.67 % of base)
          20 : 2594.dasm (1.21 % of base)
          20 : 192173.dasm (1.04 % of base)
          18 : 159087.dasm (2.45 % of base)
          16 : 146715.dasm (0.23 % of base)
          16 : 98991.dasm (2.86 % of base)
          14 : 99433.dasm (1.83 % of base)
          12 : 190015.dasm (5.22 % of base)
          12 : 45961.dasm (0.95 % of base)
          10 : 107286.dasm (0.87 % of base)
          10 : 134431.dasm (0.14 % of base)
          10 : 190016.dasm (3.82 % of base)
          10 : 78650.dasm (0.35 % of base)
           8 : 41470.dasm (0.71 % of base)
           8 : 150648.dasm (0.44 % of base)

Top file improvements (bytes):
         -44 : 79533.dasm (-2.46 % of base)
         -40 : 107257.dasm (-2.86 % of base)
         -38 : 103491.dasm (-2.18 % of base)
         -30 : 164204.dasm (-1.52 % of base)
         -28 : 46670.dasm (-3.45 % of base)
         -26 : 98724.dasm (-1.85 % of base)
         -24 : 79086.dasm (-0.71 % of base)
         -24 : 151677.dasm (-1.33 % of base)
         -22 : 132855.dasm (-1.25 % of base)
         -20 : 171174.dasm (-0.86 % of base)
         -20 : 65992.dasm (-0.88 % of base)
         -18 : 161171.dasm (-1.07 % of base)
         -16 : 161165.dasm (-1.01 % of base)
         -16 : 99327.dasm (-0.89 % of base)
         -14 : 190750.dasm (-1.21 % of base)
         -12 : 161198.dasm (-2.17 % of base)
         -12 : 80938.dasm (-1.03 % of base)
         -12 : 124606.dasm (-4.14 % of base)
         -12 : 122173.dasm (-0.24 % of base)
         -12 : 49667.dasm (-0.25 % of base)

47 total files with Code Size differences (23 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
          50 (3.32 % of base) : 103492.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
          50 (0.23 % of base) : 158017.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)
          36 (1.47 % of base) : 103490.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
          30 (2.91 % of base) : 194501.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsSafeArray(System.String[],System.Object[],System.Reflection.Emit.MarshallingData) (FullOpts)
          24 (0.86 % of base) : 158938.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          22 (3.67 % of base) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
          20 (1.21 % of base) : 2594.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
          20 (1.04 % of base) : 192173.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
          18 (2.45 % of base) : 159087.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          16 (2.86 % of base) : 98991.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
          16 (0.23 % of base) : 146715.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)
          14 (1.83 % of base) : 99433.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
          12 (0.95 % of base) : 45961.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
          12 (5.22 % of base) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          10 (0.35 % of base) : 78650.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
          10 (0.14 % of base) : 134431.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
          10 (0.87 % of base) : 107286.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
          10 (3.82 % of base) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
           8 (0.71 % of base) : 41470.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
           8 (0.44 % of base) : 150648.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)

Top method improvements (bytes):
         -44 (-2.46 % of base) : 79533.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
         -40 (-2.86 % of base) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
         -38 (-2.18 % of base) : 103491.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         -30 (-1.52 % of base) : 164204.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
         -28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -26 (-1.85 % of base) : 98724.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundConvertedTupleElements):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -24 (-0.71 % of base) : 79086.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundWithLValueExpressionPlaceholder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression:this (FullOpts)
         -24 (-1.33 % of base) : 151677.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -22 (-1.25 % of base) : 132855.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -20 (-0.88 % of base) : 65992.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ReducedExtensionMethodSymbol:InferExtensionMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol (FullOpts)
         -20 (-0.86 % of base) : 171174.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)
         -18 (-1.07 % of base) : 161171.dasm - System.Data.ForeignKeyConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
         -16 (-0.89 % of base) : 99327.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         -16 (-1.01 % of base) : 161165.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
         -14 (-1.21 % of base) : 190750.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
         -12 (-0.24 % of base) : 122173.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -12 (-0.25 % of base) : 49667.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
         -12 (-1.03 % of base) : 80938.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
         -12 (-4.14 % of base) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
         -12 (-2.17 % of base) : 161198.dasm - System.Data.RelatedView:Invoke(System.Data.DataRow,int):ubyte:this (FullOpts)

Top method regressions (percentages):
          12 (5.22 % of base) : 190015.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          10 (3.82 % of base) : 190016.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          22 (3.67 % of base) : 80834.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
          50 (3.32 % of base) : 103492.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
          30 (2.91 % of base) : 194501.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsSafeArray(System.String[],System.Object[],System.Reflection.Emit.MarshallingData) (FullOpts)
          16 (2.86 % of base) : 98991.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
          18 (2.45 % of base) : 159087.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          14 (1.83 % of base) : 99433.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
          36 (1.47 % of base) : 103490.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
           4 (1.29 % of base) : 171217.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteRectangleArray(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,int[],int[]):this (FullOpts)
          20 (1.21 % of base) : 2594.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
          20 (1.04 % of base) : 192173.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
          12 (0.95 % of base) : 45961.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
           4 (0.93 % of base) : 118051.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(int,int):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
           4 (0.88 % of base) : 196210.dasm - System.Web.HttpUtility:ParseQueryString(System.String,System.Text.Encoding):System.Collections.Specialized.NameValueCollection (FullOpts)
          10 (0.87 % of base) : 107286.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
          24 (0.86 % of base) : 158938.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
           8 (0.71 % of base) : 41470.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
           2 (0.69 % of base) : 92584.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
           8 (0.44 % of base) : 150648.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)

Top method improvements (percentages):
         -12 (-4.14 % of base) : 124606.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
         -28 (-3.45 % of base) : 46670.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -40 (-2.86 % of base) : 107257.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
         -44 (-2.46 % of base) : 79533.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
         -38 (-2.18 % of base) : 103491.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         -12 (-2.17 % of base) : 161198.dasm - System.Data.RelatedView:Invoke(System.Data.DataRow,int):ubyte:this (FullOpts)
         -26 (-1.85 % of base) : 98724.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundConvertedTupleElements):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -10 (-1.57 % of base) : 171227.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
         -30 (-1.52 % of base) : 164204.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
         -24 (-1.33 % of base) : 151677.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -22 (-1.25 % of base) : 132855.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -14 (-1.21 % of base) : 190750.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
         -18 (-1.07 % of base) : 161171.dasm - System.Data.ForeignKeyConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
         -12 (-1.03 % of base) : 80938.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
         -16 (-1.01 % of base) : 161165.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
          -6 (-0.97 % of base) : 142679.dasm - System.Diagnostics.Process:get_Threads():System.Diagnostics.ProcessThreadCollection:this (FullOpts)
         -16 (-0.89 % of base) : 99327.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         -20 (-0.88 % of base) : 65992.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ReducedExtensionMethodSymbol:InferExtensionMethodTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol (FullOpts)
         -20 (-0.86 % of base) : 171174.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)
          -6 (-0.83 % of base) : 98280.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:AdjustCallForLiftedOperator_DoNotCallDirectly(Microsoft.CodeAnalysis.VisualBasic.BoundCall,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression: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: 49871588 (overridden on cmd)
Total bytes of diff: 49872010 (overridden on cmd)
Total bytes of delta: 422 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         160 : 118524.dasm (4.42 % of base)
         108 : 119888.dasm (7.21 % of base)
          68 : 214071.dasm (8.04 % of base)
          68 : 211751.dasm (8.04 % of base)
          64 : 62709.dasm (2.96 % of base)
          58 : 189575.dasm (1.96 % of base)
          56 : 148762.dasm (21.88 % of base)
          56 : 148763.dasm (19.72 % of base)
          50 : 55091.dasm (2.60 % of base)
          44 : 189956.dasm (0.20 % of base)
          40 : 117523.dasm (1.14 % of base)
          38 : 114386.dasm (2.66 % of base)
          34 : 147329.dasm (2.20 % of base)
          28 : 141939.dasm (1.77 % of base)
          28 : 237159.dasm (2.90 % of base)
          26 : 113619.dasm (0.43 % of base)
          26 : 119449.dasm (0.97 % of base)
          22 : 90843.dasm (0.69 % of base)
          22 : 244494.dasm (1.32 % of base)
          22 : 139960.dasm (1.16 % of base)

Top file improvements (bytes):
        -150 : 91201.dasm (-1.12 % of base)
         -92 : 28212.dasm (-4.76 % of base)
         -70 : 192244.dasm (-0.92 % of base)
         -70 : 93797.dasm (-3.15 % of base)
         -54 : 36715.dasm (-2.55 % of base)
         -52 : 170334.dasm (-7.41 % of base)
         -34 : 33588.dasm (-4.34 % of base)
         -32 : 34986.dasm (-0.68 % of base)
         -30 : 28266.dasm (-0.60 % of base)
         -26 : 234639.dasm (-2.13 % of base)
         -26 : 249077.dasm (-2.97 % of base)
         -24 : 118522.dasm (-0.67 % of base)
         -22 : 118523.dasm (-0.76 % of base)
         -20 : 196586.dasm (-1.47 % of base)
         -20 : 141905.dasm (-1.67 % of base)
         -20 : 34762.dasm (-1.77 % of base)
         -18 : 158795.dasm (-2.05 % of base)
         -16 : 55991.dasm (-0.65 % of base)
         -16 : 91045.dasm (-0.90 % of base)
         -14 : 29040.dasm (-1.51 % of base)

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

Top method regressions (bytes):
         160 (4.42 % of base) : 118524.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         108 (7.21 % of base) : 119888.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)
          68 (8.04 % of base) : 214071.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          68 (8.04 % of base) : 211751.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          64 (2.96 % of base) : 62709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
          58 (1.96 % of base) : 189575.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          56 (21.88 % of base) : 148762.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          56 (19.72 % of base) : 148763.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          50 (2.60 % of base) : 55091.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
          44 (0.20 % of base) : 189956.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)
          40 (1.14 % of base) : 117523.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          38 (2.66 % of base) : 114386.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
          34 (2.20 % of base) : 147329.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          28 (2.90 % of base) : 237159.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          28 (1.77 % of base) : 141939.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (FullOpts)
          26 (0.97 % of base) : 119449.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          26 (0.43 % of base) : 113619.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateCallOrGet(Microsoft.CodeAnalysis.VisualBasic.BoundLateMemberAccess,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          22 (0.69 % of base) : 90843.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
          22 (1.32 % of base) : 244494.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
          22 (1.16 % of base) : 139960.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)

Top method improvements (bytes):
        -150 (-1.12 % of base) : 91201.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
         -92 (-4.76 % of base) : 28212.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -70 (-3.15 % of base) : 93797.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
         -70 (-0.92 % of base) : 192244.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
         -54 (-2.55 % of base) : 36715.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -52 (-7.41 % of base) : 170334.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
         -34 (-4.34 % of base) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -32 (-0.68 % of base) : 34986.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_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)
         -30 (-0.60 % of base) : 28266.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
         -26 (-2.97 % of base) : 249077.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
         -26 (-2.13 % of base) : 234639.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -24 (-0.67 % of base) : 118522.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         -22 (-0.76 % of base) : 118523.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         -20 (-1.77 % of base) : 34762.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
         -20 (-1.47 % of base) : 196586.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
         -20 (-1.67 % of base) : 141905.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
         -18 (-2.05 % of base) : 158795.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetDistance|11_2(System.String,System.String):int (FullOpts)
         -16 (-0.65 % of base) : 55991.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
         -16 (-0.90 % of base) : 91045.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -14 (-1.51 % of base) : 29040.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ApplyConvertedTypes(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method regressions (percentages):
          56 (21.88 % of base) : 148762.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          56 (19.72 % of base) : 148763.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
           6 (10.71 % of base) : 3166.dasm - System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
           6 (9.68 % of base) : 3156.dasm - System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
          68 (8.04 % of base) : 214071.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          68 (8.04 % of base) : 211751.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
         108 (7.21 % of base) : 119888.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)
          20 (5.43 % of base) : 129495.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
         160 (4.42 % of base) : 118524.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
          14 (4.40 % of base) : 245736.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
          16 (3.52 % of base) : 197955.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
          64 (2.96 % of base) : 62709.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
          28 (2.90 % of base) : 237159.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          38 (2.66 % of base) : 114386.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
          18 (2.64 % of base) : 189578.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          12 (2.62 % of base) : 113949.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
          50 (2.60 % of base) : 55091.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
          10 (2.29 % of base) : 190987.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (FullOpts)
          34 (2.20 % of base) : 147329.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          12 (2.15 % of base) : 138363.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteEnumMethod(System.Xml.Serialization.EnumMapping,System.Object):System.String:this (FullOpts)

Top method improvements (percentages):
          -6 (-9.68 % of base) : 3170.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-8.82 % of base) : 3160.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
         -52 (-7.41 % of base) : 170334.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
         -92 (-4.76 % of base) : 28212.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -34 (-4.34 % of base) : 33588.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -70 (-3.15 % of base) : 93797.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
         -26 (-2.97 % of base) : 249077.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
         -54 (-2.55 % of base) : 36715.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -26 (-2.13 % of base) : 234639.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -18 (-2.05 % of base) : 158795.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetDistance|11_2(System.String,System.String):int (FullOpts)
         -20 (-1.77 % of base) : 34762.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
          -4 (-1.69 % of base) : 234957.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
         -20 (-1.67 % of base) : 141905.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
         -14 (-1.51 % of base) : 29040.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ApplyConvertedTypes(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -10 (-1.48 % of base) : 212706.dasm - System.Reflection.TypeLoading.Ecma.EcmaMethodBody:get_ExceptionHandlingClauses():System.Collections.Generic.IList`1[System.Reflection.ExceptionHandlingClause]:this (FullOpts)
         -20 (-1.47 % of base) : 196586.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
         -12 (-1.46 % of base) : 234640.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -12 (-1.45 % of base) : 153735.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
        -150 (-1.12 % of base) : 91201.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
          -4 (-1.05 % of base) : 244319.dasm - System.Data.XMLDiffLoader:LoadDiffGram(System.Data.DataSet,System.Xml.XmlReader):this (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: 17138182 (overridden on cmd)
Total bytes of diff: 17136308 (overridden on cmd)
Total bytes of delta: -1874 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 1279.dasm (4.30 % of base)
          12 : 29169.dasm (0.54 % of base)
           4 : 14032.dasm (3.51 % of base)
           4 : 17012.dasm (3.51 % of base)
           4 : 12252.dasm (3.51 % of base)
           4 : 25692.dasm (3.51 % of base)
           4 : 27424.dasm (3.51 % of base)
           4 : 27964.dasm (3.51 % of base)
           4 : 28244.dasm (3.51 % of base)
           4 : 28340.dasm (3.51 % of base)
           4 : 29036.dasm (3.51 % of base)
           4 : 30127.dasm (3.51 % of base)
           4 : 31671.dasm (3.51 % of base)
           4 : 33363.dasm (3.51 % of base)
           4 : 4144.dasm (3.51 % of base)
           4 : 4700.dasm (3.51 % of base)
           4 : 5356.dasm (3.51 % of base)
           4 : 5504.dasm (3.51 % of base)
           4 : 5812.dasm (3.51 % of base)
           4 : 9564.dasm (3.51 % of base)

Top file improvements (bytes):
         -70 : 2562.dasm (-0.93 % of base)
         -24 : 9578.dasm (-4.46 % of base)
         -20 : 11190.dasm (-3.70 % of base)
         -20 : 12772.dasm (-3.70 % of base)
         -20 : 10437.dasm (-3.70 % of base)
         -20 : 17576.dasm (-3.70 % of base)
         -20 : 11875.dasm (-3.70 % of base)
         -20 : 13795.dasm (-3.70 % of base)
         -20 : 21945.dasm (-3.70 % of base)
         -20 : 24370.dasm (-3.70 % of base)
         -20 : 27487.dasm (-3.70 % of base)
         -20 : 29108.dasm (-3.70 % of base)
         -20 : 29279.dasm (-3.70 % of base)
         -20 : 4948.dasm (-3.70 % of base)
         -20 : 5163.dasm (-3.70 % of base)
         -20 : 5357.dasm (-3.70 % of base)
         -20 : 6667.dasm (-3.70 % of base)
         -18 : 5545.dasm (-3.41 % of base)
         -18 : 6581.dasm (-3.41 % of base)
         -18 : 7133.dasm (-3.41 % of base)

43 total files with Code Size differences (22 improved, 21 regressed), 20 unchanged.

Top method regressions (bytes):
          16 (4.30 % of base) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
          12 (0.54 % of base) : 29169.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
           4 (3.51 % of base) : 14032.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 17012.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 12252.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 25692.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 27424.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 27964.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 28244.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 30127.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 31671.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 33363.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 4144.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 4700.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5356.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5504.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5812.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 9564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)

Top method improvements (bytes):
         -70 (-0.93 % of base) : 2562.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (Tier0-FullOpts)
         -24 (-4.46 % of base) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 11190.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 12772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 17576.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 11875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 13795.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 21945.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 24370.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 27487.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 29108.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 29279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 4948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 5163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 6667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 5545.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 6581.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 7133.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)

Top method regressions (percentages):
          16 (4.30 % of base) : 1279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
           4 (3.51 % of base) : 14032.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 17012.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 12252.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 25692.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 27424.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 27964.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 28244.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 28340.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 29036.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 30127.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 31671.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 33363.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 4144.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 4700.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5356.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5504.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 5812.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 9564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (3.51 % of base) : 11660.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)

Top method improvements (percentages):
         -24 (-4.46 % of base) : 9578.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 11190.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 12772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 10437.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 17576.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 11875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 13795.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 21945.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 24370.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 27487.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 29108.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 29279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 4948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 5163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 5357.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -20 (-3.70 % of base) : 6667.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 5545.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 6581.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 7133.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         -18 (-3.41 % of base) : 9277.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):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: 93850820 (overridden on cmd)
Total bytes of diff: 93852186 (overridden on cmd)
Total bytes of delta: 1366 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         104 : 278622.dasm (3.61 % of base)
         102 : 282989.dasm (5.88 % of base)
          68 : 184934.dasm (8.04 % of base)
          68 : 275460.dasm (4.66 % of base)
          66 : 292599.dasm (5.23 % of base)
          62 : 278814.dasm (4.53 % of base)
          60 : 275554.dasm (3.99 % of base)
          60 : 292265.dasm (4.46 % of base)
          60 : 292695.dasm (5.31 % of base)
          58 : 292683.dasm (3.39 % of base)
          58 : 58518.dasm (1.99 % of base)
          56 : 275451.dasm (3.84 % of base)
          56 : 275452.dasm (3.84 % of base)
          56 : 275555.dasm (2.86 % of base)
          56 : 101742.dasm (19.72 % of base)
          56 : 197519.dasm (21.88 % of base)
          56 : 292255.dasm (2.40 % of base)
          56 : 275440.dasm (3.84 % of base)
          56 : 275442.dasm (3.84 % of base)
          56 : 275446.dasm (3.84 % of base)

Top file improvements (bytes):
         -90 : 56578.dasm (-4.70 % of base)
         -86 : 120801.dasm (-1.61 % of base)
         -80 : 282908.dasm (-1.73 % of base)
         -78 : 5265.dasm (-7.88 % of base)
         -76 : 273004.dasm (-4.74 % of base)
         -70 : 24689.dasm (-0.92 % of base)
         -62 : 275579.dasm (-4.34 % of base)
         -62 : 282716.dasm (-5.51 % of base)
         -58 : 270244.dasm (-2.73 % of base)
         -56 : 273003.dasm (-3.50 % of base)
         -52 : 194615.dasm (-7.41 % of base)
         -52 : 59754.dasm (-0.23 % of base)
         -50 : 275583.dasm (-1.81 % of base)
         -48 : 275419.dasm (-1.86 % of base)
         -42 : 54544.dasm (-0.83 % of base)
         -38 : 275392.dasm (-2.91 % of base)
         -38 : 276924.dasm (-1.93 % of base)
         -34 : 23961.dasm (-4.34 % of base)
         -34 : 50473.dasm (-0.66 % of base)
         -32 : 5268.dasm (-0.84 % of base)

62 total files with Code Size differences (30 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
         104 (3.61 % of base) : 278622.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1548_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         102 (5.88 % of base) : 282989.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29170_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          68 (8.04 % of base) : 184934.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          68 (4.66 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          66 (5.23 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          62 (4.53 % of base) : 278814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          60 (4.46 % of base) : 292265.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          60 (5.31 % of base) : 292695.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33036_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          60 (3.99 % of base) : 275554.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex947_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          58 (1.99 % of base) : 58518.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
          58 (3.39 % of base) : 292683.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33019_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (21.88 % of base) : 197519.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          56 (19.72 % of base) : 101742.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          56 (2.40 % of base) : 292255.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31439_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275440.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex861_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275442.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex862_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275446.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex864_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275448.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex865_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275451.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex866_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          56 (3.84 % of base) : 275452.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex867_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
         -90 (-4.70 % of base) : 56578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -86 (-1.61 % of base) : 120801.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -80 (-1.73 % of base) : 282908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29113_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -78 (-7.88 % of base) : 5265.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)
         -76 (-4.74 % of base) : 273004.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex433_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -70 (-0.92 % of base) : 24689.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
         -62 (-4.34 % of base) : 275579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1107_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -62 (-5.51 % of base) : 282716.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28820_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-2.73 % of base) : 270244.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -56 (-3.50 % of base) : 273003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex432_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -52 (-0.23 % of base) : 59754.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)
         -52 (-7.41 % of base) : 194615.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
         -50 (-1.81 % of base) : 275583.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1120_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -48 (-1.86 % of base) : 275419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex836_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -42 (-0.83 % of base) : 54544.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+VisitResult],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+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
         -38 (-1.93 % of base) : 276924.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1334_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-2.91 % of base) : 275392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -34 (-4.34 % of base) : 23961.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -34 (-0.66 % of base) : 50473.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)
         -32 (-0.84 % of base) : 5268.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)

Top method regressions (percentages):
          56 (21.88 % of base) : 197519.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          56 (19.72 % of base) : 101742.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          12 (12.50 % of base) : 143672.dasm - System.SpanHelpers:LastIndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
           6 (10.71 % of base) : 142731.dasm - System.SpanHelpers:LastIndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
           6 (10.71 % of base) : 145297.dasm - System.SpanHelpers:LastIndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
          10 (9.80 % of base) : 143670.dasm - System.SpanHelpers:IndexOfAnyInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
           6 (9.68 % of base) : 142728.dasm - System.SpanHelpers:IndexOfAnyInRange[int](byref,int,int,int):int (FullOpts)
           6 (9.68 % of base) : 145292.dasm - System.SpanHelpers:IndexOfAnyInRange[uint](byref,uint,uint,int):int (FullOpts)
          68 (8.04 % of base) : 184934.dasm - System.DefaultBinder:FindMostSpecific(System.Reflection.ParameterInfo[],int[],System.Type,System.Reflection.ParameterInfo[],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
         102 (5.88 % of base) : 282989.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29170_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (5.43 % of base) : 91195.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          60 (5.31 % of base) : 292695.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33036_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          66 (5.23 % of base) : 292599.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32727_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          40 (4.89 % of base) : 305724.dasm - System.Transactions.Tests.LTMEnlistmentTests:SinglePhaseDurable(int,int,int,int,ubyte,int,int):this (FullOpts)
          68 (4.66 % of base) : 275460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          62 (4.53 % of base) : 278814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          60 (4.46 % of base) : 292265.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          14 (4.40 % of base) : 90534.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
          46 (4.22 % of base) : 292574.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32649_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          24 (4.14 % of base) : 60426.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:UnpackArguments(System.Dynamic.DynamicMetaObject[],System.Dynamic.CallInfo,byref,byref,byref) (FullOpts)

Top method improvements (percentages):
         -14 (-12.73 % of base) : 143677.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
          -6 (-9.68 % of base) : 142735.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-9.68 % of base) : 145301.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
         -10 (-8.93 % of base) : 143675.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
          -6 (-8.82 % of base) : 142733.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-8.82 % of base) : 145299.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
         -78 (-7.88 % of base) : 5265.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)
         -52 (-7.41 % of base) : 194615.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteRectangle(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,int,int[],System.Array,System.Runtime.Serialization.Formatters.Binary.NameInfo,int[]):this (FullOpts)
         -62 (-5.51 % of base) : 282716.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28820_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -76 (-4.74 % of base) : 273004.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex433_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -90 (-4.70 % of base) : 56578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -34 (-4.34 % of base) : 23961.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -62 (-4.34 % of base) : 275579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1107_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-3.50 % of base) : 273003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex432_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-3.34 % of base) : 76015.dasm - System.Linq.OrderedEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray(int,int):System.ValueTuple`2[System.__Canon,System.__Canon][]:this (FullOpts)
         -26 (-2.97 % of base) : 96213.dasm - System.Data.Common.DbEnumerator:BuildSchemaInfo():this (FullOpts)
         -38 (-2.91 % of base) : 275392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -58 (-2.73 % of base) : 270244.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -16 (-2.05 % of base) : 145972.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerMany_Byte() (FullOpts)
         -16 (-2.03 % of base) : 145514.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerIndexOfAny_ManyInteger() (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: 13596898 (overridden on cmd)
Total bytes of diff: 13596682 (overridden on cmd)
Total bytes of delta: -216 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         102 : 25398.dasm (2.24 % of base)
          62 : 23405.dasm (7.18 % of base)
          54 : 13198.dasm (8.46 % of base)
          50 : 33564.dasm (2.63 % of base)
          44 : 3929.dasm (0.51 % of base)
          28 : 21321.dasm (3.27 % of base)
          20 : 6037.dasm (2.64 % of base)
          20 : 32802.dasm (0.66 % of base)
          20 : 7002.dasm (2.82 % of base)
          18 : 18649.dasm (4.15 % of base)
          12 : 24674.dasm (0.51 % of base)
           8 : 26327.dasm (1.50 % of base)
           8 : 18573.dasm (0.57 % of base)
           6 : 19034.dasm (0.70 % of base)
           6 : 18169.dasm (0.23 % of base)
           6 : 24846.dasm (0.24 % of base)
           6 : 31629.dasm (0.32 % of base)
           6 : 31842.dasm (0.89 % of base)
           4 : 16840.dasm (0.37 % of base)
           4 : 37582.dasm (0.87 % of base)

Top file improvements (bytes):
        -174 : 6831.dasm (-0.20 % of base)
         -96 : 11910.dasm (-2.15 % of base)
         -90 : 30055.dasm (-4.70 % of base)
         -78 : 23053.dasm (-7.88 % of base)
         -32 : 24275.dasm (-0.69 % of base)
         -32 : 23054.dasm (-0.84 % of base)
         -26 : 30294.dasm (-0.58 % of base)
         -24 : 34381.dasm (-2.80 % of base)
         -24 : 34384.dasm (-2.80 % of base)
         -24 : 34385.dasm (-2.80 % of base)
         -18 : 27144.dasm (-1.25 % of base)
         -14 : 34331.dasm (-0.37 % of base)
         -12 : 37591.dasm (-1.46 % of base)
         -12 : 23099.dasm (-0.66 % of base)
         -10 : 16521.dasm (-0.80 % of base)
          -8 : 27165.dasm (-0.19 % of base)
          -6 : 2706.dasm (-1.59 % of base)
          -6 : 29087.dasm (-0.21 % of base)
          -6 : 24256.dasm (-0.39 % of base)
          -4 : 731.dasm (-1.06 % of base)

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

Top method regressions (bytes):
         102 (2.24 % of base) : 25398.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
          62 (7.18 % of base) : 23405.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          54 (8.46 % of base) : 13198.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
          50 (2.63 % of base) : 33564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
          44 (0.51 % of base) : 3929.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)
          28 (3.27 % of base) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          20 (2.64 % of base) : 6037.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
          20 (2.82 % of base) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
          20 (0.66 % of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          18 (4.15 % of base) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
          12 (0.51 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
           8 (1.50 % of base) : 26327.dasm - Microsoft.CodeAnalysis.CSharp.Binder:RemoveInvalidConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax],ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause (FullOpts)
           8 (0.57 % of base) : 18573.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
           6 (0.32 % of base) : 31629.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
           6 (0.89 % of base) : 31842.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
           6 (0.24 % of base) : 24846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           6 (0.23 % of base) : 18169.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
           6 (0.70 % of base) : 19034.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
           4 (0.50 % of base) : 18629.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
           4 (0.37 % of base) : 16840.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)

Top method improvements (bytes):
        -174 (-0.20 % of base) : 6831.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
         -96 (-2.15 % of base) : 11910.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
         -90 (-4.70 % of base) : 30055.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -78 (-7.88 % of base) : 23053.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)
         -32 (-0.84 % of base) : 23054.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)
         -32 (-0.69 % of base) : 24275.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_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 (-0.58 % of base) : 30294.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
         -24 (-2.80 % of base) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-2.80 % of base) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-2.80 % of base) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -18 (-1.25 % of base) : 27144.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInExpandedForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (FullOpts)
         -14 (-0.37 % of base) : 34331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -12 (-0.66 % of base) : 23099.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)
         -12 (-1.46 % of base) : 37591.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -10 (-0.80 % of base) : 16521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
          -8 (-0.19 % of base) : 27165.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          -6 (-0.21 % of base) : 29087.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
          -6 (-0.39 % of base) : 24256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
          -6 (-1.59 % of base) : 2706.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
          -4 (-0.14 % of base) : 32025.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)

Top method regressions (percentages):
          54 (8.46 % of base) : 13198.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
          62 (7.18 % of base) : 23405.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          18 (4.15 % of base) : 18649.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
          28 (3.27 % of base) : 21321.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          20 (2.82 % of base) : 7002.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
          20 (2.64 % of base) : 6037.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
          50 (2.63 % of base) : 33564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
         102 (2.24 % of base) : 25398.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
           8 (1.50 % of base) : 26327.dasm - Microsoft.CodeAnalysis.CSharp.Binder:RemoveInvalidConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax],ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause (FullOpts)
           6 (0.89 % of base) : 31842.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
           4 (0.87 % of base) : 37582.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
           6 (0.70 % of base) : 19034.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
          20 (0.66 % of base) : 32802.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
           8 (0.57 % of base) : 18573.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
          12 (0.51 % of base) : 24674.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
          44 (0.51 % of base) : 3929.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)
           4 (0.50 % of base) : 18629.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
           4 (0.37 % of base) : 16840.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
           6 (0.32 % of base) : 31629.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
           6 (0.24 % of base) : 24846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

Top method improvements (percentages):
         -78 (-7.88 % of base) : 23053.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)
         -90 (-4.70 % of base) : 30055.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -24 (-2.80 % of base) : 34381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-2.80 % of base) : 34384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex8_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -24 (-2.80 % of base) : 34385.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex9_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -96 (-2.15 % of base) : 11910.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
          -6 (-1.59 % of base) : 2706.dasm - System.Globalization.CompareInfo:EndsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
         -12 (-1.46 % of base) : 37591.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -18 (-1.25 % of base) : 27144.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInExpandedForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters (FullOpts)
          -4 (-1.06 % of base) : 731.dasm - System.Globalization.CompareInfo:StartsWithOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,uint):ubyte:this (FullOpts)
         -32 (-0.84 % of base) : 23054.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)
         -10 (-0.80 % of base) : 16521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         -32 (-0.69 % of base) : 24275.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_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)
         -12 (-0.66 % of base) : 23099.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)
         -26 (-0.58 % of base) : 30294.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
          -6 (-0.39 % of base) : 24256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
         -14 (-0.37 % of base) : 34331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -2 (-0.28 % of base) : 8693.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
          -2 (-0.28 % of base) : 3223.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
          -2 (-0.27 % of base) : 8668.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)



windows x86

Diffs are based on 1,618,548 contexts (327,626 MinOpts, 1,290,922 FullOpts).

MISSED contexts: base: 11,019 (0.68%), diff: 11,173 (0.69%)

Overall (+13,886 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 11,103,861 +238
benchmarks.run_pgo.windows.x86.checked.mch 31,808,217 +711
benchmarks.run_tiered.windows.x86.checked.mch 13,978,666 +134
coreclr_tests.run.windows.x86.checked.mch 215,097,885 +9,143
libraries.crossgen2.windows.x86.checked.mch 35,715,688 +716
libraries.pmi.windows.x86.checked.mch 50,205,777 +942
libraries_tests.run.windows.x86.Release.mch 14,786,707 +442
librariestestsnotieredcompilation.run.windows.x86.Release.mch 107,805,173 +1,341
realworld.run.windows.x86.checked.mch 11,475,105 +219

FullOpts (+13,886 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 11,103,383 +238
benchmarks.run_pgo.windows.x86.checked.mch 25,686,269 +711
benchmarks.run_tiered.windows.x86.checked.mch 7,124,029 +134
coreclr_tests.run.windows.x86.checked.mch 92,836,861 +9,143
libraries.crossgen2.windows.x86.checked.mch 35,714,628 +716
libraries.pmi.windows.x86.checked.mch 50,110,544 +942
libraries_tests.run.windows.x86.Release.mch 9,296,512 +442
librariestestsnotieredcompilation.run.windows.x86.Release.mch 98,852,400 +1,341
realworld.run.windows.x86.checked.mch 11,179,391 +219

Example diffs

benchmarks.run.windows.x86.checked.mch

-17 (-4.75%) : 24521.dasm - ProtoBuf.Internal.DynamicStub:g_ResolveProxies|91(System.Type):System.Type (FullOpts)

@@ -8,38 +8,38 @@ ; 0 inlinees with PGO data; 22 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 8, 5.50) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T04] ( 8, 7.25) ref -> esi class-hnd single-def <System.Type>
; V01 loc0 [V01,T12] ( 3, 1.50) ref -> eax class-hnd exact single-def <System.String> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 loc2 [V03,T08] ( 3, 5 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 loc2 [V03,T09] ( 3, 5 ) ref -> [ebp-0x1C] class-hnd single-def <<unknown class>>
; V04 loc3 [V04,T03] ( 5, 16.50) int -> [ebp-0x10] ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
-; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x1C] class-hnd exact <System.String>
+; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x20] class-hnd exact <System.String>
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp1 [V08,T04] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V08 tmp1 [V08,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V14 tmp7 [V14,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V14 tmp7 [V14,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V20 tmp13 [V20,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V20 tmp13 [V20,T07] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp18 [V25,T11] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V25 tmp18 [V25,T08] ( 2, 5.50) ref -> eax single-def "Single return block return value"
; V26 tmp19 [V26,T01] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V27 cse0 [V27,T02] ( 9, 18 ) int -> edi multi-def "CSE - aggressive" -; V28 cse1 [V28,T09] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate" -; V29 cse2 [V29,T10] ( 5, 2.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V27 cse0 [V27,T02] ( 9, 18 ) int -> registers multi-def "CSE - aggressive" +; V28 cse1 [V28,T10] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate" +; V29 cse2 [V29,T11] ( 5, 4.25) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +47,7 @@ G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -82,14 +82,14 @@ G_M1535_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 test eax, eax je SHORT G_M1535_IG05 ;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M1535_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M1535_IG04: ; bbWeight=2.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x58] call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] +[eax]
- jmp G_M1535_IG19 - ;; size=13 bbWeight=0.50 PerfScore 3.62
+ jmp G_M1535_IG17 + ;; size=13 bbWeight=2.25 PerfScore 16.31
G_M1535_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] +[esi] mov ecx, esi @@ -117,22 +117,25 @@ G_M1535_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000 mov edi, eax ; gcrRegs +[edi] cmp edi, 0xD1FFAB1E
- je G_M1535_IG18
+ je G_M1535_IG16
;; size=29 bbWeight=4 PerfScore 46.00 G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
+ mov gword ptr [ebp-0x1C], ebx + ; GC ptr vars +{V03}
mov ecx, edi ; gcrRegs +[ecx] mov edi, dword ptr [ebp-0x18] ; gcrRegs -[edi] test ecx, ecx je SHORT G_M1535_IG08
- mov edi, dword ptr [ecx+0x04] - cmp edi, 33 - jne G_M1535_IG17 - add edi, edi - push edi - mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04] + ; gcrRegs -[ebx] + cmp ebx, 33 + jne SHORT G_M1535_IG08 + add ebx, ebx + push ebx + mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06} add ecx, 8 ; gcrRegs -[ecx] @@ -142,25 +145,24 @@ G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne SHORT G_M1535_IG04
- ;; size=51 bbWeight=2 PerfScore 29.50 -G_M1535_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=2 PerfScore 29.50 +G_M1535_IG08: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V06} cmp ecx, 0xD1FFAB1E je SHORT G_M1535_IG04 ;; size=8 bbWeight=4 PerfScore 5.00
-G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG09: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx je SHORT G_M1535_IG10
- mov edi, dword ptr [ecx+0x04] - cmp edi, 36 - jne SHORT G_M1535_IG16 - add edi, edi - push edi - mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04] + cmp ebx, 36 + jne SHORT G_M1535_IG10 + add ebx, ebx + push ebx + mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06} add ecx, 8 ; gcrRegs -[ecx] @@ -170,17 +172,18 @@ G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0 call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=46 bbWeight=2 PerfScore 27.00 -G_M1535_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=43 bbWeight=2 PerfScore 25.00 +G_M1535_IG10: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V06} cmp ecx, 0xD1FFAB1E je G_M1535_IG04 ;; size=12 bbWeight=4 PerfScore 5.00
-G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG11: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx]
test ecx, ecx je SHORT G_M1535_IG12 mov edi, dword ptr [ecx+0x04] @@ -193,12 +196,13 @@ G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0 ; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx]
+ ; GC ptr vars -{V03}
call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax mov edi, dword ptr [ebp-0x18] jne G_M1535_IG04
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=43 bbWeight=2 PerfScore 25.00
G_M1535_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x10] inc eax @@ -225,21 +229,12 @@ G_M1535_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000048 {ebx e mov edi, dword ptr [ebp-0x18] jmp SHORT G_M1535_IG12 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG16: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - mov edi, dword ptr [ebp-0x18] - jmp SHORT G_M1535_IG10 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M1535_IG17: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x18] - jmp G_M1535_IG08 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M1535_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx ebx]
+G_M1535_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
mov edi, dword ptr [ebp-0x18] jmp G_M1535_IG04 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M1535_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] +[eax] lea esp, [ebp-0x0C] pop ebx @@ -249,6 +244,6 @@ G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000 ret ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 358, prolog size 9, PerfScore 197.62, instruction count 124, allocated bytes for code 358 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
+; Total bytes of code 341, prolog size 9, PerfScore 204.31, instruction count 120, allocated bytes for code 341 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
; ============================================================

-7 (-2.37%) : 8561.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)

@@ -7,22 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> -; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10] -; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> +; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> +; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10] +; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def -; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx -; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect" -; TEMP_02 int -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def +; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx +; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>> +; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr" +; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect" +; TEMP_02 int -> [ebp-0x18] +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - mov gword ptr [ebp-0x14], ecx - ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [ebp+0x0C] mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75 -G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75 +G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx]
test ebx, ebx jne SHORT G_M57627_IG05 ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E ; gcrRegs +[eax] ;; size=5 bbWeight=0.50 PerfScore 0.12 @@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi] - ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A3D75] cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx shl eax, 7
- mov dword ptr [ebp-0x20], eax - movzx eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax + movzx eax, dword ptr [ebp-0x18] + xor eax, dword ptr [ebp-0x1C]
add edx, eax mov dword ptr [ebp+0x08], ebx lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01] - cmp ecx, eax - jge SHORT G_M57627_IG10 - ;; size=56 bbWeight=0.50 PerfScore 8.38 -G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ebx, ecx - or ebx, eax - jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01] + cmp ebx, eax + jge SHORT G_M57627_IG11 + ;; size=59 bbWeight=0.50 PerfScore 8.88 +G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, ebx + or edi, eax + jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax jl SHORT G_M57627_IG09 ;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + movzx edi, word ptr [esi+2*ebx+0x08] + mov eax, edx + shl eax, 7 + xor eax, edi + add edx, eax + inc ebx + mov eax, dword ptr [ebp-0x14] + cmp ebx, eax + jl SHORT G_M57627_IG07 + ;; size=22 bbWeight=3.96 PerfScore 22.77 +G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M57627_IG11 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x14] + ;; size=3 bbWeight=0.12 PerfScore 0.12 +G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, dword ptr [esi+0x04] + jae G_M57627_IG19 + movzx edi, word ptr [esi+2*ebx+0x08] + mov dword ptr [ebp-0x1C], edi
mov edi, edx shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi + movzx edi, dword ptr [ebp-0x1C] + xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG07 - ;; size=19 bbWeight=3.96 PerfScore 18.81 -G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57627_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [esi+0x04] - jae G_M57627_IG18 - movzx ebx, word ptr [esi+2*ecx+0x08] - mov dword ptr [ebp-0x20], ebx - mov ebx, edx - shl ebx, 7 - mov dword ptr [ebp-0x1C], ebx - movzx ebx, dword ptr [ebp-0x20] - xor ebx, dword ptr [ebp-0x1C] - add edx, ebx - inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG09
+ inc ebx + cmp ebx, eax + jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, edx - sar ecx, 17 - sub edx, ecx - mov ecx, edx - sar ecx, 11 - sub edx, ecx - mov ecx, edx - sar ecx, 5 - sub edx, ecx - mov ecx, gword ptr [ebp-0x14] - ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov eax, edx + sar eax, 17 + sub edx, eax + mov eax, edx + sar eax, 11 + sub edx, eax + mov eax, edx + sar eax, 5 + sub edx, eax
mov eax, edx and eax, dword ptr [ecx+0x0C] mov ecx, gword ptr [ecx+0x04] cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18 - mov eax, gword ptr [ecx+4*eax+0x08] - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M57627_IG14 - ;; size=45 bbWeight=0.50 PerfScore 8.25 -G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19 + mov ebx, gword ptr [ecx+4*eax+0x08] + ; gcrRegs +[ebx] + test ebx, ebx + je SHORT G_M57627_IG15 + ;; size=42 bbWeight=1.98 PerfScore 30.69 +G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx - jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx + jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x18], eax - ; GC ptr vars +{V09} - mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx] mov edi, dword ptr [ebp+0x0C] push edi
- mov ebx, dword ptr [ebp+0x08] - push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi ; gcrRegs +[edx] call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx - mov eax, gword ptr [ebp-0x18] - ; gcrRegs +[eax] - jne SHORT G_M57627_IG16 - ;; size=35 bbWeight=2 PerfScore 29.00 -G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V09} - mov eax, gword ptr [eax+0x08] - test eax, eax
+ jne SHORT G_M57627_IG17 + ;; size=25 bbWeight=2 PerfScore 21.00 +G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebx+0x08] + test ebx, ebx
...

-7 (-2.37%) : 17971.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)

@@ -7,22 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> -; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10] -; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> +; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> +; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10] +; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def -; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx -; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect" -; TEMP_02 int -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def +; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx +; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>> +; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr" +; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect" +; TEMP_02 int -> [ebp-0x18] +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - mov gword ptr [ebp-0x14], ecx - ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [ebp+0x0C] mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75 -G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75 +G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx]
test ebx, ebx jne SHORT G_M57627_IG05 ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E ; gcrRegs +[eax] ;; size=5 bbWeight=0.50 PerfScore 0.12 @@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi] - ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000AAD27] cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx shl eax, 7
- mov dword ptr [ebp-0x20], eax - movzx eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax + movzx eax, dword ptr [ebp-0x18] + xor eax, dword ptr [ebp-0x1C]
add edx, eax mov dword ptr [ebp+0x08], ebx lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01] - cmp ecx, eax - jge SHORT G_M57627_IG10 - ;; size=56 bbWeight=0.50 PerfScore 8.38 -G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ebx, ecx - or ebx, eax - jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01] + cmp ebx, eax + jge SHORT G_M57627_IG11 + ;; size=59 bbWeight=0.50 PerfScore 8.88 +G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, ebx + or edi, eax + jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax jl SHORT G_M57627_IG09 ;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + movzx edi, word ptr [esi+2*ebx+0x08] + mov eax, edx + shl eax, 7 + xor eax, edi + add edx, eax + inc ebx + mov eax, dword ptr [ebp-0x14] + cmp ebx, eax + jl SHORT G_M57627_IG07 + ;; size=22 bbWeight=3.96 PerfScore 22.77 +G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M57627_IG11 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x14] + ;; size=3 bbWeight=0.12 PerfScore 0.12 +G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, dword ptr [esi+0x04] + jae G_M57627_IG19 + movzx edi, word ptr [esi+2*ebx+0x08] + mov dword ptr [ebp-0x1C], edi
mov edi, edx shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi + movzx edi, dword ptr [ebp-0x1C] + xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG07 - ;; size=19 bbWeight=3.96 PerfScore 18.81 -G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57627_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [esi+0x04] - jae G_M57627_IG18 - movzx ebx, word ptr [esi+2*ecx+0x08] - mov dword ptr [ebp-0x20], ebx - mov ebx, edx - shl ebx, 7 - mov dword ptr [ebp-0x1C], ebx - movzx ebx, dword ptr [ebp-0x20] - xor ebx, dword ptr [ebp-0x1C] - add edx, ebx - inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG09
+ inc ebx + cmp ebx, eax + jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, edx - sar ecx, 17 - sub edx, ecx - mov ecx, edx - sar ecx, 11 - sub edx, ecx - mov ecx, edx - sar ecx, 5 - sub edx, ecx - mov ecx, gword ptr [ebp-0x14] - ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov eax, edx + sar eax, 17 + sub edx, eax + mov eax, edx + sar eax, 11 + sub edx, eax + mov eax, edx + sar eax, 5 + sub edx, eax
mov eax, edx and eax, dword ptr [ecx+0x0C] mov ecx, gword ptr [ecx+0x04] cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18 - mov eax, gword ptr [ecx+4*eax+0x08] - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M57627_IG14 - ;; size=45 bbWeight=0.50 PerfScore 8.25 -G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19 + mov ebx, gword ptr [ecx+4*eax+0x08] + ; gcrRegs +[ebx] + test ebx, ebx + je SHORT G_M57627_IG15 + ;; size=42 bbWeight=1.98 PerfScore 30.69 +G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx - jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx + jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x18], eax - ; GC ptr vars +{V09} - mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx] mov edi, dword ptr [ebp+0x0C] push edi
- mov ebx, dword ptr [ebp+0x08] - push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi ; gcrRegs +[edx] call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx - mov eax, gword ptr [ebp-0x18] - ; gcrRegs +[eax] - jne SHORT G_M57627_IG16 - ;; size=35 bbWeight=2 PerfScore 29.00 -G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V09} - mov eax, gword ptr [eax+0x08] - test eax, eax
+ jne SHORT G_M57627_IG17 + ;; size=25 bbWeight=2 PerfScore 21.00 +G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebx+0x08] + test ebx, ebx
...

+15 (+6.94%) : 21792.dasm - Sigil.Impl.LinqAlternative:_Orderint,int:System.Collections.Generic.IEnumerable`1int

@@ -9,16 +9,16 @@ ; ; V00 arg0 [V00,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]> ; V01 arg1 [V01,T04] ( 6, 10 ) ref -> esi class-hnd single-def <Sigil.Impl.SigilFunc`2[int,int]>
-; V02 arg2 [V02,T09] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]> -; V03 loc0 [V03,T05] ( 6, 7.50) ref -> edi class-hnd single-def <int[]> -; V04 loc1 [V04,T03] ( 11, 14 ) int -> ebx single-def -; V05 loc2 [V05,T06] ( 6, 6.54) ref -> [ebp-0x14] class-hnd exact spill-single-def <int[]> -; V06 loc3 [V06,T07] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]> -; V07 loc4 [V07,T00] ( 12, 21.04) int -> edx -; V08 loc5 [V08,T01] ( 12, 21.04) int -> [ebp-0x10]
+; V02 arg2 [V02,T09] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]> +; V03 loc0 [V03,T06] ( 6, 8.48) ref -> ebx class-hnd single-def <int[]> +; V04 loc1 [V04,T03] ( 11, 15.96) int -> [ebp-0x10] spill-single-def +; V05 loc2 [V05,T07] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]> +; V06 loc3 [V06,T05] ( 6, 8.50) ref -> [ebp-0x1C] class-hnd exact spill-single-def <int[]> +; V07 loc4 [V07,T01] ( 12, 21.04) int -> edx +; V08 loc5 [V08,T00] ( 12, 22.02) int -> [ebp-0x14]
; V09 tmp0 [V09,T02] ( 4, 16 ) int -> eax "Strict ordering of exceptions for Array store" ;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -26,7 +26,7 @@ G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -34,149 +34,155 @@ G_M31788_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 ; gcrRegs +[ecx] call [Sigil.Impl.LinqAlternative:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]] ; gcrRegs -[ecx] +[eax]
- mov edi, eax - ; gcrRegs +[edi] - mov ebx, dword ptr [edi+0x04] - mov edx, ebx - mov ecx, 0xD1FFAB1E ; int[] - call CORINFO_HELP_NEWARR_1_VC - mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V05} - xor edx, edx - test ebx, ebx - jle SHORT G_M31788_IG06 - ;; size=32 bbWeight=1 PerfScore 9.25 -G_M31788_IG03: ; bbWeight=0.50, gcVars=00000040 {V05}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - cmp dword ptr [eax+0x04], ebx - jl SHORT G_M31788_IG07 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [eax+4*edx+0x08], edx - inc edx - cmp edx, ebx - jl SHORT G_M31788_IG04 - ;; size=9 bbWeight=3.96 PerfScore 9.90 -G_M31788_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M31788_IG08 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M31788_IG08 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - cmp edx, dword ptr [eax+0x04] - jae G_M31788_IG18 - mov dword ptr [eax+4*edx+0x08], edx - inc edx - cmp edx, ebx - jl SHORT G_M31788_IG12 - ;; size=18 bbWeight=0.04 PerfScore 0.26 -G_M31788_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, eax + ; gcrRegs +[ebx] + mov eax, dword ptr [ebx+0x04]
; gcrRegs -[eax]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax + mov edx, eax
mov ecx, 0xD1FFAB1E ; int[] call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V05} + xor edx, edx + mov ecx, dword ptr [ebp-0x10] + test ecx, ecx + jle SHORT G_M31788_IG06 + ;; size=38 bbWeight=1 PerfScore 11.25 +G_M31788_IG03: ; bbWeight=0.50, gcVars=00000080 {V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp dword ptr [eax+0x04], ecx + jl SHORT G_M31788_IG07 + ;; size=5 bbWeight=0.50 PerfScore 2.00 +G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + mov dword ptr [eax+4*edx+0x08], edx + inc edx + cmp edx, ecx + jl SHORT G_M31788_IG04 + ;; size=9 bbWeight=3.96 PerfScore 9.90 +G_M31788_IG05: ; bbWeight=1.98, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M31788_IG08 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M31788_IG08 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + cmp edx, dword ptr [eax+0x04] + jae G_M31788_IG18 + mov dword ptr [eax+4*edx+0x08], edx + inc edx + cmp edx, ecx + jl SHORT G_M31788_IG12 + ;; size=18 bbWeight=0.04 PerfScore 0.26 +G_M31788_IG08: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + mov edx, ecx + mov ecx, 0xD1FFAB1E ; int[] + call CORINFO_HELP_NEWARR_1_VC + ; gcrRegs +[eax] + mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V06} xor ecx, ecx
- test ebx, ebx
+ mov edx, dword ptr [ebp-0x10] + test edx, edx
jle SHORT G_M31788_IG15
- ;; size=21 bbWeight=1 PerfScore 4.00 -G_M31788_IG09: ; bbWeight=0.50, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov edx, dword ptr [edi+0x04] - cmp dword ptr [eax+0x04], ebx
+ ;; size=24 bbWeight=1.98 PerfScore 9.90 +G_M31788_IG09: ; bbWeight=0.50, gcVars=000000A0 {V05 V06}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + mov edi, dword ptr [ebx+0x04] + cmp dword ptr [eax+0x04], edx
jl SHORT G_M31788_IG13 ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], ecx - mov edx, dword ptr [edi+4*ecx+0x08]
+ mov dword ptr [ebp-0x14], ecx + mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp-0x18] - ; gcrRegs +[ecx] - mov edx, dword ptr [ebp-0x10] - mov dword ptr [ecx+4*edx+0x08], eax
+ mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + mov edx, dword ptr [ebp-0x14] + mov dword ptr [edi+4*edx+0x08], eax
inc edx
- cmp edx, ebx
+ cmp edx, dword ptr [ebp-0x10]
mov ecx, edx
- ; gcrRegs -[ecx]
jl SHORT G_M31788_IG10
- ;; size=30 bbWeight=3.96 PerfScore 50.49 -G_M31788_IG11: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[esi] - mov eax, gword ptr [ebp-0x18]
+ ;; size=31 bbWeight=3.96 PerfScore 57.42 +G_M31788_IG11: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax] jmp SHORT G_M31788_IG15
- ;; size=5 bbWeight=1 PerfScore 3.00 -G_M31788_IG12: ; bbWeight=0.02, gcVars=00000040 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M31788_IG12: ; bbWeight=0.02, gcVars=00000080 {V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
- ; GC ptr vars -{V06} - mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V05 V06} + mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax] jmp SHORT G_M31788_IG07 ;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M31788_IG13: ; bbWeight=0.04, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M31788_IG13: ; bbWeight=0.04, gcVars=000000A0 {V05 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars +{V06 V07} - mov dword ptr [ebp-0x10], ecx - mov edx, dword ptr [edi+4*ecx+0x08]
+ ; GC ptr vars +{V05 V06} + mov dword ptr [ebp-0x14], ecx + mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10] - mov edx, gword ptr [ebp-0x18]
+ mov edi, dword ptr [ebp-0x14] + mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
+ cmp edi, dword ptr [edx+0x04]
jae SHORT G_M31788_IG18
- mov dword ptr [edx+4*ecx+0x08], eax - inc ecx - cmp ecx, ebx
+ mov dword ptr [edx+4*edi+0x08], eax + inc edi + mov eax, dword ptr [ebp-0x10] + cmp edi, eax + mov ecx, edi
jl SHORT G_M31788_IG17
- ;; size=33 bbWeight=0.04 PerfScore 0.66 -G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref
+ ;; size=38 bbWeight=0.04 PerfScore 0.71 +G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] mov eax, edx ; gcrRegs +[eax] ;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M31788_IG15: ; bbWeight=1, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M31788_IG15: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx] push eax ; gcr arg push 0 push gword ptr [ebp+0x08] ; gcr arg push 1
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- ; GC ptr vars -{V05 V06 V07}
+ ; GC ptr vars -{V05 V06}
call [Sigil.Impl.LinqAlternative:_QuickSort[int,int](int[],int[],int[],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int]]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 2
- ;; size=15 bbWeight=1 PerfScore 6.25 -G_M31788_IG16: ; bbWeight=1, epilog, nogc, extend
+ ;; size=15 bbWeight=1.98 PerfScore 12.38 +G_M31788_IG16: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi ...

+27 (+8.79%) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75 G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG10 inc ebx cmp ebx, esi jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG11 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG22 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG16 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG28 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG27 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG24 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG23
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG23 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG22 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} ...

+27 (+8.79%) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75 G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG10 inc ebx cmp ebx, esi jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG11 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG22 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG16 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG28 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG27 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG24 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG23
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG23 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG22 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} ...

benchmarks.run_pgo.windows.x86.checked.mch

-28 (-4.43%) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)

@@ -205,7 +205,7 @@ G_M8635_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {es mov edi, eax ; gcrRegs +[edi] test edi, edi
- je G_M8635_IG24
+ je G_M8635_IG26
xor ebx, ebx ; gcrRegs +[ebx] mov ecx, dword ptr [esi+0x10] @@ -216,21 +216,21 @@ G_M8635_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000 ; gcrRegs -[eax] inc dword ptr [esi+0x10] ;; size=3 bbWeight=4 PerfScore 12.00
-G_M8635_IG04: ; bbWeight=8, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG04: ; bbWeight=8, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, dword ptr [esi+0x10] cmp ecx, dword ptr [esi+0x24]
- jge G_M8635_IG18 - ;; size=12 bbWeight=8 PerfScore 48.00
+ jge SHORT G_M8635_IG07 + ;; size=8 bbWeight=8 PerfScore 48.00
G_M8635_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov ecx, dword ptr [esi+0x10] lea eax, bword ptr [esi+0x20] ; byrRegs +[eax] cmp ecx, dword ptr [eax+0x04]
- jae G_M8635_IG28
+ jae G_M8635_IG24
mov eax, bword ptr [eax] movzx ecx, word ptr [eax+2*ecx] cmp ecx, 256
- jb G_M8635_IG17
+ jb SHORT G_M8635_IG06
mov eax, ecx ; byrRegs -[eax] shr eax, 9 @@ -245,29 +245,68 @@ G_M8635_IG05: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000 movzx ecx, byte ptr [eax+ecx+D1FFAB1EH] cmp byte ptr [ecx+D1FFAB1EH], 0 jl SHORT G_M8635_IG03
- jmp G_M8635_IG18 - ;; size=92 bbWeight=1 PerfScore 26.75 -G_M8635_IG06: ; bbWeight=3.76, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ jmp SHORT G_M8635_IG07 + ;; size=85 bbWeight=1 PerfScore 26.75 +G_M8635_IG06: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz + test byte ptr [ecx+D1FFAB1EH], 128 + jne SHORT G_M8635_IG03 + ;; size=9 bbWeight=1 PerfScore 4.00 +G_M8635_IG07: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz + mov ecx, dword ptr [esi+0x10] + cmp ecx, dword ptr [esi+0x24] + jge SHORT G_M8635_IG12 + ;; size=8 bbWeight=1 PerfScore 6.00 +G_M8635_IG08: ; bbWeight=0.65, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref + mov ecx, dword ptr [esi+0x10] + lea eax, bword ptr [esi+0x20] + ; byrRegs +[eax] + cmp ecx, dword ptr [eax+0x04] + jae G_M8635_IG24 + mov eax, bword ptr [eax] + movzx ecx, word ptr [eax+2*ecx] + ;; size=21 bbWeight=0.65 PerfScore 6.86 +G_M8635_IG09: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref + ; byrRegs -[eax] + movzx ecx, cx + call [System.Reflection.TypeNameParser:CharToToken(ushort):int] + mov dword ptr [ebp-0x10], eax + test eax, eax + je G_M8635_IG21 + ;; size=20 bbWeight=1 PerfScore 5.50 +G_M8635_IG10: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[ebx] + cmp eax, 7 + jne SHORT G_M8635_IG14 + ;; size=5 bbWeight=0.94 PerfScore 1.18 +G_M8635_IG11: ; bbWeight=0.06, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref + jmp G_M8635_IG20 + ;; size=5 bbWeight=0.06 PerfScore 0.12 +G_M8635_IG12: ; bbWeight=0.35, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs +[ebx] + xor ecx, ecx + jmp SHORT G_M8635_IG09 + ;; size=4 bbWeight=0.35 PerfScore 0.78 +G_M8635_IG13: ; bbWeight=3.76, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[ebx] inc dword ptr [esi+0x10] ;; size=3 bbWeight=3.76 PerfScore 11.29
-G_M8635_IG07: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG14: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, dword ptr [esi+0x10] cmp ecx, dword ptr [esi+0x24]
- jge G_M8635_IG12
+ jge G_M8635_IG19
;; size=12 bbWeight=7.53 PerfScore 45.18
-G_M8635_IG08: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG15: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, dword ptr [esi+0x10] lea edx, bword ptr [esi+0x20] ; byrRegs +[edx] cmp ecx, dword ptr [edx+0x04]
- jae G_M8635_IG28
+ jae G_M8635_IG24
mov edx, bword ptr [edx] movzx ebx, word ptr [edx+2*ecx] cmp ebx, 256
- jb G_M8635_IG11
+ jb G_M8635_IG18
;; size=33 bbWeight=0.94 PerfScore 11.06
-G_M8635_IG09: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG16: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; byrRegs -[edx] push 4 mov ecx, 11 @@ -325,32 +364,32 @@ G_M8635_IG09: ; bbWeight=7.53, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov ecx, bword ptr [ebp-0x34] ; byrRegs +[ecx] cmp byte ptr [ecx+ebx], 0
- jl G_M8635_IG06
+ jl G_M8635_IG13
;; size=180 bbWeight=7.53 PerfScore 380.24
-G_M8635_IG10: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG17: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs -[ecx]
- jmp SHORT G_M8635_IG12
+ jmp SHORT G_M8635_IG19
;; size=2 bbWeight=0.94 PerfScore 1.88
-G_M8635_IG11: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M8635_IG18: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
test byte ptr [ebx+D1FFAB1EH], 128
- jne G_M8635_IG06
+ jne G_M8635_IG13
;; size=13 bbWeight=0.94 PerfScore 3.76
-G_M8635_IG12: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG19: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, dword ptr [esi+0x10] cmp ecx, dword ptr [esi+0x24]
- jge SHORT G_M8635_IG13
+ jge SHORT G_M8635_IG20
inc ecx mov dword ptr [esi+0x10], ecx ;; size=12 bbWeight=0.94 PerfScore 6.82
-G_M8635_IG13: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M8635_IG20: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ebp-0x10], 3
- jne G_M8635_IG29
+ jne SHORT G_M8635_IG25
mov ecx, esi ; byrRegs +[ecx] call [System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this] ; byrRegs -[ecx] test eax, eax
- je G_M8635_IG24
+ je SHORT G_M8635_IG26
mov ecx, esi ; byrRegs +[ecx] call [System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this] @@ -359,20 +398,20 @@ G_M8635_IG13: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=000000 mov ebx, eax ; gcrRegs +[ebx] test ebx, ebx
- je SHORT G_M8635_IG24
+ je SHORT G_M8635_IG26
mov ecx, esi ; byrRegs +[ecx] call [System.Reflection.TypeNameParser:get_Peek():int:this] ; gcrRegs -[eax] ; byrRegs -[ecx] test eax, eax
- jne SHORT G_M8635_IG26 - ;; size=52 bbWeight=0.94 PerfScore 15.76 -G_M8635_IG14: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M8635_IG28 + ;; size=44 bbWeight=0.94 PerfScore 15.76 +G_M8635_IG21: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M8635_IG27 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M8635_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M8635_IG29 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M8635_IG22: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
push ebx ; gcr arg push 0 mov ecx, edi @@ -384,7 +423,7 @@ G_M8635_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000 ; byrRegs -[edx esi] ; gcr arg pop 1 ;; size=11 bbWeight=1 PerfScore 4.50
-G_M8635_IG16: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M8635_IG23: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -392,54 +431,22 @@ G_M8635_IG16: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M8635_IG17: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[eax] +[ebx edi]
+G_M8635_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M8635_IG25: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; byrRegs +[esi]
- test byte ptr [ecx+D1FFAB1EH], 128 - jne G_M8635_IG03 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M8635_IG18: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz - mov ecx, dword ptr [esi+0x10] - cmp ecx, dword ptr [esi+0x24] - jge SHORT G_M8635_IG23 - ;; size=8 bbWeight=1 PerfScore 6.00 -G_M8635_IG19: ; bbWeight=0.65, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz - mov ecx, dword ptr [esi+0x10] - lea eax, bword ptr [esi+0x20] - ; byrRegs +[eax] - cmp ecx, dword ptr [eax+0x04] - jae SHORT G_M8635_IG28 - mov eax, bword ptr [eax] - movzx ecx, word ptr [eax+2*ecx] - ;; size=17 bbWeight=0.65 PerfScore 6.86 -G_M8635_IG20: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz - ; byrRegs -[eax] - movzx ecx, cx - call [System.Reflection.TypeNameParser:CharToToken(ushort):int] - mov dword ptr [ebp-0x10], eax - test eax, eax - je SHORT G_M8635_IG14 - ;; size=16 bbWeight=1 PerfScore 5.50 -G_M8635_IG21: ; bbWeight=0.94, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[ebx] - cmp eax, 7 - jne G_M8635_IG07 - ;; size=9 bbWeight=0.94 PerfScore 1.18 -G_M8635_IG22: ; bbWeight=0.06, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - jmp G_M8635_IG13 - ;; size=5 bbWeight=0.06 PerfScore 0.12 -G_M8635_IG23: ; bbWeight=0.35, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs +[ebx] - xor ecx, ecx - jmp SHORT G_M8635_IG20 - ;; size=4 bbWeight=0.35 PerfScore 0.78 -G_M8635_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx edi] - ; byrRegs -[esi]
+ mov ecx, esi + ; byrRegs +[ecx] + call [System.Reflection.TypeNameParser:ParseError():this]
...

-14 (-4.36%) : 29005.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,25 +5,25 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 5 ) byref -> esi this single-def
+; V00 this [V00,T02] ( 7, 6.48) byref -> esi this single-def
; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon> ; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon> ; V03 TypeCtx [V03,T14] ( 4, 1.60) int -> ecx single-def
-; V04 loc0 [V04,T08] ( 4, 3 ) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V04 loc0 [V04,T09] ( 4, 3 ) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V05 loc1 [V05,T15] ( 3, 1 ) int -> eax ; V06 loc2 [V06,T10] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T09] ( 4, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T06] ( 4, 4.48) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ; V10 tmp4 [V10,T04] ( 4, 5 ) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V11 tmp5 [V11,T07] ( 6, 3.02) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V11 tmp5 [V11,T08] ( 6, 3.02) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 18.52) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 10 ) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon> -; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp7 [V13,T01] ( 6, 10 ) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon> +; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
; V15 cse0 [V15,T03] ( 5, 5.25) int -> edi "CSE - aggressive" ; V16 rat0 [V16,T13] ( 3, 2 ) int -> edx "runtime lookup" ; V17 rat1 [V17,T11] ( 3, 2.80) int -> edx "fgMakeTemp is creating a new local variable" @@ -58,7 +58,7 @@ G_M35195_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 lea eax, [2*eax+0x02] mov edx, gword ptr [edx+0x04] cmp dword ptr [edx+0x04], eax
- jle G_M35195_IG22
+ jle G_M35195_IG20
;; size=25 bbWeight=0.50 PerfScore 4.75 G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs -[edx] @@ -106,9 +106,9 @@ G_M35195_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 mov ecx, gword ptr [esi] ; gcrRegs +[ecx] test ecx, ecx
- je G_M35195_IG20
mov gword ptr [ebp-0x18], edi ; GC ptr vars +{V01}
+ je SHORT G_M35195_IG12
mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] mov gword ptr [ebp-0x20], eax @@ -122,59 +122,65 @@ G_M35195_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 mov edi, dword ptr [eax+0x04] ; gcrRegs -[edi] test edi, edi
- jle SHORT G_M35195_IG13 - ;; size=59 bbWeight=0.50 PerfScore 9.88 -G_M35195_IG08: ; bbWeight=0.25, gcVars=000002B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ jle SHORT G_M35195_IG12 + ;; size=55 bbWeight=0.50 PerfScore 9.88 +G_M35195_IG08: ; bbWeight=0.25, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[ebx] test edx, edx
- je SHORT G_M35195_IG16
+ je SHORT G_M35195_IG13
cmp dword ptr [edx+0x04], edi jl SHORT G_M35195_IG16 ;; size=9 bbWeight=0.25 PerfScore 1.31
-G_M35195_IG09: ; bbWeight=3.96, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx
+G_M35195_IG09: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[edx] + mov edx, gword ptr [eax+4*ecx+0x08] + ; gcrRegs +[edx] + test edx, edx
je SHORT G_M35195_IG11 ;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M35195_IG10: ; bbWeight=1.98, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref
+G_M35195_IG10: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x24] + ; gcrRegs +[ebx]
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0 mov ecx, gword ptr [ebp-0x1C] ; gcrRegs +[ecx]
- mov edx, ebx
call [<unknown method>] ; gcrRegs -[ecx edx ebx] ; gcr arg pop 1 mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=24 bbWeight=1.98 PerfScore 18.31 -G_M35195_IG11: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=22 bbWeight=1.98 PerfScore 17.82 +G_M35195_IG11: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ecx cmp edi, ecx mov eax, gword ptr [ebp-0x20] ; gcrRegs +[eax] jg SHORT G_M35195_IG09 ;; size=8 bbWeight=3.96 PerfScore 9.90
-G_M35195_IG12: ; bbWeight=0.23, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V10 V11}
+G_M35195_IG12: ; bbWeight=1.98, gcVars=00000060 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs -[eax] + ; GC ptr vars -{V08 V10 V11} + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx] + mov edx, esi + ; byrRegs +[edx] + call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX + ; gcrRegs -[ebx] + ; byrRegs -[edx]
mov edi, gword ptr [ebp-0x18] ; gcrRegs +[edi]
- jmp SHORT G_M35195_IG20 - ;; size=5 bbWeight=0.23 PerfScore 0.69 -G_M35195_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG20 - ;; size=5 bbWeight=0.25 PerfScore 0.75
+ jmp G_M35195_IG04 + ;; size=18 bbWeight=1.98 PerfScore 10.39 +G_M35195_IG13: ; bbWeight=0.12, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[edi] +[eax edx] + ; GC ptr vars +{V04 V06 V08 V10 V11} + jmp SHORT G_M35195_IG16 + ;; size=2 bbWeight=0.12 PerfScore 0.25
G_M35195_IG14: ; bbWeight=0.50, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[edi] - ; GC ptr vars -{V08}
+ ; gcrRegs -[eax edx] + ; GC ptr vars -{V04 V06 V08 V10 V11}
mov edi, gword ptr [ebp-0x18] ; gcrRegs +[edi] mov edx, dword ptr [ecx+0x24] @@ -187,62 +193,46 @@ G_M35195_IG15: ; bbWeight=0.40, gcVars=00000000 {}, gcrefRegs=00000080 {e ; GC ptr vars -{V01} jmp G_M35195_IG07 ;; size=5 bbWeight=0.40 PerfScore 0.80
-G_M35195_IG16: ; bbWeight=0.04, gcVars=000002B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; GC ptr vars +{V01 V04 V05 V08 V09 V10 V11} - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx
+G_M35195_IG16: ; bbWeight=0.04, gcVars=00000170 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[edi] +[eax] + ; GC ptr vars +{V01 V04 V05 V06 V08 V10 V11} + mov edx, gword ptr [eax+4*ecx+0x08] + ; gcrRegs +[edx] + test edx, edx
je SHORT G_M35195_IG18 ;; size=8 bbWeight=0.04 PerfScore 0.13
-G_M35195_IG17: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG17: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M35195_IG21
+ mov ebx, gword ptr [ebp-0x24] + ; gcrRegs +[ebx] + cmp ecx, dword ptr [ebx+0x04] + jae SHORT G_M35195_IG19
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0 mov ecx, gword ptr [ebp-0x1C] ; gcrRegs +[ecx]
- mov edx, ebx
call [<unknown method>]
- ; gcrRegs -[ecx edx ebx]
+ ; gcrRegs -[ecx edx]
; gcr arg pop 1 mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=29 bbWeight=0.02 PerfScore 0.27 -G_M35195_IG18: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=27 bbWeight=0.02 PerfScore 0.26 +G_M35195_IG18: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[ebx]
inc ecx cmp edi, ecx mov eax, gword ptr [ebp-0x20] ; gcrRegs +[eax] jg SHORT G_M35195_IG16
- ;; size=8 bbWeight=0.04 PerfScore 0.10 -G_M35195_IG19: ; bbWeight=0.02, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[eax edx] - ; GC ptr vars -{V04 V05 V09 V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M35195_IG20: ; bbWeight=0.50, gcVars=00000200 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars -{V01} - mov ebx, gword ptr [ebp-0x1C] - ; gcrRegs +[ebx] - mov edx, esi - ; byrRegs +[edx] - ; GC ptr vars -{V08} - call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX - ; gcrRegs -[ebx] - ; byrRegs -[edx] - jmp G_M35195_IG04 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M35195_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edi]
+ jmp SHORT G_M35195_IG12 + ;; size=10 bbWeight=0.04 PerfScore 0.18 +G_M35195_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax]
; byrRegs -[esi]
+ ; GC ptr vars -{V01 V04 V05 V06 V08 V10 V11}
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35195_IG22: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M35195_IG20: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
; gcrRegs +[edi] ; byrRegs +[esi] push ecx @@ -254,6 +244,6 @@ G_M35195_IG22: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 jmp G_M35195_IG04 ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 321, prolog size 23, PerfScore 92.93, instruction count 109, allocated bytes for code 321 (MethodHash=f0c57684) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
+; Total bytes of code 307, prolog size 23, PerfScore 99.57, instruction count 105, allocated bytes for code 307 (MethodHash=f0c57684) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
; ============================================================

-11 (-3.53%) : 38457.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,26 +5,26 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 7, 6 ) byref -> [ebp-0x18] this single-def -; V01 arg1 [V01,T09] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 8.96) byref -> esi this single-def +; V01 arg1 [V01,T09] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon> ; V03 TypeCtx [V03,T13] ( 4, 2.20) int -> ecx single-def ; V04 loc0 [V04,T14] ( 4, 2 ) ref -> ebx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ; V05 loc1 [V05,T16] ( 3, 0 ) int -> edx ; V06 loc2 [V06,T07] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T06] ( 4, 6 ) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 8.96) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T03] ( 4, 10.00) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V11 tmp5 [V11,T05] ( 6, 6.04) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 10.00) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V11 tmp5 [V11,T06] ( 6, 6.04) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 37.04) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 20.00) ref -> esi class-hnd "Inline stloc first use temp" <System.__Canon>
+; V13 tmp7 [V13,T01] ( 6, 20.00) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon>
; V14 tmp8 [V14,T12] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V15 cse0 [V15,T02] ( 5, 10.50) int -> edi "CSE - aggressive"
+; V15 cse0 [V15,T03] ( 5, 10.50) int -> edi "CSE - aggressive"
; V16 rat0 [V16,T11] ( 3, 4 ) int -> edx "runtime lookup" ; V17 rat1 [V17,T08] ( 3, 5.60) int -> edx "fgMakeTemp is creating a new local variable" ; @@ -39,7 +39,7 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} sub esp, 24 mov eax, dword ptr [ebp+0x08] mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x1C], edx
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V01} mov esi, ecx ; byrRegs +[esi] @@ -49,26 +49,18 @@ G_M35195_IG02: ; bbWeight=1, gcVars=00000200 {V01}, gcrefRegs=00000000 {} mov ebx, gword ptr [esi] ; gcrRegs +[ebx] test ebx, ebx
- jne G_M35195_IG21 - mov edi, gword ptr [ebp-0x1C]
+ jne G_M35195_IG20 + mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi] mov edx, dword ptr [ecx+0x24] mov edx, dword ptr [edx] mov edx, dword ptr [edx+0x0C] test edx, edx
- je SHORT G_M35195_IG04
+ je SHORT G_M35195_IG11
;; size=25 bbWeight=1 PerfScore 11.50
-G_M35195_IG03: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M35195_IG03: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[ebx] ; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M35195_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov edx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - mov edx, eax - ;; size=12 bbWeight=0.20 PerfScore 0.30 -G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
mov ecx, edx call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -79,14 +71,13 @@ G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, 7 call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this] ; gcrRegs -[eax ecx]
- mov bword ptr [ebp-0x18], esi - ; GC ptr vars +{V00}
+ mov gword ptr [ebp-0x1C], ebx + ; GC ptr vars +{V08}
mov ecx, gword ptr [esi] ; gcrRegs +[ecx] test ecx, ecx
- mov esi, bword ptr [ebp-0x18] - je G_M35195_IG17 - mov gword ptr [ebp-0x1C], edi
+ je G_M35195_IG16 + mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V01} mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] @@ -101,119 +92,119 @@ G_M35195_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edi, dword ptr [eax+0x04] ; gcrRegs -[edi] test edi, edi
- jle SHORT G_M35195_IG12 - ;; size=62 bbWeight=1 PerfScore 20.75 -G_M35195_IG06: ; bbWeight=0.50, gcVars=00000228 {V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; GC ptr vars -{V00}
+ jle SHORT G_M35195_IG10 + ;; size=59 bbWeight=1 PerfScore 19.75 +G_M35195_IG04: ; bbWeight=0.50, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[ebx]
test edx, edx
- je SHORT G_M35195_IG11 - cmp dword ptr [edx+0x04], edi - mov bword ptr [ebp-0x18], esi - ; GC ptr vars +{V00} - jl SHORT G_M35195_IG13 - ;; size=12 bbWeight=0.50 PerfScore 3.12 -G_M35195_IG07: ; bbWeight=7.92, gcVars=00000238 {V00 V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; byrRegs -[esi] - mov esi, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[esi] - test esi, esi
je SHORT G_M35195_IG09
+ cmp dword ptr [edx+0x04], edi + jl SHORT G_M35195_IG12 + ;; size=9 bbWeight=0.50 PerfScore 2.62 +G_M35195_IG05: ; bbWeight=7.92, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[edx] + mov edx, gword ptr [eax+4*ecx+0x08] + ; gcrRegs +[edx] + test edx, edx + je SHORT G_M35195_IG07
;; size=8 bbWeight=7.92 PerfScore 25.74
-G_M35195_IG08: ; bbWeight=3.96, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref
+G_M35195_IG06: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref
; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x24] + ; gcrRegs +[ebx]
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, esi
call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 1 mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=23 bbWeight=3.96 PerfScore 33.66 -G_M35195_IG09: ; bbWeight=7.92, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=22 bbWeight=3.96 PerfScore 35.64 +G_M35195_IG07: ; bbWeight=7.92, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ecx cmp edi, ecx mov eax, gword ptr [ebp-0x20] ; gcrRegs +[eax]
- jg SHORT G_M35195_IG07
+ jg SHORT G_M35195_IG05
;; size=8 bbWeight=7.92 PerfScore 19.80
-G_M35195_IG10: ; bbWeight=0.46, gcVars=00000210 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V10 V11} - mov esi, bword ptr [ebp-0x18] - ; byrRegs +[esi] - mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=8 bbWeight=0.46 PerfScore 1.84 -G_M35195_IG11: ; bbWeight=0.25, gcVars=00000228 {V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; GC ptr vars -{V00} +{V03 V05 V10 V11} - mov bword ptr [ebp-0x18], esi - ; GC ptr vars +{V00} - jmp SHORT G_M35195_IG13 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M35195_IG12: ; bbWeight=0.50, gcVars=00000200 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V00 V03 V05 V10 V11} - mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M35195_IG13: ; bbWeight=0.08, gcVars=00000238 {V00 V01 V10 V11}, gcrefRegs=0000000D {eax edx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; byrRegs -[esi] - ; GC ptr vars +{V00 V03 V04 V05 V10 V11} - mov esi, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[esi] - test esi, esi - je SHORT G_M35195_IG15 - ;; size=8 bbWeight=0.08 PerfScore 0.26 -G_M35195_IG14: ; bbWeight=0.04, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M35195_IG08: ; bbWeight=3.96, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[eax]
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M35195_IG20
+ ; GC ptr vars -{V10 V11} + mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + jmp SHORT G_M35195_IG16 + ;; size=5 bbWeight=3.96 PerfScore 11.88 +G_M35195_IG09: ; bbWeight=0.25, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[edi] +[eax edx] + ; GC ptr vars +{V04 V06 V10 V11} + jmp SHORT G_M35195_IG12 + ;; size=2 bbWeight=0.25 PerfScore 0.50 +G_M35195_IG10: ; bbWeight=0.50, gcVars=00000220 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[eax edx] + ; GC ptr vars -{V04 V06 V10 V11} + mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + jmp SHORT G_M35195_IG16 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M35195_IG11: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; GC ptr vars -{V01 V08} + mov edx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + mov edx, eax + jmp G_M35195_IG03 + ;; size=17 bbWeight=0.20 PerfScore 0.70 +G_M35195_IG12: ; bbWeight=0.08, gcVars=00000270 {V01 V08 V10 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs -[edi] +[eax] + ; GC ptr vars +{V01 V04 V05 V06 V08 V09 V10 V11} + mov edx, gword ptr [eax+4*ecx+0x08] + ; gcrRegs +[edx] + test edx, edx + je SHORT G_M35195_IG14 + ;; size=8 bbWeight=0.08 PerfScore 0.26 +G_M35195_IG13: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz + ; gcrRegs -[eax] + mov ebx, gword ptr [ebp-0x24] + ; gcrRegs +[ebx] + cmp ecx, dword ptr [ebx+0x04] + jae SHORT G_M35195_IG19
mov dword ptr [ebp-0x14], ecx
- push gword ptr [edx+4*ecx+0x08]
+ push gword ptr [ebx+4*ecx+0x08]
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
- mov edx, esi
call [<unknown method>]
- ; gcrRegs -[ecx edx esi]
+ ; gcrRegs -[ecx edx]
; gcr arg pop 1 mov ecx, dword ptr [ebp-0x14]
- mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx]
...

+30 (+9.90%) : 11682.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,30 +5,30 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 5.38) byref -> esi this single-def -; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.22) byref -> esi this single-def +; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon> ; V03 TypeCtx [V03,T14] ( 4, 1.88) int -> ecx single-def ; V04 loc0 [V04,T11] ( 4, 2.75) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ; V05 loc1 [V05,T16] ( 3, 0.88) int -> eax ; V06 loc2 [V06,T09] ( 3, 3.75) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.75) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.60) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.50) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 6.25) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V11 tmp5 [V11,T07] ( 6, 3.77) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 6.25) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V11 tmp5 [V11,T08] ( 6, 3.77) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 23.15) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 12.50) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon> -; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect" -; V15 cse0 [V15,T03] ( 5, 6.56) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 12.50) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon> +; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect" +; V15 cse0 [V15,T03] ( 5, 6.56) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.50) int -> edx "runtime lookup" ; V17 rat1 [V17,T10] ( 3, 3.50) int -> edx "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08] mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01} mov esi, ecx ; byrRegs +[esi] mov ecx, dword ptr [ebp+0x08] ;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi] ; gcrRegs +[edx] test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.62, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.38, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref + mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + mov eax, dword ptr [edx+0x0C] + lea eax, [2*eax+0x02] + mov edx, gword ptr [edx+0x04] + cmp dword ptr [edx+0x04], eax + jle G_M35195_IG15 + ;; size=25 bbWeight=0.38 PerfScore 3.56 +G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - mov edx, dword ptr [ecx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - je SHORT G_M35195_IG05 - ;; size=15 bbWeight=0.62 PerfScore 5.16 -G_M35195_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov edx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - mov edx, eax - ;; size=12 bbWeight=0.12 PerfScore 0.19 -G_M35195_IG06: ; bbWeight=0.62, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - mov ecx, edx - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[eax] - mov ebx, eax - ; gcrRegs +[ebx] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, 7 - call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this] - ; gcrRegs -[eax ecx] - mov gword ptr [ebp-0x1C], ebx - ; GC ptr vars +{V08} - mov ecx, gword ptr [esi] - ; gcrRegs +[ecx] - test ecx, ecx - je G_M35195_IG17 - mov gword ptr [ebp-0x18], edi - ; GC ptr vars +{V01} - mov eax, gword ptr [ecx+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V10} - mov edx, gword ptr [ecx+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x24], edx - ; GC ptr vars +{V11} - xor ecx, ecx - ; gcrRegs -[ecx] - mov edi, dword ptr [eax+0x04] - ; gcrRegs -[edi] - test edi, edi - jle SHORT G_M35195_IG12 - ;; size=59 bbWeight=0.62 PerfScore 12.34 -G_M35195_IG07: ; bbWeight=0.31, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[ebx] - test edx, edx - je SHORT G_M35195_IG13 - cmp dword ptr [edx+0x04], edi - jl SHORT G_M35195_IG13 - ;; size=9 bbWeight=0.31 PerfScore 1.64 -G_M35195_IG08: ; bbWeight=4.95, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG10 - ;; size=8 bbWeight=4.95 PerfScore 16.09 -G_M35195_IG09: ; bbWeight=2.48, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[eax] - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=24 bbWeight=2.48 PerfScore 22.89 -G_M35195_IG10: ; bbWeight=4.95, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG08 - ;; size=8 bbWeight=4.95 PerfScore 12.38 -G_M35195_IG11: ; bbWeight=0.29, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.29 PerfScore 0.86 -G_M35195_IG12: ; bbWeight=0.31, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.31 PerfScore 0.94 -G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; GC ptr vars +{V04 V10 V11} - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG15 - ;; size=8 bbWeight=0.05 PerfScore 0.16 -G_M35195_IG14: ; bbWeight=0.03, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[eax] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M35195_IG22 - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=29 bbWeight=0.03 PerfScore 0.33 -G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG13 - ;; size=8 bbWeight=0.05 PerfScore 0.13 -G_M35195_IG16: ; bbWeight=0.03, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[eax edx] - ; GC ptr vars -{V04 V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ;; size=3 bbWeight=0.03 PerfScore 0.03 -G_M35195_IG17: ; bbWeight=0.62, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars -{V01} - mov ebx, gword ptr [ebp-0x1C] - ; gcrRegs +[ebx] - mov edx, esi - ; byrRegs +[edx] - ; GC ptr vars -{V08} - call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX - ; gcrRegs -[ebx] - ; byrRegs -[edx] - ;; size=10 bbWeight=0.62 PerfScore 1.41 -G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi] ; gcrRegs +[ecx] push gword ptr [ebp+0x0C] @@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; byrRegs -[esi] ; gcr arg pop 1 ;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.38, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs +[edx] - ; byrRegs +[esi] - ; GC ptr vars +{V01 V05} - mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C] - lea eax, [2*eax+0x02]
...

+30 (+9.90%) : 23144.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,30 +5,30 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 5.36) byref -> esi this single-def -; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.26) byref -> esi this single-def +; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon> ; V03 TypeCtx [V03,T14] ( 4, 1.84) int -> ecx single-def ; V04 loc0 [V04,T11] ( 4, 2.71) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ; V05 loc1 [V05,T16] ( 3, 0.79) int -> eax ; V06 loc2 [V06,T09] ( 3, 3.86) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.86) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.76) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.57) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 6.43) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V11 tmp5 [V11,T07] ( 6, 3.88) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 6.43) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V11 tmp5 [V11,T08] ( 6, 3.88) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 23.81) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 12.86) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon> -; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect" -; V15 cse0 [V15,T03] ( 5, 6.75) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 12.86) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon> +; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect" +; V15 cse0 [V15,T03] ( 5, 6.75) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.57) int -> edx "runtime lookup" ; V17 rat1 [V17,T10] ( 3, 3.60) int -> edx "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08] mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01} mov esi, ecx ; byrRegs +[esi] mov ecx, dword ptr [ebp+0x08] ;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi] ; gcrRegs +[edx] test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.36, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref + mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + mov eax, dword ptr [edx+0x0C] + lea eax, [2*eax+0x02] + mov edx, gword ptr [edx+0x04] + cmp dword ptr [edx+0x04], eax + jle G_M35195_IG15 + ;; size=25 bbWeight=0.36 PerfScore 3.39 +G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - mov edx, dword ptr [ecx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - je SHORT G_M35195_IG05 - ;; size=15 bbWeight=0.64 PerfScore 5.30 -G_M35195_IG04: ; bbWeight=0.51, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06 - ;; size=2 bbWeight=0.51 PerfScore 1.03 -G_M35195_IG05: ; bbWeight=0.13, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov edx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - mov edx, eax - ;; size=12 bbWeight=0.13 PerfScore 0.19 -G_M35195_IG06: ; bbWeight=0.64, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - mov ecx, edx - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[eax] - mov ebx, eax - ; gcrRegs +[ebx] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, 7 - call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this] - ; gcrRegs -[eax ecx] - mov gword ptr [ebp-0x1C], ebx - ; GC ptr vars +{V08} - mov ecx, gword ptr [esi] - ; gcrRegs +[ecx] - test ecx, ecx - je G_M35195_IG17 - mov gword ptr [ebp-0x18], edi - ; GC ptr vars +{V01} - mov eax, gword ptr [ecx+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V10} - mov edx, gword ptr [ecx+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x24], edx - ; GC ptr vars +{V11} - xor ecx, ecx - ; gcrRegs -[ecx] - mov edi, dword ptr [eax+0x04] - ; gcrRegs -[edi] - test edi, edi - jle SHORT G_M35195_IG12 - ;; size=59 bbWeight=0.64 PerfScore 12.70 -G_M35195_IG07: ; bbWeight=0.32, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[ebx] - test edx, edx - je SHORT G_M35195_IG13 - cmp dword ptr [edx+0x04], edi - jl SHORT G_M35195_IG13 - ;; size=9 bbWeight=0.32 PerfScore 1.69 -G_M35195_IG08: ; bbWeight=5.09, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG10 - ;; size=8 bbWeight=5.09 PerfScore 16.55 -G_M35195_IG09: ; bbWeight=2.55, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[eax] - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=24 bbWeight=2.55 PerfScore 23.55 -G_M35195_IG10: ; bbWeight=5.09, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG08 - ;; size=8 bbWeight=5.09 PerfScore 12.73 -G_M35195_IG11: ; bbWeight=0.30, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.30 PerfScore 0.89 -G_M35195_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.32 PerfScore 0.96 -G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; GC ptr vars +{V04 V10 V11} - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG15 - ;; size=8 bbWeight=0.05 PerfScore 0.17 -G_M35195_IG14: ; bbWeight=0.03, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[eax] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M35195_IG22 - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=29 bbWeight=0.03 PerfScore 0.34 -G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG13 - ;; size=8 bbWeight=0.05 PerfScore 0.13 -G_M35195_IG16: ; bbWeight=0.03, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[eax edx] - ; GC ptr vars -{V04 V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ;; size=3 bbWeight=0.03 PerfScore 0.03 -G_M35195_IG17: ; bbWeight=0.64, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars -{V01} - mov ebx, gword ptr [ebp-0x1C] - ; gcrRegs +[ebx] - mov edx, esi - ; byrRegs +[edx] - ; GC ptr vars -{V08} - call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX - ; gcrRegs -[ebx] - ; byrRegs -[edx] - ;; size=10 bbWeight=0.64 PerfScore 1.45 -G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi] ; gcrRegs +[ecx] push gword ptr [ebp+0x0C] @@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; byrRegs -[esi] ; gcr arg pop 1 ;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.36, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs +[edx] - ; byrRegs +[esi] - ; GC ptr vars +{V01 V05} - mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C] - lea eax, [2*eax+0x02]
...

+30 (+9.90%) : 63032.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:setItem(System.Canon,System._Canon):this (Tier1)

@@ -5,30 +5,30 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 42
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 42
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 7, 5.26) byref -> esi this single-def -; V01 arg1 [V01,T05] ( 3, 3 ) ref -> [ebp-0x18] class-hnd single-def <System.__Canon>
+; V00 this [V00,T02] ( 7, 7.02) byref -> esi this single-def +; V01 arg1 [V01,T06] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.__Canon> ; V03 TypeCtx [V03,T14] ( 4, 1.79) int -> ecx single-def ; V04 loc0 [V04,T11] ( 4, 2.81) ref -> edx class-hnd exact single-def <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ; V05 loc1 [V05,T16] ( 3, 0.88) int -> eax ; V06 loc2 [V06,T09] ( 3, 3.57) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]> ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T08] ( 4, 3.57) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
+; V08 tmp2 [V08,T05] ( 4, 5.33) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
; V09 tmp3 [V09,T12] ( 4, 2.38) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]>
-; V10 tmp4 [V10,T04] ( 4, 5.95) ref -> [ebp-0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V11 tmp5 [V11,T07] ( 6, 3.60) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V10 tmp4 [V10,T04] ( 4, 5.95) ref -> [ebp-0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V11 tmp5 [V11,T08] ( 6, 3.60) ref -> [ebp-0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V12 tmp6 [V12,T00] ( 12, 22.05) int -> [ebp-0x14] "Inline stloc first use temp"
-; V13 tmp7 [V13,T01] ( 6, 11.90) ref -> ebx class-hnd "Inline stloc first use temp" <System.__Canon> -; V14 tmp8 [V14,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect" -; V15 cse0 [V15,T03] ( 5, 6.25) int -> edi "CSE - aggressive"
+; V13 tmp7 [V13,T01] ( 6, 11.90) ref -> edx class-hnd "Inline stloc first use temp" <System.__Canon> +; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect" +; V15 cse0 [V15,T03] ( 5, 6.25) int -> [ebp-0x18] spill-single-def "CSE - aggressive"
; V16 rat0 [V16,T13] ( 3, 2.38) int -> edx "runtime lookup" ; V17 rat1 [V17,T10] ( 3, 3.33) int -> edx "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -36,172 +36,33 @@ G_M35195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24
+ sub esp, 28
mov eax, dword ptr [ebp+0x08] mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V01} mov esi, ecx ; byrRegs +[esi] mov ecx, dword ptr [ebp+0x08] ;; size=23 bbWeight=1 PerfScore 9.75
-G_M35195_IG02: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M35195_IG02: ; bbWeight=1, gcVars=00000040 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
mov edx, gword ptr [esi] ; gcrRegs +[edx] test edx, edx
- jne G_M35195_IG20
+ je G_M35195_IG18
;; size=10 bbWeight=1 PerfScore 3.25
-G_M35195_IG03: ; bbWeight=0.60, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M35195_IG03: ; bbWeight=0.40, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref + mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + mov eax, dword ptr [edx+0x0C] + lea eax, [2*eax+0x02] + mov edx, gword ptr [edx+0x04] + cmp dword ptr [edx+0x04], eax + jle G_M35195_IG15 + ;; size=25 bbWeight=0.40 PerfScore 3.85 +G_M35195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[edx]
- mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - mov edx, dword ptr [ecx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - je SHORT G_M35195_IG05 - ;; size=15 bbWeight=0.60 PerfScore 4.91 -G_M35195_IG04: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V01}
- jmp SHORT G_M35195_IG06 - ;; size=2 bbWeight=0.48 PerfScore 0.95 -G_M35195_IG05: ; bbWeight=0.12, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov edx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - mov edx, eax - ;; size=12 bbWeight=0.12 PerfScore 0.18 -G_M35195_IG06: ; bbWeight=0.60, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - mov ecx, edx - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[eax] - mov ebx, eax - ; gcrRegs +[ebx] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, 7 - call [System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:.ctor(int):this] - ; gcrRegs -[eax ecx] - mov gword ptr [ebp-0x1C], ebx - ; GC ptr vars +{V08} - mov ecx, gword ptr [esi] - ; gcrRegs +[ecx] - test ecx, ecx - je G_M35195_IG17 - mov gword ptr [ebp-0x18], edi - ; GC ptr vars +{V01} - mov eax, gword ptr [ecx+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V10} - mov edx, gword ptr [ecx+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x24], edx - ; GC ptr vars +{V11} - xor ecx, ecx - ; gcrRegs -[ecx] - mov edi, dword ptr [eax+0x04] - ; gcrRegs -[edi] - test edi, edi - jle SHORT G_M35195_IG12 - ;; size=59 bbWeight=0.60 PerfScore 11.76 -G_M35195_IG07: ; bbWeight=0.30, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[ebx] - test edx, edx - je SHORT G_M35195_IG13 - cmp dword ptr [edx+0x04], edi - jl SHORT G_M35195_IG13 - ;; size=9 bbWeight=0.30 PerfScore 1.56 -G_M35195_IG08: ; bbWeight=4.71, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, byref, isz - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG10 - ;; size=8 bbWeight=4.71 PerfScore 15.32 -G_M35195_IG09: ; bbWeight=2.36, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref - ; gcrRegs -[eax] - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=24 bbWeight=2.36 PerfScore 21.80 -G_M35195_IG10: ; bbWeight=4.71, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG08 - ;; size=8 bbWeight=4.71 PerfScore 11.79 -G_M35195_IG11: ; bbWeight=0.27, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.27 PerfScore 0.82 -G_M35195_IG12: ; bbWeight=0.30, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M35195_IG17 - ;; size=5 bbWeight=0.30 PerfScore 0.89 -G_M35195_IG13: ; bbWeight=0.05, gcVars=000001B0 {V01 V08 V10 V11}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[edi] +[eax edx] - ; GC ptr vars +{V04 V10 V11} - mov ebx, gword ptr [eax+4*ecx+0x08] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M35195_IG15 - ;; size=8 bbWeight=0.05 PerfScore 0.15 -G_M35195_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000040 {esi}, byref, isz - ; gcrRegs -[eax] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M35195_IG22 - mov dword ptr [ebp-0x14], ecx - push gword ptr [edx+4*ecx+0x08] - ; gcr arg push 0 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, ebx - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ; gcr arg pop 1 - mov ecx, dword ptr [ebp-0x14] - mov edx, gword ptr [ebp-0x24] - ; gcrRegs +[edx] - ;; size=29 bbWeight=0.02 PerfScore 0.32 -G_M35195_IG15: ; bbWeight=0.05, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp edi, ecx - mov eax, gword ptr [ebp-0x20] - ; gcrRegs +[eax] - jg SHORT G_M35195_IG13 - ;; size=8 bbWeight=0.05 PerfScore 0.12 -G_M35195_IG16: ; bbWeight=0.02, gcVars=00000120 {V01 V08}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref - ; gcrRegs -[eax edx] - ; GC ptr vars -{V04 V10 V11} - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M35195_IG17: ; bbWeight=0.60, gcVars=00000100 {V08}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars -{V01} - mov ebx, gword ptr [ebp-0x1C] - ; gcrRegs +[ebx] - mov edx, esi - ; byrRegs +[edx] - ; GC ptr vars -{V08} - call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX - ; gcrRegs -[ebx] - ; byrRegs -[edx] - ;; size=10 bbWeight=0.60 PerfScore 1.34 -G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, gword ptr [esi] ; gcrRegs +[ecx] push gword ptr [ebp+0x0C] @@ -214,7 +75,7 @@ G_M35195_IG18: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; byrRegs -[esi] ; gcr arg pop 1 ;; size=15 bbWeight=1 PerfScore 9.25
-G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M35195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -222,36 +83,194 @@ G_M35195_IG19: ; bbWeight=1, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M35195_IG20: ; bbWeight=0.40, gcVars=00000020 {V01}, gcrefRegs=00000004 {edx}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs +[edx] - ; byrRegs +[esi] - ; GC ptr vars +{V01 V05} - mov edi, gword ptr [ebp-0x18]
+G_M35195_IG06: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
- mov eax, dword ptr [edx+0x0C] - lea eax, [2*eax+0x02]
...

benchmarks.run_tiered.windows.x86.checked.mch

-17 (-4.75%) : 36066.dasm - ProtoBuf.Internal.DynamicStub:g_ResolveProxies|91(System.Type):System.Type (Tier0-FullOpts)

@@ -8,38 +8,38 @@ ; 0 inlinees with PGO data; 22 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 8, 5.50) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T04] ( 8, 7.25) ref -> esi class-hnd single-def <System.Type>
; V01 loc0 [V01,T12] ( 3, 1.50) ref -> eax class-hnd exact single-def <System.String> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 loc2 [V03,T08] ( 3, 5 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 loc2 [V03,T09] ( 3, 5 ) ref -> [ebp-0x1C] class-hnd single-def <<unknown class>>
; V04 loc3 [V04,T03] ( 5, 16.50) int -> [ebp-0x10] ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
-; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x1C] class-hnd exact <System.String>
+; V06 loc5 [V06,T00] ( 13, 34 ) ref -> [ebp-0x20] class-hnd exact <System.String>
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V08 tmp1 [V08,T04] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V08 tmp1 [V08,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V10 tmp3 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp4 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V14 tmp7 [V14,T05] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V14 tmp7 [V14,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
-; V20 tmp13 [V20,T06] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
+; V20 tmp13 [V20,T07] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V22 tmp15 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp16 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp17 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp18 [V25,T11] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V25 tmp18 [V25,T08] ( 2, 5.50) ref -> eax single-def "Single return block return value"
; V26 tmp19 [V26,T01] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V27 cse0 [V27,T02] ( 9, 18 ) int -> edi multi-def "CSE - aggressive" -; V28 cse1 [V28,T09] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate" -; V29 cse2 [V29,T10] ( 5, 2.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V27 cse0 [V27,T02] ( 9, 18 ) int -> registers multi-def "CSE - aggressive" +; V28 cse1 [V28,T10] ( 3, 5 ) int -> [ebp-0x14] "CSE - moderate" +; V29 cse2 [V29,T11] ( 5, 4.25) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -47,7 +47,7 @@ G_M1535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 16
+ sub esp, 20
mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -82,14 +82,14 @@ G_M1535_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 test eax, eax je SHORT G_M1535_IG05 ;; size=52 bbWeight=0.50 PerfScore 10.88
-G_M1535_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M1535_IG04: ; bbWeight=2.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x58] call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] +[eax]
- jmp G_M1535_IG19 - ;; size=13 bbWeight=0.50 PerfScore 3.62
+ jmp G_M1535_IG17 + ;; size=13 bbWeight=2.25 PerfScore 16.31
G_M1535_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] +[esi] mov ecx, esi @@ -117,22 +117,25 @@ G_M1535_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000 mov edi, eax ; gcrRegs +[edi] cmp edi, 0xD1FFAB1E
- je G_M1535_IG18
+ je G_M1535_IG16
;; size=29 bbWeight=4 PerfScore 46.00 G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
+ mov gword ptr [ebp-0x1C], ebx + ; GC ptr vars +{V03}
mov ecx, edi ; gcrRegs +[ecx] mov edi, dword ptr [ebp-0x18] ; gcrRegs -[edi] test ecx, ecx je SHORT G_M1535_IG08
- mov edi, dword ptr [ecx+0x04] - cmp edi, 33 - jne G_M1535_IG17 - add edi, edi - push edi - mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04] + ; gcrRegs -[ebx] + cmp ebx, 33 + jne SHORT G_M1535_IG08 + add ebx, ebx + push ebx + mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06} add ecx, 8 ; gcrRegs -[ecx] @@ -142,25 +145,24 @@ G_M1535_IG07: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne SHORT G_M1535_IG04
- ;; size=51 bbWeight=2 PerfScore 29.50 -G_M1535_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=2 PerfScore 29.50 +G_M1535_IG08: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V06} cmp ecx, 0xD1FFAB1E je SHORT G_M1535_IG04 ;; size=8 bbWeight=4 PerfScore 5.00
-G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG09: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx je SHORT G_M1535_IG10
- mov edi, dword ptr [ecx+0x04] - cmp edi, 36 - jne SHORT G_M1535_IG16 - add edi, edi - push edi - mov gword ptr [ebp-0x1C], ecx
+ mov ebx, dword ptr [ecx+0x04] + cmp ebx, 36 + jne SHORT G_M1535_IG10 + add ebx, ebx + push ebx + mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V06} add ecx, 8 ; gcrRegs -[ecx] @@ -170,17 +172,18 @@ G_M1535_IG09: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0 call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x18]
jne G_M1535_IG04
- ;; size=46 bbWeight=2 PerfScore 27.00 -G_M1535_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=43 bbWeight=2 PerfScore 25.00 +G_M1535_IG10: ; bbWeight=4, gcVars=00000200 {V03}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V06} cmp ecx, 0xD1FFAB1E je G_M1535_IG04 ;; size=12 bbWeight=4 PerfScore 5.00
-G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M1535_IG11: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx]
test ecx, ecx je SHORT G_M1535_IG12 mov edi, dword ptr [ecx+0x04] @@ -193,12 +196,13 @@ G_M1535_IG11: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=0 ; byrRegs +[ecx] mov edx, 0xD1FFAB1E ; byrRegs +[edx]
+ ; GC ptr vars -{V03}
call [<unknown method>] ; byrRegs -[ecx edx] test eax, eax mov edi, dword ptr [ebp-0x18] jne G_M1535_IG04
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=43 bbWeight=2 PerfScore 25.00
G_M1535_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x10] inc eax @@ -225,21 +229,12 @@ G_M1535_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000048 {ebx e mov edi, dword ptr [ebp-0x18] jmp SHORT G_M1535_IG12 ;; size=5 bbWeight=1 PerfScore 3.00
-G_M1535_IG16: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx] - mov edi, dword ptr [ebp-0x18] - jmp SHORT G_M1535_IG10 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M1535_IG17: ; bbWeight=1, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x18] - jmp G_M1535_IG08 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M1535_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ecx ebx]
+G_M1535_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
mov edi, dword ptr [ebp-0x18] jmp G_M1535_IG04 ;; size=8 bbWeight=2 PerfScore 6.00
-G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M1535_IG17: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] +[eax] lea esp, [ebp-0x0C] pop ebx @@ -249,6 +244,6 @@ G_M1535_IG19: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000 ret ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 358, prolog size 9, PerfScore 197.62, instruction count 124, allocated bytes for code 358 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
+; Total bytes of code 341, prolog size 9, PerfScore 204.31, instruction count 120, allocated bytes for code 341 (MethodHash=bee0fa00) for method ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
; ============================================================

-7 (-2.37%) : 24359.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)

@@ -7,22 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> -; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10] -; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> +; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> +; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10] +; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def -; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx -; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect" -; TEMP_02 int -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def +; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx +; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>> +; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr" +; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect" +; TEMP_02 int -> [ebp-0x18] +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - mov gword ptr [ebp-0x14], ecx - ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [ebp+0x0C] mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75 -G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75 +G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx]
test ebx, ebx jne SHORT G_M57627_IG05 ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E ; gcrRegs +[eax] ;; size=5 bbWeight=0.50 PerfScore 0.12 @@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi] - ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A2FBA] cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx shl eax, 7
- mov dword ptr [ebp-0x20], eax - movzx eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax + movzx eax, dword ptr [ebp-0x18] + xor eax, dword ptr [ebp-0x1C]
add edx, eax mov dword ptr [ebp+0x08], ebx lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01] - cmp ecx, eax - jge SHORT G_M57627_IG10 - ;; size=56 bbWeight=0.50 PerfScore 8.38 -G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ebx, ecx - or ebx, eax - jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01] + cmp ebx, eax + jge SHORT G_M57627_IG11 + ;; size=59 bbWeight=0.50 PerfScore 8.88 +G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, ebx + or edi, eax + jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax jl SHORT G_M57627_IG09 ;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + movzx edi, word ptr [esi+2*ebx+0x08] + mov eax, edx + shl eax, 7 + xor eax, edi + add edx, eax + inc ebx + mov eax, dword ptr [ebp-0x14] + cmp ebx, eax + jl SHORT G_M57627_IG07 + ;; size=22 bbWeight=3.96 PerfScore 22.77 +G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M57627_IG11 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x14] + ;; size=3 bbWeight=0.12 PerfScore 0.12 +G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, dword ptr [esi+0x04] + jae G_M57627_IG19 + movzx edi, word ptr [esi+2*ebx+0x08] + mov dword ptr [ebp-0x1C], edi
mov edi, edx shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi + movzx edi, dword ptr [ebp-0x1C] + xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG07 - ;; size=19 bbWeight=3.96 PerfScore 18.81 -G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57627_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [esi+0x04] - jae G_M57627_IG18 - movzx ebx, word ptr [esi+2*ecx+0x08] - mov dword ptr [ebp-0x20], ebx - mov ebx, edx - shl ebx, 7 - mov dword ptr [ebp-0x1C], ebx - movzx ebx, dword ptr [ebp-0x20] - xor ebx, dword ptr [ebp-0x1C] - add edx, ebx - inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG09
+ inc ebx + cmp ebx, eax + jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, edx - sar ecx, 17 - sub edx, ecx - mov ecx, edx - sar ecx, 11 - sub edx, ecx - mov ecx, edx - sar ecx, 5 - sub edx, ecx - mov ecx, gword ptr [ebp-0x14] - ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov eax, edx + sar eax, 17 + sub edx, eax + mov eax, edx + sar eax, 11 + sub edx, eax + mov eax, edx + sar eax, 5 + sub edx, eax
mov eax, edx and eax, dword ptr [ecx+0x0C] mov ecx, gword ptr [ecx+0x04] cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18 - mov eax, gword ptr [ecx+4*eax+0x08] - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M57627_IG14 - ;; size=45 bbWeight=0.50 PerfScore 8.25 -G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19 + mov ebx, gword ptr [ecx+4*eax+0x08] + ; gcrRegs +[ebx] + test ebx, ebx + je SHORT G_M57627_IG15 + ;; size=42 bbWeight=1.98 PerfScore 30.69 +G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx - jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx + jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x18], eax - ; GC ptr vars +{V09} - mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx] mov edi, dword ptr [ebp+0x0C] push edi
- mov ebx, dword ptr [ebp+0x08] - push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi ; gcrRegs +[edx] call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx - mov eax, gword ptr [ebp-0x18] - ; gcrRegs +[eax] - jne SHORT G_M57627_IG16 - ;; size=35 bbWeight=2 PerfScore 29.00 -G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V09} - mov eax, gword ptr [eax+0x08] - test eax, eax
+ jne SHORT G_M57627_IG17 + ;; size=25 bbWeight=2 PerfScore 21.00 +G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebx+0x08] + test ebx, ebx
...

-7 (-2.37%) : 49392.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)

@@ -7,22 +7,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> -; V01 arg1 [V01,T03] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T07] ( 5, 4 ) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T08] ( 4, 4 ) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T00] ( 21, 23 ) int -> [ebp-0x10] -; V05 loc1 [V05,T05] ( 6, 5.50) int -> eax single-def
+; V00 this [V00,T06] ( 4, 5.96) ref -> ecx this class-hnd single-def <Newtonsoft.Json.DefaultJsonNameTable> +; V01 arg1 [V01,T04] ( 9, 9.29) ref -> esi class-hnd single-def <ushort[]> +; V02 arg2 [V02,T09] ( 5, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T10] ( 4, 4 ) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T00] ( 21, 37.80) int -> [ebp-0x10] +; V05 loc1 [V05,T08] ( 6, 5.50) int -> [ebp-0x14] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T10] ( 3, 1.50) int -> eax single-def -; V08 loc4 [V08,T02] ( 12, 17.29) int -> ecx -; V09 loc5 [V09,T01] ( 8, 19.50) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V10 tmp0 [V10,T09] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V11 tmp1 [V11,T04] ( 2, 8 ) ref -> ecx "argument with side effect" -; TEMP_02 int -> [ebp-0x1C] -; TEMP_01 int -> [ebp-0x20]
+; V07 loc3 [V07,T07] ( 3, 5.94) int -> eax single-def +; V08 loc4 [V08,T02] ( 12, 17.29) int -> ebx +; V09 loc5 [V09,T01] ( 8, 22.46) ref -> ebx class-hnd <<unknown class>> +; V10 tmp0 [V10,T03] ( 3, 11.88) ref -> ecx single-def "arr expr" +; V11 tmp1 [V11,T05] ( 2, 8 ) ref -> ecx "argument with side effect" +; TEMP_02 int -> [ebp-0x18] +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,21 +30,19 @@ G_M57627_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20 - mov gword ptr [ebp-0x14], ecx - ; GC ptr vars +{V00}
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [ebp+0x0C] mov ebx, dword ptr [ebp+0x08]
- ;; size=20 bbWeight=1 PerfScore 7.75 -G_M57627_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=17 bbWeight=1 PerfScore 6.75 +G_M57627_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx]
test ebx, ebx jne SHORT G_M57627_IG05 ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57627_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; GC ptr vars -{V00}
+G_M57627_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx esi]
mov eax, 0xD1FFAB1E ; gcrRegs +[eax] ;; size=5 bbWeight=0.50 PerfScore 0.12 @@ -56,124 +54,118 @@ G_M57627_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M57627_IG05: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi] - ; GC ptr vars +{V00}
+G_M57627_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[ecx esi]
lea edx, [ebx+0x000A954A] cmp edi, dword ptr [esi+0x04]
- jae G_M57627_IG18
+ jae G_M57627_IG19
movzx eax, word ptr [esi+2*edi+0x08]
- mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
mov eax, edx shl eax, 7
- mov dword ptr [ebp-0x20], eax - movzx eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ebp-0x20]
+ mov dword ptr [ebp-0x1C], eax + movzx eax, dword ptr [ebp-0x18] + xor eax, dword ptr [ebp-0x1C]
add edx, eax mov dword ptr [ebp+0x08], ebx lea eax, [edi+ebx]
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp+0x0C], edi
- lea ecx, [edi+0x01] - cmp ecx, eax - jge SHORT G_M57627_IG10 - ;; size=56 bbWeight=0.50 PerfScore 8.38 -G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ebx, ecx - or ebx, eax - jl SHORT G_M57627_IG09
+ lea ebx, [edi+0x01] + cmp ebx, eax + jge SHORT G_M57627_IG11 + ;; size=59 bbWeight=0.50 PerfScore 8.88 +G_M57627_IG06: ; bbWeight=0.25, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, ebx + or edi, eax + jl SHORT G_M57627_IG10
cmp dword ptr [esi+0x04], eax jl SHORT G_M57627_IG09 ;; size=11 bbWeight=0.25 PerfScore 1.38
-G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - movzx ebx, word ptr [esi+2*ecx+0x08]
+G_M57627_IG07: ; bbWeight=3.96, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + movzx edi, word ptr [esi+2*ebx+0x08] + mov eax, edx + shl eax, 7 + xor eax, edi + add edx, eax + inc ebx + mov eax, dword ptr [ebp-0x14] + cmp ebx, eax + jl SHORT G_M57627_IG07 + ;; size=22 bbWeight=3.96 PerfScore 22.77 +G_M57627_IG08: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M57627_IG11 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M57627_IG09: ; bbWeight=0.12, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x14] + ;; size=3 bbWeight=0.12 PerfScore 0.12 +G_M57627_IG10: ; bbWeight=0.04, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, dword ptr [esi+0x04] + jae G_M57627_IG19 + movzx edi, word ptr [esi+2*ebx+0x08] + mov dword ptr [ebp-0x1C], edi
mov edi, edx shl edi, 7
- xor edi, ebx
+ mov dword ptr [ebp-0x18], edi + movzx edi, dword ptr [ebp-0x1C] + xor edi, dword ptr [ebp-0x18]
add edx, edi
- inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG07 - ;; size=19 bbWeight=3.96 PerfScore 18.81 -G_M57627_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M57627_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M57627_IG09: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [esi+0x04] - jae G_M57627_IG18 - movzx ebx, word ptr [esi+2*ecx+0x08] - mov dword ptr [ebp-0x20], ebx - mov ebx, edx - shl ebx, 7 - mov dword ptr [ebp-0x1C], ebx - movzx ebx, dword ptr [ebp-0x20] - xor ebx, dword ptr [ebp-0x1C] - add edx, ebx - inc ecx - cmp ecx, eax - jl SHORT G_M57627_IG09
+ inc ebx + cmp ebx, eax + jl SHORT G_M57627_IG10
;; size=39 bbWeight=0.04 PerfScore 0.54
-G_M57627_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, edx - sar ecx, 17 - sub edx, ecx - mov ecx, edx - sar ecx, 11 - sub edx, ecx - mov ecx, edx - sar ecx, 5 - sub edx, ecx - mov ecx, gword ptr [ebp-0x14] - ; gcrRegs +[ecx]
+G_M57627_IG11: ; bbWeight=1.98, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + mov eax, edx + sar eax, 17 + sub edx, eax + mov eax, edx + sar eax, 11 + sub edx, eax + mov eax, edx + sar eax, 5 + sub edx, eax
mov eax, edx and eax, dword ptr [ecx+0x0C] mov ecx, gword ptr [ecx+0x04] cmp eax, dword ptr [ecx+0x04]
- jae SHORT G_M57627_IG18 - mov eax, gword ptr [ecx+4*eax+0x08] - ; gcrRegs +[eax] - test eax, eax - je SHORT G_M57627_IG14 - ;; size=45 bbWeight=0.50 PerfScore 8.25 -G_M57627_IG11: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jae SHORT G_M57627_IG19 + mov ebx, gword ptr [ecx+4*eax+0x08] + ; gcrRegs +[ebx] + test ebx, ebx + je SHORT G_M57627_IG15 + ;; size=42 bbWeight=1.98 PerfScore 30.69 +G_M57627_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- ; GC ptr vars -{V00}
mov dword ptr [ebp-0x10], edx
- cmp dword ptr [eax+0x0C], edx - jne SHORT G_M57627_IG13
+ cmp dword ptr [ebx+0x0C], edx + jne SHORT G_M57627_IG14
;; size=8 bbWeight=4 PerfScore 20.00
-G_M57627_IG12: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x18], eax - ; GC ptr vars +{V09} - mov ecx, gword ptr [eax+0x04]
+G_M57627_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx] mov edi, dword ptr [ebp+0x0C] push edi
- mov ebx, dword ptr [ebp+0x08] - push ebx
+ push dword ptr [ebp+0x08]
mov edx, esi ; gcrRegs +[edx] call [Newtonsoft.Json.DefaultJsonNameTable:TextEquals(System.String,ushort[],int,int):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax mov dword ptr [ebp+0x0C], edi
- mov dword ptr [ebp+0x08], ebx - mov eax, gword ptr [ebp-0x18] - ; gcrRegs +[eax] - jne SHORT G_M57627_IG16 - ;; size=35 bbWeight=2 PerfScore 29.00 -G_M57627_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V09} - mov eax, gword ptr [eax+0x08] - test eax, eax
+ jne SHORT G_M57627_IG17 + ;; size=25 bbWeight=2 PerfScore 21.00 +G_M57627_IG14: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ebx, gword ptr [ebx+0x08] + test ebx, ebx
...

+15 (+6.94%) : 25227.dasm - Sigil.Impl.LinqAlternative:_Orderint,int:System.Collections.Generic.IEnumerable`1int

@@ -9,16 +9,16 @@ ; ; V00 arg0 [V00,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]> ; V01 arg1 [V01,T04] ( 6, 10 ) ref -> esi class-hnd single-def <Sigil.Impl.SigilFunc`2[int,int]>
-; V02 arg2 [V02,T09] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]> -; V03 loc0 [V03,T05] ( 6, 7.50) ref -> edi class-hnd single-def <int[]> -; V04 loc1 [V04,T03] ( 11, 14 ) int -> ebx single-def -; V05 loc2 [V05,T06] ( 6, 6.54) ref -> [ebp-0x14] class-hnd exact spill-single-def <int[]> -; V06 loc3 [V06,T07] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]> -; V07 loc4 [V07,T00] ( 12, 21.04) int -> edx -; V08 loc5 [V08,T01] ( 12, 21.04) int -> [ebp-0x10]
+; V02 arg2 [V02,T09] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Collections.Generic.IComparer`1[int]> +; V03 loc0 [V03,T06] ( 6, 8.48) ref -> ebx class-hnd single-def <int[]> +; V04 loc1 [V04,T03] ( 11, 15.96) int -> [ebp-0x10] spill-single-def +; V05 loc2 [V05,T07] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <int[]> +; V06 loc3 [V06,T05] ( 6, 8.50) ref -> [ebp-0x1C] class-hnd exact spill-single-def <int[]> +; V07 loc4 [V07,T01] ( 12, 21.04) int -> edx +; V08 loc5 [V08,T00] ( 12, 22.02) int -> [ebp-0x14]
; V09 tmp0 [V09,T02] ( 4, 16 ) int -> eax "Strict ordering of exceptions for Array store" ;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -26,7 +26,7 @@ G_M31788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 16
mov esi, edx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -34,149 +34,155 @@ G_M31788_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 ; gcrRegs +[ecx] call [Sigil.Impl.LinqAlternative:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]] ; gcrRegs -[ecx] +[eax]
- mov edi, eax - ; gcrRegs +[edi] - mov ebx, dword ptr [edi+0x04] - mov edx, ebx - mov ecx, 0xD1FFAB1E ; int[] - call CORINFO_HELP_NEWARR_1_VC - mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V05} - xor edx, edx - test ebx, ebx - jle SHORT G_M31788_IG06 - ;; size=32 bbWeight=1 PerfScore 9.25 -G_M31788_IG03: ; bbWeight=0.50, gcVars=00000040 {V05}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - cmp dword ptr [eax+0x04], ebx - jl SHORT G_M31788_IG07 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [eax+4*edx+0x08], edx - inc edx - cmp edx, ebx - jl SHORT G_M31788_IG04 - ;; size=9 bbWeight=3.96 PerfScore 9.90 -G_M31788_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M31788_IG08 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M31788_IG08 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz - cmp edx, dword ptr [eax+0x04] - jae G_M31788_IG18 - mov dword ptr [eax+4*edx+0x08], edx - inc edx - cmp edx, ebx - jl SHORT G_M31788_IG12 - ;; size=18 bbWeight=0.04 PerfScore 0.26 -G_M31788_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, eax + ; gcrRegs +[ebx] + mov eax, dword ptr [ebx+0x04]
; gcrRegs -[eax]
- mov edx, ebx
+ mov dword ptr [ebp-0x10], eax + mov edx, eax
mov ecx, 0xD1FFAB1E ; int[] call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[eax] mov gword ptr [ebp-0x18], eax
+ ; GC ptr vars +{V05} + xor edx, edx + mov ecx, dword ptr [ebp-0x10] + test ecx, ecx + jle SHORT G_M31788_IG06 + ;; size=38 bbWeight=1 PerfScore 11.25 +G_M31788_IG03: ; bbWeight=0.50, gcVars=00000080 {V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp dword ptr [eax+0x04], ecx + jl SHORT G_M31788_IG07 + ;; size=5 bbWeight=0.50 PerfScore 2.00 +G_M31788_IG04: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + mov dword ptr [eax+4*edx+0x08], edx + inc edx + cmp edx, ecx + jl SHORT G_M31788_IG04 + ;; size=9 bbWeight=3.96 PerfScore 9.90 +G_M31788_IG05: ; bbWeight=1.98, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M31788_IG08 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M31788_IG06: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M31788_IG08 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M31788_IG07: ; bbWeight=0.04, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + cmp edx, dword ptr [eax+0x04] + jae G_M31788_IG18 + mov dword ptr [eax+4*edx+0x08], edx + inc edx + cmp edx, ecx + jl SHORT G_M31788_IG12 + ;; size=18 bbWeight=0.04 PerfScore 0.26 +G_M31788_IG08: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + mov edx, ecx + mov ecx, 0xD1FFAB1E ; int[] + call CORINFO_HELP_NEWARR_1_VC + ; gcrRegs +[eax] + mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V06} xor ecx, ecx
- test ebx, ebx
+ mov edx, dword ptr [ebp-0x10] + test edx, edx
jle SHORT G_M31788_IG15
- ;; size=21 bbWeight=1 PerfScore 4.00 -G_M31788_IG09: ; bbWeight=0.50, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov edx, dword ptr [edi+0x04] - cmp dword ptr [eax+0x04], ebx
+ ;; size=24 bbWeight=1.98 PerfScore 9.90 +G_M31788_IG09: ; bbWeight=0.50, gcVars=000000A0 {V05 V06}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + mov edi, dword ptr [ebx+0x04] + cmp dword ptr [eax+0x04], edx
jl SHORT G_M31788_IG13 ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M31788_IG10: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], ecx - mov edx, dword ptr [edi+4*ecx+0x08]
+ mov dword ptr [ebp-0x14], ecx + mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp-0x18] - ; gcrRegs +[ecx] - mov edx, dword ptr [ebp-0x10] - mov dword ptr [ecx+4*edx+0x08], eax
+ mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + mov edx, dword ptr [ebp-0x14] + mov dword ptr [edi+4*edx+0x08], eax
inc edx
- cmp edx, ebx
+ cmp edx, dword ptr [ebp-0x10]
mov ecx, edx
- ; gcrRegs -[ecx]
jl SHORT G_M31788_IG10
- ;; size=30 bbWeight=3.96 PerfScore 50.49 -G_M31788_IG11: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[esi] - mov eax, gword ptr [ebp-0x18]
+ ;; size=31 bbWeight=3.96 PerfScore 57.42 +G_M31788_IG11: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi edi] + mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax] jmp SHORT G_M31788_IG15
- ;; size=5 bbWeight=1 PerfScore 3.00 -G_M31788_IG12: ; bbWeight=0.02, gcVars=00000040 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M31788_IG12: ; bbWeight=0.02, gcVars=00000080 {V05}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
- ; GC ptr vars -{V06} - mov eax, gword ptr [ebp-0x14]
+ ; GC ptr vars -{V05 V06} + mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax] jmp SHORT G_M31788_IG07 ;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M31788_IG13: ; bbWeight=0.04, gcVars=000000C0 {V05 V06}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M31788_IG13: ; bbWeight=0.04, gcVars=000000A0 {V05 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars +{V06 V07} - mov dword ptr [ebp-0x10], ecx - mov edx, dword ptr [edi+4*ecx+0x08]
+ ; GC ptr vars +{V05 V06} + mov dword ptr [ebp-0x14], ecx + mov edx, dword ptr [ebx+4*ecx+0x08]
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] call [esi+0x0C]<unknown method> ; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10] - mov edx, gword ptr [ebp-0x18]
+ mov edi, dword ptr [ebp-0x14] + mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- cmp ecx, dword ptr [edx+0x04]
+ cmp edi, dword ptr [edx+0x04]
jae SHORT G_M31788_IG18
- mov dword ptr [edx+4*ecx+0x08], eax - inc ecx - cmp ecx, ebx
+ mov dword ptr [edx+4*edi+0x08], eax + inc edi + mov eax, dword ptr [ebp-0x10] + cmp edi, eax + mov ecx, edi
jl SHORT G_M31788_IG17
- ;; size=33 bbWeight=0.04 PerfScore 0.66 -G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=00000084 {edx edi}, byrefRegs=00000000 {}, byref
+ ;; size=38 bbWeight=0.04 PerfScore 0.71 +G_M31788_IG14: ; bbWeight=0.02, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] mov eax, edx ; gcrRegs +[eax] ;; size=2 bbWeight=0.02 PerfScore 0.01
-G_M31788_IG15: ; bbWeight=1, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M31788_IG15: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx] push eax ; gcr arg push 0 push gword ptr [ebp+0x08] ; gcr arg push 1
- mov ecx, edi
+ mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- ; GC ptr vars -{V05 V06 V07}
+ ; GC ptr vars -{V05 V06}
call [Sigil.Impl.LinqAlternative:_QuickSort[int,int](int[],int[],int[],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int]]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx ebx]
; gcr arg pop 2
- ;; size=15 bbWeight=1 PerfScore 6.25 -G_M31788_IG16: ; bbWeight=1, epilog, nogc, extend
+ ;; size=15 bbWeight=1.98 PerfScore 12.38 +G_M31788_IG16: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi ...

+27 (+8.79%) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75 G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG10 inc ebx cmp ebx, esi jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG11 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG22 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG16 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG28 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG27 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG24 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG23
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG23 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG22 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} ...

+27 (+8.79%) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75 G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG10 inc ebx cmp ebx, esi jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG11 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG22 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG16 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG28 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG27 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG24 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG23
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG23 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG22 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} ...

coreclr_tests.run.windows.x86.checked.mch

-38 (-6.86%) : 229877.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)

@@ -8,44 +8,44 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]> -; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]> -; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def -; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx -; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def -; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]> +; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]> +; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]> +; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def +; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx +; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def +; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill" -; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill" -; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill" +; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill" +; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp" -; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp" -; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp" -; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp" -; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp" -; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp" -; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp" -; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp" -; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp" -; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp" -; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp" -; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp" -; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp" -; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp" -; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp" -; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp" -; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate" -; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp" +; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp" +; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp" +; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp" +; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp" +; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp" +; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp" +; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp" +; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp" +; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp" +; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp" +; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp" +; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp" +; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp" +; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp" +; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp" +; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate" +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40 - mov esi, edx - ; gcrRegs +[esi]
+ sub esp, 16 + mov gword ptr [ebp-0x18], edx + ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75 -G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50 +G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx] xor edx, edx test eax, eax je SHORT G_M29033_IG06 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edi, 8 jl SHORT G_M29033_IG06 ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG04 ;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG06 ;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08] cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C] sub edx, dword ptr [ecx+0x10] cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C] sub ebx, dword ptr [ecx+0x14] cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx mov edx, gword ptr [ecx+4*edx+0x18] ; gcrRegs +[edx] cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10] mov dword ptr [ebp-0x10], ebx cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14] mov dword ptr [ebp-0x14], ebx mov ebx, dword ptr [ebp-0x10] sub ebx, dword ptr [edx+0x10] cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14] sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x18] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + mov esi, dword ptr [ebp-0x1C] + add esi, ebx + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x18] - mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx - mov ebx, dword ptr [ebp-0x1C] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - ;; size=189 bbWeight=0.50 PerfScore 43.38 -G_M29033_IG08: ; bbWeight=0.50, isz, extend - mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x24] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + add esi, ebx + ;; size=187 bbWeight=1.98 PerfScore 172.75 +G_M29033_IG08: ; bbWeight=1.98, isz, extend + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x20] - mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx - mov ebx, dword ptr [ebp-0x28] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x30] - mov ebx, dword ptr [edx+4*ebx+0x18]
...

-38 (-6.86%) : 236395.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)

@@ -8,44 +8,44 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]> -; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]> -; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def -; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx -; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def -; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]> +; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]> +; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]> +; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def +; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx +; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def +; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill" -; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill" -; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill" +; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill" +; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp" -; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp" -; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp" -; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp" -; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp" -; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp" -; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp" -; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp" -; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp" -; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp" -; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp" -; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp" -; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp" -; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp" -; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp" -; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp" -; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate" -; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp" +; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp" +; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp" +; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp" +; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp" +; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp" +; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp" +; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp" +; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp" +; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp" +; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp" +; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp" +; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp" +; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp" +; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp" +; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp" +; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate" +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40 - mov esi, edx - ; gcrRegs +[esi]
+ sub esp, 16 + mov gword ptr [ebp-0x18], edx + ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75 -G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50 +G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx] xor edx, edx test eax, eax je SHORT G_M29033_IG06 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edi, 8 jl SHORT G_M29033_IG06 ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG04 ;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG06 ;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08] cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C] sub edx, dword ptr [ecx+0x10] cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C] sub ebx, dword ptr [ecx+0x14] cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx mov edx, gword ptr [ecx+4*edx+0x18] ; gcrRegs +[edx] cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10] mov dword ptr [ebp-0x10], ebx cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14] mov dword ptr [ebp-0x14], ebx mov ebx, dword ptr [ebp-0x10] sub ebx, dword ptr [edx+0x10] cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14] sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x18] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + mov esi, dword ptr [ebp-0x1C] + add esi, ebx + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x18] - mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx - mov ebx, dword ptr [ebp-0x1C] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - ;; size=189 bbWeight=0.50 PerfScore 43.38 -G_M29033_IG08: ; bbWeight=0.50, isz, extend - mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x24] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + add esi, ebx + ;; size=187 bbWeight=1.98 PerfScore 172.75 +G_M29033_IG08: ; bbWeight=1.98, isz, extend + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x20] - mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx - mov ebx, dword ptr [ebp-0x28] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x30] - mov ebx, dword ptr [edx+4*ebx+0x18]
...

-38 (-6.86%) : 365160.dasm - JitTestlcsmixedlcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (Tier0-FullOpts)

@@ -8,44 +8,44 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 10, 6 ) ref -> ecx class-hnd single-def <int[,][,][,][,]> -; V01 arg1 [V01,T09] ( 6, 4 ) ref -> esi class-hnd single-def <ushort[]> -; V02 arg2 [V02,T03] ( 19, 15.54) ref -> eax class-hnd single-def <int[]> -; V03 loc0 [V03,T19] ( 5, 2.50) int -> ebx single-def -; V04 loc1 [V04,T01] ( 10, 17.04) int -> edx -; V05 loc2 [V05,T31] ( 3, 1.50) int -> edi single-def -; V06 loc3 [V06,T02] ( 10, 16.54) int -> edx
+; V00 arg0 [V00,T05] ( 10, 16.36) ref -> ecx class-hnd single-def <int[,][,][,][,]> +; V01 arg1 [V01,T17] ( 6, 8.44) ref -> [ebp-0x18] class-hnd single-def <ushort[]> +; V02 arg2 [V02,T00] ( 19, 30.34) ref -> eax class-hnd single-def <int[]> +; V03 loc0 [V03,T30] ( 5, 5.46) int -> esi single-def +; V04 loc1 [V04,T07] ( 10, 17.04) int -> edx +; V05 loc2 [V05,T29] ( 3, 5.94) int -> edi single-def +; V06 loc3 [V06,T08] ( 10, 16.54) int -> edx
; V07 tmp0 [V07,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp1 [V08,T10] ( 3, 3 ) byref -> edx single-def "dup spill" -; V09 tmp2 [V09,T00] ( 6, 24 ) byref -> ebx "dup spill" -; V10 tmp3 [V10,T20] ( 2, 2 ) ref -> ebx class-hnd exact single-def "impAppendStmt" <System.String>
+; V08 tmp1 [V08,T31] ( 3, 3 ) byref -> edx single-def "dup spill" +; V09 tmp2 [V09,T04] ( 6, 24 ) byref -> esi "dup spill" +; V10 tmp3 [V10,T18] ( 2, 7.92) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp5 [V12,T21] ( 2, 2 ) ushort -> esi "Inlining Arg"
+; V12 tmp5 [V12,T19] ( 2, 7.92) ushort -> ebx "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V14 tmp7 [V14,T30] ( 3, 1.50) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V15 tmp8 [V15,T22] ( 2, 2 ) int -> edx "MD array shared temp" -; V16 tmp9 [V16,T23] ( 2, 2 ) int -> ebx "MD array shared temp" -; V17 tmp10 [V17,T11] ( 3, 3 ) int -> edx "MD array shared temp" -; V18 tmp11 [V18,T12] ( 3, 3 ) int -> ebx "MD array shared temp" -; V19 tmp12 [V19,T24] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "MD array shared temp" -; V20 tmp13 [V20,T25] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "MD array shared temp" -; V21 tmp14 [V21,T05] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V22 tmp15 [V22,T13] ( 3, 3 ) int -> ebx "MD array shared temp" -; V23 tmp16 [V23,T14] ( 3, 3 ) int -> [ebp-0x18] spill-single-def "MD array shared temp" -; V24 tmp17 [V24,T26] ( 2, 2 ) int -> [ebp-0x1C] spill-single-def "MD array shared temp" -; V25 tmp18 [V25,T27] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "MD array shared temp" -; V26 tmp19 [V26,T06] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V27 tmp20 [V27,T15] ( 3, 3 ) int -> ebx "MD array shared temp" -; V28 tmp21 [V28,T16] ( 3, 3 ) int -> [ebp-0x24] spill-single-def "MD array shared temp" -; V29 tmp22 [V29,T28] ( 2, 2 ) int -> [ebp-0x28] spill-single-def "MD array shared temp" -; V30 tmp23 [V30,T29] ( 2, 2 ) int -> [ebp-0x2C] spill-single-def "MD array shared temp" -; V31 tmp24 [V31,T07] ( 7, 7 ) ref -> edx single-def "MD array shared temp" -; V32 tmp25 [V32,T17] ( 3, 3 ) int -> ebx "MD array shared temp" -; V33 tmp26 [V33,T18] ( 3, 3 ) int -> [ebp-0x30] spill-single-def "MD array shared temp" -; V34 cse0 [V34,T08] ( 15, 6.12) int -> edi multi-def "CSE - moderate" -; TEMP_01 int -> [ebp-0x34]
+; V14 tmp7 [V14,T28] ( 3, 5.94) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V15 tmp8 [V15,T20] ( 2, 7.92) int -> edx "MD array shared temp" +; V16 tmp9 [V16,T21] ( 2, 7.92) int -> ebx "MD array shared temp" +; V17 tmp10 [V17,T09] ( 3, 11.88) int -> edx "MD array shared temp" +; V18 tmp11 [V18,T10] ( 3, 11.88) int -> ebx "MD array shared temp" +; V19 tmp12 [V19,T22] ( 2, 7.92) int -> [ebp-0x10] spill-single-def "MD array shared temp" +; V20 tmp13 [V20,T23] ( 2, 7.92) int -> [ebp-0x14] spill-single-def "MD array shared temp" +; V21 tmp14 [V21,T01] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V22 tmp15 [V22,T11] ( 3, 11.88) int -> ebx "MD array shared temp" +; V23 tmp16 [V23,T12] ( 3, 11.88) int -> ebx "MD array shared temp" +; V24 tmp17 [V24,T24] ( 2, 7.92) int -> esi "MD array shared temp" +; V25 tmp18 [V25,T25] ( 2, 7.92) int -> ebx "MD array shared temp" +; V26 tmp19 [V26,T02] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V27 tmp20 [V27,T13] ( 3, 11.88) int -> esi "MD array shared temp" +; V28 tmp21 [V28,T14] ( 3, 11.88) int -> ebx "MD array shared temp" +; V29 tmp22 [V29,T26] ( 2, 7.92) int -> esi "MD array shared temp" +; V30 tmp23 [V30,T27] ( 2, 7.92) int -> ebx "MD array shared temp" +; V31 tmp24 [V31,T03] ( 7, 27.72) ref -> edx single-def "MD array shared temp" +; V32 tmp25 [V32,T15] ( 3, 11.88) int -> esi "MD array shared temp" +; V33 tmp26 [V33,T16] ( 3, 11.88) int -> ebx "MD array shared temp" +; V34 cse0 [V34,T06] ( 15, 17.96) int -> edi multi-def "CSE - moderate" +; TEMP_01 int -> [ebp-0x1C]
;
-; Lcl frame size = 40
+; Lcl frame size = 16
G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -53,197 +53,187 @@ G_M29033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 40 - mov esi, edx - ; gcrRegs +[esi]
+ sub esp, 16 + mov gword ptr [ebp-0x18], edx + ; GC ptr vars +{V01}
mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- ;; size=14 bbWeight=1 PerfScore 5.75 -G_M29033_IG02: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=1 PerfScore 6.50 +G_M29033_IG02: ; bbWeight=1, gcVars=0000000000020000 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx] xor edx, edx test eax, eax je SHORT G_M29033_IG06 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG03: ; bbWeight=0.50, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edi, 8 jl SHORT G_M29033_IG06 ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG04: ; bbWeight=3.96, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG04 ;; size=17 bbWeight=3.96 PerfScore 21.78
-G_M29033_IG05: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M29033_IG05: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M29033_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M29033_IG06: ; bbWeight=0.04, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [eax+0x04] cmp edx, edi
- jae G_M29033_IG18
+ jae G_M29033_IG19
cmp dword ptr [eax+4*edx+0x08], 0
- je G_M29033_IG14
+ je G_M29033_IG15
inc edx cmp edx, 8 jl SHORT G_M29033_IG06 ;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M29033_IG07: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+G_M29033_IG07: ; bbWeight=1.98, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M29033_IG18
+ je G_M29033_IG19
mov edx, dword ptr [eax+0x08] cmp edi, 1
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x0C] sub edx, dword ptr [ecx+0x10] cmp edx, dword ptr [ecx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul edx, dword ptr [ecx+0x0C] sub ebx, dword ptr [ecx+0x14] cmp ebx, dword ptr [ecx+0x0C]
- jae G_M29033_IG18
+ jae G_M29033_IG19
add edx, ebx mov edx, gword ptr [ecx+4*edx+0x18] ; gcrRegs +[edx] cmp edi, 2
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x10] mov dword ptr [ebp-0x10], ebx cmp edi, 3
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x14] mov dword ptr [ebp-0x14], ebx mov ebx, dword ptr [ebp-0x10] sub ebx, dword ptr [edx+0x10] cmp ebx, dword ptr [edx+0x08]
- jae G_M29033_IG18
+ jae G_M29033_IG19
imul ebx, dword ptr [edx+0x0C]
- mov dword ptr [ebp-0x34], ebx
+ mov dword ptr [ebp-0x1C], ebx
mov ebx, dword ptr [ebp-0x14] sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x18], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x18] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + mov esi, dword ptr [ebp-0x1C] + add esi, ebx + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 4
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x18] - mov dword ptr [ebp-0x1C], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x18]
cmp edi, 5
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x1C]
- mov dword ptr [ebp-0x20], ebx - mov ebx, dword ptr [ebp-0x1C] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - ;; size=189 bbWeight=0.50 PerfScore 43.38 -G_M29033_IG08: ; bbWeight=0.50, isz, extend - mov ebx, dword ptr [ebp-0x20]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x24], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x24] - mov edx, gword ptr [edx+4*ebx+0x18]
+ jae G_M29033_IG19 + add esi, ebx + ;; size=187 bbWeight=1.98 PerfScore 172.75 +G_M29033_IG08: ; bbWeight=1.98, isz, extend + mov edx, gword ptr [edx+4*esi+0x18]
cmp edi, 6
- jbe G_M29033_IG18 - mov ebx, dword ptr [eax+0x20] - mov dword ptr [ebp-0x28], ebx
+ jbe G_M29033_IG19 + mov esi, dword ptr [eax+0x20]
cmp edi, 7
- jbe G_M29033_IG18
+ jbe G_M29033_IG19
mov ebx, dword ptr [eax+0x24]
- mov dword ptr [ebp-0x2C], ebx - mov ebx, dword ptr [ebp-0x28] - sub ebx, dword ptr [edx+0x10] - cmp ebx, dword ptr [edx+0x08] - jae G_M29033_IG18 - imul ebx, dword ptr [edx+0x0C] - mov dword ptr [ebp-0x34], ebx - mov ebx, dword ptr [ebp-0x2C]
+ sub esi, dword ptr [edx+0x10] + cmp esi, dword ptr [edx+0x08] + jae G_M29033_IG19 + imul esi, dword ptr [edx+0x0C]
sub ebx, dword ptr [edx+0x14]
- mov dword ptr [ebp-0x30], ebx
cmp ebx, dword ptr [edx+0x0C]
- jae G_M29033_IG18 - mov ebx, dword ptr [ebp-0x34] - add ebx, dword ptr [ebp-0x30] - mov ebx, dword ptr [edx+4*ebx+0x18]
...

+44 (+6.40%) : 71364.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorCreate_CreateVectorInt64:ValidateResult(long[],long,long,System.String):this (FullOpts)

@@ -8,26 +8,26 @@ ; 14 inlinees with PGO data; 27 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 2.50) ref -> edi this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt64>
+; V00 this [V00,T08] ( 3, 2.50) ref -> edi this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateVectorInt64>
; V01 arg1 [V01,T04] ( 12, 13.08) ref -> esi class-hnd single-def <long[]> ;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def ;* V03 arg3 [V03 ] ( 0, 0 ) long -> zero-ref single-def
-; V04 arg4 [V04,T29] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.String> -; V05 loc0 [V05,T16] ( 3, 2 ) ubyte -> edx -; V06 loc1 [V06,T02] ( 10, 17.04) int -> ecx -; V07 loc2 [V07,T03] ( 10, 17.04) int -> ecx -; V08 loc3 [V08 ] ( 30, 14.00) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 arg4 [V04,T29] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.String> +; V05 loc0 [V05,T05] ( 3, 4.96) ubyte -> ecx +; V06 loc1 [V06,T02] ( 10, 17.04) int -> eax +; V07 loc2 [V07,T03] ( 10, 17.04) int -> eax +; V08 loc3 [V08 ] ( 30, 16.96) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V12 tmp3 [V12,T05] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
+; V12 tmp3 [V12,T06] ( 5, 13.88) ref -> eax class-hnd single-def "dup spill" <ushort[]>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> ;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V16 tmp7 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp8 [V17,T12] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V17 tmp8 [V17,T13] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp10 [V19,T14] ( 3, 3 ) int -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V19 tmp10 [V19,T15] ( 3, 3 ) int -> [ebp-0x28] spill-single-def "Inlining Arg"
; V20 tmp11 [V20,T18] ( 2, 2.00) byref -> ebx single-def "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -38,14 +38,14 @@ ;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> ;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V30 tmp21 [V30,T06] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
+; V30 tmp21 [V30,T07] ( 5, 5.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> ;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V33 tmp24 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V34 tmp25 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V35 tmp26 [V35,T13] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V35 tmp26 [V35,T14] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V36 tmp27 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V37 tmp28 [V37,T15] ( 3, 3 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"
+; V37 tmp28 [V37,T16] ( 3, 3 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"
; V38 tmp29 [V38,T19] ( 2, 2.00) byref -> ebx single-def "Inlining Arg" ;* V39 tmp30 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp31 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -82,16 +82,18 @@ ; V71 tmp62 [V71,T26] ( 2, 1 ) byref -> ecx single-def "field V48._reference (fldOffset=0x0)" P-INDEP ;* V72 tmp63 [V72,T30] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP ; V73 tmp64 [V73,T17] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V74 rat0 [V74,T08] ( 3, 4.50) int -> [ebp+0x14] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP -; V75 rat1 [V75,T09] ( 3, 4.50) int -> [ebp+0x18] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP -; V76 rat2 [V76,T10] ( 3, 4.50) int -> [ebp+0x0C] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-INDEP -; V77 rat3 [V77,T11] ( 3, 4.50) int -> [ebp+0x10] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-INDEP -; V78 rat4 [V78,T00] ( 3, 23.76) byref -> eax "ReplaceWithLclVar is creating a new local variable" -; V79 rat5 [V79,T31] ( 3, 0.24) byref -> eax "ReplaceWithLclVar is creating a new local variable" -; V80 rat6 [V80,T01] ( 3, 23.76) byref -> eax "ReplaceWithLclVar is creating a new local variable" -; V81 rat7 [V81,T32] ( 3, 0.24) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V74 rat0 [V74,T09] ( 3, 4.50) int -> [ebp+0x14] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-INDEP +; V75 rat1 [V75,T10] ( 3, 4.50) int -> [ebp+0x18] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-INDEP +; V76 rat2 [V76,T11] ( 3, 4.50) int -> [ebp+0x0C] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-INDEP +; V77 rat3 [V77,T12] ( 3, 4.50) int -> [ebp+0x10] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-INDEP +; V78 rat4 [V78,T00] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" +; V79 rat5 [V79,T31] ( 3, 0.24) byref -> [ebp-0x30] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V80 rat6 [V80,T01] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" +; V81 rat7 [V81,T32] ( 3, 0.24) byref -> [ebp-0x34] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; TEMP_02 int -> [ebp-0x38] +; TEMP_01 int -> [ebp-0x3C]
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -99,7 +101,7 @@ G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 32
+ sub esp, 48
vxorps xmm4, xmm4, xmm4 vmovdqu xmmword ptr [ebp-0x24], xmm4 xor eax, eax @@ -111,8 +113,8 @@ G_M7635_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ; gcrRegs +[esi] ;; size=30 bbWeight=1 PerfScore 9.58 G_M7635_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, 1 - xor ecx, ecx
+ mov ecx, 1 + xor eax, eax
test esi, esi je SHORT G_M7635_IG06 ;; size=11 bbWeight=1 PerfScore 1.75 @@ -121,85 +123,107 @@ G_M7635_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00 jle SHORT G_M7635_IG06 ;; size=6 bbWeight=0.50 PerfScore 2.00 G_M7635_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- lea eax, bword ptr [esi+8*ecx+0x08] - ; byrRegs +[eax] - mov ebx, dword ptr [eax] - mov eax, dword ptr [eax+0x04] - ; byrRegs -[eax] - xor ebx, dword ptr [ebp+0x14] - xor eax, dword ptr [ebp+0x18] - or eax, ebx
+ lea ebx, bword ptr [esi+8*eax+0x08] + ; byrRegs +[ebx] + mov edx, dword ptr [ebx] + mov ebx, dword ptr [ebx+0x04] + ; byrRegs -[ebx] + xor edx, dword ptr [ebp+0x14] + xor ebx, dword ptr [ebp+0x18] + or edx, ebx
jne SHORT G_M7635_IG07
- inc ecx - test ecx, ecx
+ inc eax + test eax, eax
jle SHORT G_M7635_IG04 ;; size=24 bbWeight=3.96 PerfScore 46.53 G_M7635_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz jmp SHORT G_M7635_IG08 ;; size=2 bbWeight=1 PerfScore 2.00 G_M7635_IG06: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04] - jae G_M7635_IG25 - lea eax, bword ptr [esi+8*ecx+0x08] - ; byrRegs +[eax] - mov ebx, dword ptr [eax] - mov eax, dword ptr [eax+0x04] - ; byrRegs -[eax]
+ cmp eax, dword ptr [esi+0x04] + jae G_M7635_IG26 + lea ebx, bword ptr [esi+8*eax+0x08] + ; byrRegs +[ebx] + mov bword ptr [ebp-0x30], ebx + ; GC ptr vars +{V79} + mov ebx, dword ptr [ebx] + ; byrRegs -[ebx] + mov dword ptr [ebp-0x38], ebx + mov ebx, bword ptr [ebp-0x30] + ; byrRegs +[ebx] + mov ebx, dword ptr [ebx+0x04] + ; byrRegs -[ebx] + mov dword ptr [ebp-0x3C], ebx + mov ebx, dword ptr [ebp-0x38]
xor ebx, dword ptr [ebp+0x14]
- xor eax, dword ptr [ebp+0x18] - or eax, ebx
+ mov dword ptr [ebp-0x38], ebx + mov ebx, dword ptr [ebp-0x3C] + xor ebx, dword ptr [ebp+0x18] + or ebx, dword ptr [ebp-0x38]
jne SHORT G_M7635_IG07
- inc ecx - test ecx, ecx
+ inc eax + test eax, eax
jle SHORT G_M7635_IG06 jmp SHORT G_M7635_IG08
- ;; size=35 bbWeight=0.04 PerfScore 0.71 -G_M7635_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - xor edx, edx - ;; size=2 bbWeight=0.50 PerfScore 0.12
+ ;; size=57 bbWeight=0.04 PerfScore 1.06 +G_M7635_IG07: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; GC ptr vars -{V79} + xor ecx, ecx + ;; size=2 bbWeight=1.98 PerfScore 0.49
G_M7635_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, 1
+ mov eax, 1
cmp dword ptr [esi+0x04], 2 jl SHORT G_M7635_IG11 ;; size=11 bbWeight=1 PerfScore 4.25 G_M7635_IG09: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- lea eax, bword ptr [esi+8*ecx+0x08] - ; byrRegs +[eax] - mov ebx, dword ptr [eax] - mov eax, dword ptr [eax+0x04] - ; byrRegs -[eax] - xor ebx, dword ptr [ebp+0x0C] - xor eax, dword ptr [ebp+0x10] - or eax, ebx
+ lea ebx, bword ptr [esi+8*eax+0x08] + ; byrRegs +[ebx] + mov edx, dword ptr [ebx] + mov ebx, dword ptr [ebx+0x04] + ; byrRegs -[ebx] + xor edx, dword ptr [ebp+0x0C] + xor ebx, dword ptr [ebp+0x10] + or edx, ebx
jne SHORT G_M7635_IG13
- inc ecx - cmp ecx, 2
+ inc eax + cmp eax, 2
jl SHORT G_M7635_IG09 ;; size=25 bbWeight=3.96 PerfScore 46.53
-G_M7635_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M7635_IG10: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M7635_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M7635_IG11: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [esi+0x04] - jae G_M7635_IG25 - lea eax, bword ptr [esi+8*ecx+0x08] - ; byrRegs +[eax] - mov ebx, dword ptr [eax] - mov eax, dword ptr [eax+0x04] - ; byrRegs -[eax]
+ cmp eax, dword ptr [esi+0x04] + jae G_M7635_IG26 + lea ebx, bword ptr [esi+8*eax+0x08] + ; byrRegs +[ebx] + mov bword ptr [ebp-0x34], ebx + ; GC ptr vars +{V81} + mov ebx, dword ptr [ebx] + ; byrRegs -[ebx] + mov dword ptr [ebp-0x38], ebx + mov ebx, bword ptr [ebp-0x34] + ; byrRegs +[ebx] + mov ebx, dword ptr [ebx+0x04] + ; byrRegs -[ebx] + mov dword ptr [ebp-0x3C], ebx + mov ebx, dword ptr [ebp-0x38]
xor ebx, dword ptr [ebp+0x0C]
- xor eax, dword ptr [ebp+0x10] - or eax, ebx
+ mov dword ptr [ebp-0x38], ebx + mov ebx, dword ptr [ebp-0x3C] + xor ebx, dword ptr [ebp+0x10] + or ebx, dword ptr [ebp-0x38]
jne SHORT G_M7635_IG13
- inc ecx - cmp ecx, 2
+ inc eax + cmp eax, 2
jl SHORT G_M7635_IG11
- ;; size=34 bbWeight=0.04 PerfScore 0.63
...

+45 (+6.70%) : 238020.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T01] ( 13, 9.50) ref -> ebx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> ; V02 arg2 [V02,T19] ( 3, 1.50) byref -> [ebp+0x18] single-def ; V03 arg3 [V03,T23] ( 1, 0.50) struct (16) [ebp+0x08] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
-; V04 loc0 [V04,T05] ( 6, 4 ) ref -> [ebp-0x7C] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
+; V04 loc0 [V04,T06] ( 6, 4 ) ref -> [ebp-0x7C] class-hnd exact spill-single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
; V05 loc1 [V05 ] ( 8, 5 ) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]> ; V06 loc2 [V06 ] ( 8, 5 ) struct (36) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs> ;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CodeAnalysis.BitVector> @@ -27,14 +27,14 @@ ;* V16 tmp8 [V16 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]> ; V18 tmp10 [V18,T02] ( 5, 5.25) int -> [ebp-0x5C] spill-single-def "Inline stloc first use temp"
-; V19 tmp11 [V19,T09] ( 4, 3 ) ubyte -> [ebp-0x60] "Inline stloc first use temp"
+; V19 tmp11 [V19,T05] ( 4, 4.48) ubyte -> [ebp-0x60] "Inline stloc first use temp"
; V20 tmp12 [V20,T00] ( 14, 20.52) int -> [ebp-0x64] "Inline stloc first use temp" ; V21 tmp13 [V21 ] ( 3, 9 ) struct (16) [ebp-0x74] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.BitVector> ;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol> ;* V24 tmp16 [V24 ] ( 0, 0 ) struct (12) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V25 tmp17 [V25,T16] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
-; V26 tmp18 [V26,T06] ( 4, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
+; V26 tmp18 [V26,T07] ( 4, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]>
; V27 tmp19 [V27,T11] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo]> ;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo[]> ;* V29 tmp21 [V29 ] ( 0, 0 ) long -> zero-ref single-def "field V07._bits0 (fldOffset=0x0)" P-INDEP @@ -45,11 +45,11 @@ ;* V34 tmp26 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._bits (fldOffset=0x8)" P-INDEP ;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref single-def "field V15._capacity (fldOffset=0xc)" P-INDEP ; V36 tmp28 [V36,T22] ( 2, 1 ) ref -> eax "field V16.array (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T07] ( 5, 3.25) ref -> edi single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V37 tmp29 [V37,T08] ( 5, 3.25) ref -> [ebp-0x84] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP
; V38 tmp30 [V38 ] ( 3, 9 ) long -> [ebp-0x74] do-not-enreg[X] addr-exposed "field V21._bits0 (fldOffset=0x0)" P-DEP ; V39 tmp31 [V39 ] ( 3, 9 ) ref -> [ebp-0x6C] do-not-enreg[X] addr-exposed "field V21._bits (fldOffset=0x8)" P-DEP ; V40 tmp32 [V40 ] ( 3, 9 ) int -> [ebp-0x68] do-not-enreg[X] addr-exposed "field V21._capacity (fldOffset=0xc)" P-DEP
-; V41 tmp33 [V41,T08] ( 6, 3.02) ref -> [ebp-0x84] spill-single-def "field V22.array (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T09] ( 6, 3.02) ref -> [ebp-0x88] spill-single-def "field V22.array (fldOffset=0x0)" P-INDEP
;* V42 tmp34 [V42 ] ( 0, 0 ) ref -> zero-ref "field V24.DefaultType (fldOffset=0x0)" P-INDEP ;* V43 tmp35 [V43 ] ( 0, 0 ) ref -> zero-ref "field V24._extensions (fldOffset=0x4)" P-INDEP ;* V44 tmp36 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V24.DefaultNullableAnnotation (fldOffset=0x8)" P-INDEP @@ -63,7 +63,7 @@ ; V52 cse0 [V52,T10] ( 4, 3 ) int -> [ebp-0x78] spill-single-def "CSE - moderate" ; V53 cse1 [V53,T20] ( 3, 1.50) ref -> ecx "CSE - conservative" ;
-; Lcl frame size = 120
+; Lcl frame size = 124
G_M47889_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -71,7 +71,7 @@ G_M47889_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 120
+ sub esp, 124
vzeroupper vxorps xmm4, xmm4, xmm4 vmovdqu32 zmmword ptr [ebp-0x74], zmm4 @@ -201,109 +201,125 @@ G_M47889_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000048 {e mov eax, dword ptr [eax+0x7C] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x84], eax
+ mov gword ptr [ebp-0x84], edi + ; GC ptr vars +{V37} + mov gword ptr [ebp-0x88], eax
; GC ptr vars +{V41} vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [ebp-0x74], xmm0 mov edx, dword ptr [edi+0x04] mov dword ptr [ebp-0x5C], edx mov dword ptr [ebp-0x60], 1
- xor ecx, ecx - mov dword ptr [ebp-0x64], ecx
+ xor eax, eax + ; gcrRegs -[eax]
test edx, edx
- ;; size=190 bbWeight=0.50 PerfScore 57.92 -G_M47889_IG07: ; bbWeight=0.50, isz, extend - jle SHORT G_M47889_IG14 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M47889_IG08: ; bbWeight=0.25, gcVars=00000120 {V04 V41}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - test eax, eax - je SHORT G_M47889_IG13 - mov eax, dword ptr [edi+0x04] - ; gcrRegs -[eax] - mov eax, gword ptr [ebp-0x84] - ; gcrRegs +[eax] - cmp dword ptr [eax+0x04], edx - jl SHORT G_M47889_IG15 - ;; size=18 bbWeight=0.25 PerfScore 2.06
+ ;; size=193 bbWeight=0.50 PerfScore 57.92 +G_M47889_IG07: ; bbWeight=0.50, extend + jle G_M47889_IG16 + ;; size=6 bbWeight=0.50 PerfScore 0.50 +G_M47889_IG08: ; bbWeight=0.25, gcVars=00000340 {V04 V37 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp gword ptr [ebp-0x88], 0 + je G_M47889_IG15 + mov edi, dword ptr [edi+0x04] + ; gcrRegs -[edi] + mov edi, gword ptr [ebp-0x88] + ; gcrRegs +[edi] + cmp dword ptr [edi+0x04], edx + jl SHORT G_M47889_IG14 + ;; size=27 bbWeight=0.25 PerfScore 2.50
G_M47889_IG09: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
lea ecx, [ebp-0x74]
- mov edx, dword ptr [ebp-0x64]
+ mov dword ptr [ebp-0x64], eax + mov edx, eax
call [<unknown method>] test eax, eax jne SHORT G_M47889_IG11
- ;; size=16 bbWeight=3.96 PerfScore 22.77
+ ;; size=18 bbWeight=3.96 PerfScore 23.76
G_M47889_IG10: ; bbWeight=1.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz push esi
- mov eax, dword ptr [ebp-0x64] - push gword ptr [edi+4*eax+0x08] - mov dword ptr [ebp-0x64], eax - lea edx, [eax+2*eax]
+ mov eax, gword ptr [ebp-0x84] + ; gcrRegs +[eax] + mov ecx, dword ptr [ebp-0x64] + push gword ptr [eax+4*ecx+0x08] + mov dword ptr [ebp-0x64], ecx + lea edx, [ecx+2*ecx]
shl edx, 2 add edx, 8
- add edx, bword ptr [ebp-0x84]
+ add edx, edi
; byrRegs +[edx] push dword ptr [edx+0x08] push gword ptr [edx+0x04] push gword ptr [edx] push gword ptr [ebp-0x7C] push 0
- lea ecx, [ebp-0x10] - push ecx
+ lea edi, [ebp-0x10] + ; gcrRegs -[edi] + push edi
push 0 lea edx, [ebp-0x34] ; byrRegs -[edx] mov ecx, ebx ; gcrRegs +[ecx] call [<unknown method>]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
test eax, eax
- jne SHORT G_M47889_IG11
+ jne SHORT G_M47889_IG13
xor ecx, ecx
- xor eax, eax - mov dword ptr [ebp-0x60], eax - ;; size=67 bbWeight=1.98 PerfScore 49.99
+ mov dword ptr [ebp-0x60], ecx + mov edi, gword ptr [ebp-0x88] + ; gcrRegs +[edi] + ;; size=73 bbWeight=1.98 PerfScore 49.99
G_M47889_IG11: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, dword ptr [ebp-0x64] inc ecx
- mov dword ptr [ebp-0x64], ecx
cmp ecx, dword ptr [ebp-0x5C]
+ mov eax, ecx
jl SHORT G_M47889_IG09
- ;; size=12 bbWeight=3.96 PerfScore 20.79 -G_M47889_IG12: ; bbWeight=0.50, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=3.96 PerfScore 17.82 +G_M47889_IG12: ; bbWeight=1.98, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V41} - jmp SHORT G_M47889_IG18 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M47889_IG13: ; bbWeight=0.12, gcVars=00000120 {V04 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ebx esi edi] - ; GC ptr vars +{V08 V41} - jmp SHORT G_M47889_IG15
+ ; GC ptr vars -{V37 V41} + jmp G_M47889_IG20 + ;; size=5 bbWeight=1.98 PerfScore 3.96 +G_M47889_IG13: ; bbWeight=0.99, gcVars=00000340 {V04 V37 V41}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ebx esi] + ; GC ptr vars +{V08 V09 V37 V41} + mov edi, gword ptr [ebp-0x88] + ; gcrRegs +[edi] + jmp SHORT G_M47889_IG11 + ;; size=8 bbWeight=0.99 PerfScore 2.97 +G_M47889_IG14: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov edi, gword ptr [ebp-0x84] + jmp SHORT G_M47889_IG17 + ;; size=8 bbWeight=0.12 PerfScore 0.38 +G_M47889_IG15: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M47889_IG17
;; size=2 bbWeight=0.12 PerfScore 0.25
-G_M47889_IG14: ; bbWeight=0.25, gcVars=00000020 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47889_IG16: ; bbWeight=0.25, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars -{V08 V41}
+ ; GC ptr vars -{V08 V09 V37 V41}
mov ebx, gword ptr [ebp-0x7C] ; gcrRegs +[ebx]
- jmp G_M47889_IG22
+ jmp G_M47889_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M47889_IG15: ; bbWeight=0.04, gcVars=00000120 {V04 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47889_IG17: ; bbWeight=0.04, gcVars=00000340 {V04 V37 V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- ; GC ptr vars +{V08 V41}
+ ; GC ptr vars +{V08 V09 V37 V41}
lea ecx, [ebp-0x74]
- mov edx, dword ptr [ebp-0x64]
+ mov dword ptr [ebp-0x64], eax + mov edx, eax
call [<unknown method>] test eax, eax
- jne SHORT G_M47889_IG17 - ;; size=16 bbWeight=0.04 PerfScore 0.23 -G_M47889_IG16: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M47889_IG19 + ;; size=18 bbWeight=0.04 PerfScore 0.24 +G_M47889_IG18: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push esi mov eax, dword ptr [ebp-0x64] push gword ptr [edi+4*eax+0x08]
- mov ecx, gword ptr [ebp-0x84]
+ mov ecx, gword ptr [ebp-0x88]
; gcrRegs +[ecx] cmp eax, dword ptr [ecx+0x04]
- jae G_M47889_IG25
+ jae G_M47889_IG28
mov dword ptr [ebp-0x64], eax lea edx, [eax+2*eax] shl edx, 2 @@ -326,25 +342,28 @@ G_M47889_IG16: ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRe call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M47889_IG17
+ jne SHORT G_M47889_IG19 + xor ecx, ecx
xor eax, eax mov dword ptr [ebp-0x60], eax
- ;; size=76 bbWeight=0.02 PerfScore 0.57 -G_M47889_IG17: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=78 bbWeight=0.02 PerfScore 0.57 +G_M47889_IG19: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
...

+30 (+10.95%) : 240294.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)

@@ -10,13 +10,13 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 18,194.33) int -> esi
+; V00 arg0 [V00,T00] ( 18,194.96) int -> esi
; V01 arg1 [V01,T05] ( 10, 8.84) int -> edi
-; V02 arg2 [V02,T12] ( 2, 1.00) byref -> [ebp+0x0C] single-def -; V03 arg3 [V03,T13] ( 2, 1.00) byref -> [ebp+0x08] single-def -; V04 loc0 [V04,T08] ( 5, 4.52) int -> ebx
+; V02 arg2 [V02,T11] ( 2, 1.63) byref -> [ebp+0x0C] single-def +; V03 arg3 [V03,T12] ( 2, 1.63) byref -> [ebp+0x08] single-def +; V04 loc0 [V04,T08] ( 5, 4.52) int -> [ebp-0x10] spill-single-def
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref
-; V06 loc2 [V06,T06] ( 4, 10.06) int -> [ebp-0x10]
+; V06 loc2 [V06,T06] ( 4, 10.69) int -> [ebp-0x14]
; V07 loc3 [V07,T02] ( 4, 49.73) int -> edi ;* V08 loc4 [V08 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]> ;* V09 loc5 [V09 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]> @@ -50,7 +50,7 @@ ;* V37 loc33 [V37 ] ( 0, 0 ) ushort -> zero-ref ;* V38 loc34 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 loc35 [V39 ] ( 0, 0 ) int -> zero-ref
-; V40 loc36 [V40,T01] ( 4, 97.32) int -> eax
+; V40 loc36 [V40,T01] ( 4, 97.32) int -> ebx
; V41 tmp0 [V41,T09] ( 2, 1.04) int -> ecx ; V42 tmp1 [V42,T10] ( 2, 1.04) int -> ecx ;* V43 tmp2 [V43 ] ( 0, 0 ) int -> zero-ref @@ -61,12 +61,12 @@ ;* V48 tmp7 [V48 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V49 tmp8 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp9 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 rat0 [V51,T03] ( 8, 40.58) int -> edx "field V05.lo (fldOffset=0x0)" P-INDEP -; V52 rat1 [V52,T04] ( 8, 40.58) int -> ecx "field V05.hi (fldOffset=0x4)" P-INDEP -; V53 rat2 [V53,T11] ( 3, 1.20) byref -> edi "ReplaceWithLclVar is creating a new local variable" -; V54 rat3 [V54,T07] ( 3, 4.80) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V51 rat0 [V51,T03] ( 8, 41.21) int -> edx "field V05.lo (fldOffset=0x0)" P-INDEP +; V52 rat1 [V52,T04] ( 8, 41.21) int -> ecx "field V05.hi (fldOffset=0x4)" P-INDEP +; V53 rat2 [V53,T13] ( 3, 1.20) byref -> ebx "ReplaceWithLclVar is creating a new local variable" +; V54 rat3 [V54,T07] ( 3, 8.58) byref -> edi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M64904_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -74,15 +74,17 @@ G_M64904_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
+ sub esp, 8
mov esi, ecx mov edi, edx
- ;; size=11 bbWeight=1 PerfScore 5.75 -G_M64904_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, bword ptr [ebp+0x0C] + ; byrRegs +[ebx] + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M64904_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test edi, edi jge SHORT G_M64904_IG04 ;; size=4 bbWeight=1 PerfScore 1.25
-G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -90,34 +92,37 @@ G_M64904_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=0.80 PerfScore 2.80
-G_M64904_IG04: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG04: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
test esi, esi jne SHORT G_M64904_IG06 ;; size=4 bbWeight=1.00 PerfScore 1.25
-G_M64904_IG05: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG05: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor ecx, ecx test edi, edi sete cl test cl, cl
- je SHORT G_M64904_IG08
+ je SHORT G_M64904_IG09
;; size=11 bbWeight=0.52 PerfScore 1.43
-G_M64904_IG06: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG06: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, esi mov edx, edi call [<unknown method>]
- mov ebx, eax - test ebx, ebx - jl SHORT G_M64904_IG10 - ;; size=16 bbWeight=1.00 PerfScore 5.00 -G_M64904_IG07: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x10], eax + test eax, eax + jl SHORT G_M64904_IG08 + ;; size=17 bbWeight=1.00 PerfScore 5.75 +G_M64904_IG07: ; bbWeight=0.52, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor ecx, ecx
- cmp edi, ebx
+ cmp edi, eax
setge cl test cl, cl
- jne SHORT G_M64904_IG11 - jmp SHORT G_M64904_IG10
+ jne SHORT G_M64904_IG12 + jmp SHORT G_M64904_IG11
;; size=13 bbWeight=0.52 PerfScore 2.47
-G_M64904_IG08: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + jmp SHORT G_M64904_IG11 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M64904_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -126,16 +131,17 @@ G_M64904_IG08: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 ; gcrRegs -[ecx edx] jmp SHORT G_M64904_IG06 ;; size=18 bbWeight=0.80 PerfScore 4.40
-G_M64904_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG10: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
xor edx, edx xor ecx, ecx
- xor ebx, ebx
+ xor eax, eax
lea edi, [esi+2*edi] cmp esi, edi
- jae SHORT G_M64904_IG18 - jmp SHORT G_M64904_IG16 - ;; size=15 bbWeight=0.80 PerfScore 3.60 -G_M64904_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jae SHORT G_M64904_IG20 + mov bword ptr [ebp+0x0C], ebx + jmp SHORT G_M64904_IG17 + ;; size=18 bbWeight=0.80 PerfScore 4.40 +G_M64904_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -143,104 +149,114 @@ G_M64904_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M64904_IG11: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - lea esi, [esi+2*ebx] - sub edi, ebx - jne SHORT G_M64904_IG09 - ;; size=7 bbWeight=1.00 PerfScore 1.75 -G_M64904_IG12: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov edi, bword ptr [ebp+0x0C] - ; byrRegs +[edi]
+G_M64904_IG12: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + mov eax, dword ptr [ebp-0x10] + lea esi, [esi+2*eax] + sub edi, eax + jne SHORT G_M64904_IG10 + ;; size=10 bbWeight=1.00 PerfScore 2.75 +G_M64904_IG13: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
xor eax, eax
- mov dword ptr [edi], eax - ;; size=7 bbWeight=0.20 PerfScore 0.45 -G_M64904_IG13: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref - mov dword ptr [edi+0x04], eax
+ mov dword ptr [ebx], eax + ;; size=4 bbWeight=0.20 PerfScore 0.25 +G_M64904_IG14: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref + mov dword ptr [ebx+0x04], eax
;; size=3 bbWeight=0.20 PerfScore 0.20
-G_M64904_IG14: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[edi] - mov edi, bword ptr [ebp+0x08] - ; byrRegs +[edi] - mov dword ptr [edi], eax
+G_M64904_IG15: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[ebx] + mov ebx, bword ptr [ebp+0x08] + ; byrRegs +[ebx] + mov dword ptr [ebx], eax
mov eax, esi ;; size=7 bbWeight=0.20 PerfScore 0.45
-G_M64904_IG15: ; bbWeight=0.20, epilog, nogc, extend - pop ecx
+G_M64904_IG16: ; bbWeight=0.20, epilog, nogc, extend + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 8
- ;; size=8 bbWeight=0.20 PerfScore 0.90 -G_M64904_IG16: ; bbWeight=38.62, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; byrRegs -[edi] - movzx eax, word ptr [esi] - cmp eax, 127 - ja SHORT G_M64904_IG20
+ ;; size=10 bbWeight=0.20 PerfScore 0.90 +G_M64904_IG17: ; bbWeight=38.62, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ebx] + movzx ebx, word ptr [esi] + cmp ebx, 127 + ja SHORT G_M64904_IG22
;; size=8 bbWeight=38.62 PerfScore 125.52
-G_M64904_IG17: ; bbWeight=42.91, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M64904_IG18: ; bbWeight=42.91, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
add esi, 2 cmp esi, edi
- jb SHORT G_M64904_IG16
+ jb SHORT G_M64904_IG17
;; size=7 bbWeight=42.91 PerfScore 64.37
-G_M64904_IG18: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov edi, bword ptr [ebp+0x0C]
+G_M64904_IG19: ; bbWeight=21.46, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, bword ptr [ebp+0x0C] + ; byrRegs +[ebx] + ;; size=3 bbWeight=21.46 PerfScore 21.46 +G_M64904_IG20: ; bbWeight=1.43, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref + mov edi, ebx
; byrRegs +[edi]
- mov eax, edi - ; byrRegs +[eax] - mov dword ptr [eax], edx - mov dword ptr [eax+0x04], ecx - mov edi, bword ptr [ebp+0x08] - mov dword ptr [edi], ebx
+ mov dword ptr [edi], edx + mov dword ptr [edi+0x04], ecx + mov ebx, bword ptr [ebp+0x08] + mov dword ptr [ebx], eax
mov eax, esi
- ; byrRegs -[eax] - ;; size=17 bbWeight=0.80 PerfScore 4.40 -G_M64904_IG19: ; bbWeight=0.80, epilog, nogc, extend - pop ecx
+ ;; size=14 bbWeight=1.43 PerfScore 6.43 +G_M64904_IG21: ; bbWeight=1.43, epilog, nogc, extend + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 8
- ;; size=8 bbWeight=0.80 PerfScore 3.60 -G_M64904_IG20: ; bbWeight=10.04, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - ; byrRegs -[edi] - mov dword ptr [ebp-0x10], ebx - lea ebx, [eax+0x0001F800]
...

libraries.crossgen2.windows.x86.checked.mch

-22 (-8.91%) : 153759.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)

@@ -13,17 +13,17 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag> ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]> ;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
-; V04 loc2 [V04,T05] ( 4, 5 ) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>> -; V05 loc3 [V05,T04] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
+; V04 loc2 [V04,T04] ( 4, 6.48) ref -> ebx class-hnd exact single-def <<unknown class>> +; V05 loc3 [V05,T05] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
; V06 loc4 [V06,T00] ( 11, 20.50) int -> [ebp-0x14] ; V07 loc5 [V07 ] ( 4, 8 ) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers>
-; V08 tmp0 [V08,T06] ( 3, 2 ) ref -> eax single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V08 tmp0 [V08,T06] ( 3, 3.48) ref -> eax single-def "field V02.array (fldOffset=0x0)" P-INDEP
; V09 tmp1 [V09,T03] ( 7, 7.25) ref -> edi "field V03.array (fldOffset=0x0)" P-INDEP ; V10 tmp2 [V10 ] ( 4, 8 ) ref -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V07.Type (fldOffset=0x0)" P-DEP ; V11 tmp3 [V11 ] ( 2, 4 ) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V07.CustomModifiers (fldOffset=0x4)" P-DEP ; V12 tmp4 [V12,T01] ( 4, 16 ) ref -> ecx "argument with side effect" ;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M55964_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -31,7 +31,7 @@ G_M55964_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 16
xor eax, eax mov dword ptr [ebp-0x1C], eax mov dword ptr [ebp-0x18], eax @@ -60,33 +60,33 @@ G_M55964_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov eax, gword ptr [eax] ; gcrRegs +[eax] ; byrRegs -[eax]
- jmp G_M55964_IG12
+ jmp G_M55964_IG10
;; size=13 bbWeight=0.50 PerfScore 3.50 G_M55964_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] +[esi edi] mov ecx, dword ptr [edi+0x04] call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V04}
+ mov ebx, eax + ; gcrRegs +[ebx]
mov eax, dword ptr [edi+0x04] ; gcrRegs -[eax] dec eax mov dword ptr [ebp-0x10], eax xor edx, edx test eax, eax
- jl SHORT G_M55964_IG08 - ;; size=25 bbWeight=0.50 PerfScore 5.38 -G_M55964_IG05: ; bbWeight=0.25, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jl SHORT G_M55964_IG09 + ;; size=24 bbWeight=0.50 PerfScore 5.00 +G_M55964_IG05: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], eax
- jle SHORT G_M55964_IG09
+ jle SHORT G_M55964_IG08
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] ; const ptr - push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] ; const ptr + push gword ptr [esi+eax]
lea edx, [ebp-0x1C] cmp dword ptr [ecx], ecx call [<unknown method>] @@ -97,35 +97,26 @@ G_M55964_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx] +[eax] push eax mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx] call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14] - inc ebx - cmp ebx, dword ptr [ebp-0x10] - mov edx, ebx
+ mov edx, dword ptr [ebp-0x14] + inc edx + cmp edx, dword ptr [ebp-0x10]
jle SHORT G_M55964_IG06
- ;; size=60 bbWeight=3.96 PerfScore 110.88 -G_M55964_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=56 bbWeight=3.96 PerfScore 106.92 +G_M55964_IG07: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - jmp SHORT G_M55964_IG11 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M55964_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] - mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - jmp SHORT G_M55964_IG11 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M55964_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] +[esi edi]
+ jmp SHORT G_M55964_IG09 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M55964_IG08: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi edi]
mov dword ptr [ebp-0x14], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] - push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] + push gword ptr [esi+eax]
lea edx, [ebp-0x1C] cmp dword ptr [ecx], ecx call [<unknown method>] @@ -136,30 +127,25 @@ G_M55964_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx] +[eax] push eax mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx] call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14] - inc ebx - mov edx, dword ptr [ebp-0x10] - cmp ebx, edx - jle SHORT G_M55964_IG13 - ;; size=60 bbWeight=0.04 PerfScore 1.08 -G_M55964_IG10: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14] + inc edx + mov ecx, dword ptr [ebp-0x10] + cmp edx, ecx + jle SHORT G_M55964_IG08 + ;; size=58 bbWeight=0.04 PerfScore 1.05 +G_M55964_IG09: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M55964_IG11: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [(reloc)] ; <unknown method> mov ecx, ebx ; gcrRegs +[ecx]
- ; GC ptr vars -{V04}
call [<unknown method>] ; gcrRegs -[ecx ebx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.62 -G_M55964_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=14 bbWeight=1.98 PerfScore 10.39 +G_M55964_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -167,13 +153,7 @@ G_M55964_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M55964_IG13: ; bbWeight=0.02, gcVars=00000020 {V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi edi] - ; GC ptr vars +{V04 V05} - mov edx, ebx - jmp SHORT G_M55964_IG09 - ;; size=4 bbWeight=0.02 PerfScore 0.05
-; Total bytes of code 247, prolog size 17, PerfScore 151.02, instruction count 84, allocated bytes for code 247 (MethodHash=fa9c2563) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 225, prolog size 17, PerfScore 156.07, instruction count 77, allocated bytes for code 225 (MethodHash=fa9c2563) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================

-22 (-8.63%) : 153757.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)

@@ -14,18 +14,18 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag> ;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]> ;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]>
-; V05 loc2 [V05,T05] ( 4, 5 ) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>> -; V06 loc3 [V06,T04] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
+; V05 loc2 [V05,T04] ( 4, 6.48) ref -> ebx class-hnd exact single-def <<unknown class>> +; V06 loc3 [V06,T05] ( 5, 5.25) int -> [ebp-0x10] spill-single-def
; V07 loc4 [V07,T00] ( 11, 20.50) int -> [ebp-0x14] ; V08 loc5 [V08 ] ( 4, 8 ) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers>
-; V09 tmp0 [V09,T07] ( 3, 2 ) ref -> eax single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V09 tmp0 [V09,T07] ( 3, 3.48) ref -> eax single-def "field V03.array (fldOffset=0x0)" P-INDEP
; V10 tmp1 [V10,T03] ( 7, 7.25) ref -> edi "field V04.array (fldOffset=0x0)" P-INDEP ; V11 tmp2 [V11 ] ( 4, 8 ) ref -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V08.Type (fldOffset=0x0)" P-DEP ; V12 tmp3 [V12 ] ( 2, 4 ) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V08.CustomModifiers (fldOffset=0x4)" P-DEP ; V13 tmp4 [V13,T06] ( 2, 4 ) ref -> ecx single-def "argument with side effect" ; V14 tmp5 [V14,T01] ( 4, 16 ) ref -> ecx "argument with side effect" ;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M24968_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M24968_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 16
xor eax, eax mov dword ptr [ebp-0x1C], eax mov dword ptr [ebp-0x18], eax @@ -64,33 +64,33 @@ G_M24968_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov eax, gword ptr [eax] ; gcrRegs +[eax] ; byrRegs -[eax]
- jmp G_M24968_IG12
+ jmp G_M24968_IG10
;; size=13 bbWeight=0.50 PerfScore 3.50 G_M24968_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] +[esi edi] mov ecx, dword ptr [edi+0x04] call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x20], eax - ; GC ptr vars +{V05}
+ mov ebx, eax + ; gcrRegs +[ebx]
mov eax, dword ptr [edi+0x04] ; gcrRegs -[eax] dec eax mov dword ptr [ebp-0x10], eax xor edx, edx test eax, eax
- jl SHORT G_M24968_IG08 - ;; size=25 bbWeight=0.50 PerfScore 5.38 -G_M24968_IG05: ; bbWeight=0.25, gcVars=00000020 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jl SHORT G_M24968_IG09 + ;; size=24 bbWeight=0.50 PerfScore 5.00 +G_M24968_IG05: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi+0x04], eax
- jle SHORT G_M24968_IG09
+ jle SHORT G_M24968_IG08
;; size=5 bbWeight=0.25 PerfScore 1.00
-G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] ; const ptr - push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] ; const ptr + push gword ptr [esi+eax]
lea edx, [ebp-0x1C] cmp dword ptr [ecx], ecx call [<unknown method>] @@ -101,35 +101,26 @@ G_M24968_IG06: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx] +[eax] push eax mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx] call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14] - inc ebx - cmp ebx, dword ptr [ebp-0x10] - mov edx, ebx
+ mov edx, dword ptr [ebp-0x14] + inc edx + cmp edx, dword ptr [ebp-0x10]
jle SHORT G_M24968_IG06
- ;; size=60 bbWeight=3.96 PerfScore 110.88 -G_M24968_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=56 bbWeight=3.96 PerfScore 106.92 +G_M24968_IG07: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - jmp SHORT G_M24968_IG11 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M24968_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] - mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - jmp SHORT G_M24968_IG11 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M24968_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx] +[esi edi]
+ jmp SHORT G_M24968_IG09 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M24968_IG08: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[esi edi]
mov dword ptr [ebp-0x14], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx]
- mov ebx, dword ptr [(reloc)] - push gword ptr [esi+ebx]
+ mov eax, dword ptr [(reloc)] + push gword ptr [esi+eax]
lea edx, [ebp-0x1C] cmp dword ptr [ecx], ecx call [<unknown method>] @@ -140,30 +131,25 @@ G_M24968_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx] +[eax] push eax mov edx, dword ptr [ebp-0x14]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, ebx
; gcrRegs +[ecx] call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[eax ecx]
- mov ebx, dword ptr [ebp-0x14] - inc ebx - mov edx, dword ptr [ebp-0x10] - cmp ebx, edx - jle SHORT G_M24968_IG13 - ;; size=60 bbWeight=0.04 PerfScore 1.08 -G_M24968_IG10: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14] + inc edx + mov ecx, dword ptr [ebp-0x10] + cmp edx, ecx + jle SHORT G_M24968_IG08 + ;; size=58 bbWeight=0.04 PerfScore 1.05 +G_M24968_IG09: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
- mov ebx, gword ptr [ebp-0x20] - ; gcrRegs +[ebx] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M24968_IG11: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [(reloc)] ; <unknown method> mov ecx, ebx ; gcrRegs +[ecx]
- ; GC ptr vars -{V05}
call [<unknown method>] ; gcrRegs -[ecx ebx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.62 -G_M24968_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=14 bbWeight=1.98 PerfScore 10.39 +G_M24968_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C] pop ebx pop esi @@ -171,13 +157,7 @@ G_M24968_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ret 8 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M24968_IG13: ; bbWeight=0.02, gcVars=00000020 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi edi] - ; GC ptr vars +{V05} - mov edx, ebx - jmp SHORT G_M24968_IG09 - ;; size=4 bbWeight=0.02 PerfScore 0.05
-; Total bytes of code 255, prolog size 17, PerfScore 154.02, instruction count 86, allocated bytes for code 255 (MethodHash=80a39e77) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 233, prolog size 17, PerfScore 159.07, instruction count 79, allocated bytes for code 233 (MethodHash=80a39e77) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================

-42 (-7.46%) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)

@@ -8,22 +8,22 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 18, 17.58) ref -> [ebp-0x1C] class-hnd single-def <int[]>
+; V00 arg0 [V00,T07] ( 18, 23.44) ref -> esi class-hnd single-def <int[]>
; V01 arg1 [V01,T11] ( 3, 17 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V02 arg2 [V02,T06] ( 5, 19 ) ref -> [ebp-0x20] class-hnd single-def <System.String[]> -; V03 loc0 [V03,T07] ( 13, 20.85) ref -> [ebp-0x24] class-hnd exact spill-single-def <<unknown class>> -; V04 loc1 [V04,T01] ( 24, 73.81) int -> edx
+; V02 arg2 [V02,T08] ( 5, 19.98) ref -> [ebp-0x1C] class-hnd single-def <System.String[]> +; V03 loc0 [V03,T09] ( 13, 20.85) ref -> [ebp-0x20] class-hnd exact spill-single-def <<unknown class>> +; V04 loc1 [V04,T00] ( 24, 92.87) int -> edx
; V05 loc2 [V05,T10] ( 10, 17.04) int -> ecx
-; V06 loc3 [V06,T05] ( 14, 33.02) int -> [ebp-0x10] -; V07 loc4 [V07,T00] ( 16, 76 ) int -> [ebp-0x14] -; V08 loc5 [V08,T09] ( 12, 18.54) int -> ecx
+; V06 loc3 [V06,T05] ( 14, 34 ) int -> [ebp-0x10] +; V07 loc4 [V07,T01] ( 16, 76 ) int -> [ebp-0x14] +; V08 loc5 [V08,T06] ( 12, 25.88) int -> ecx
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.String>
-; V10 tmp1 [V10,T04] ( 22, 55.24) int -> ebx "V01.[004..008)"
+; V10 tmp1 [V10,T04] ( 22, 56.72) int -> ebx "V01.[004..008)"
; V11 tmp2 [V11,T02] ( 4, 64 ) ref -> eax "argument with side effect" ; V12 tmp3 [V12,T03] ( 4, 64 ) ref -> edi "argument with side effect"
-; V13 cse0 [V13,T12] ( 5, 6.50) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 cse0 [V13,T12] ( 5, 8.46) int -> [ebp-0x18] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M50985_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -31,88 +31,77 @@ G_M50985_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 24 - mov edi, ecx - ; gcrRegs +[edi] - mov esi, edx
+ sub esp, 20 + mov esi, ecx
; gcrRegs +[esi]
+ mov edi, edx + ; gcrRegs +[edi]
;; size=13 bbWeight=1 PerfScore 5.00 G_M50985_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, dword ptr [ebp+0x0C] mov ecx, ebx call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x24], eax
+ mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V03} xor ecx, ecx test ebx, ebx jle SHORT G_M50985_IG07 ;; size=20 bbWeight=1 PerfScore 6.75
-G_M50985_IG03: ; bbWeight=0.50, gcVars=00000080 {V03}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - test edi, edi
+G_M50985_IG03: ; bbWeight=0.50, gcVars=00000200 {V03}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + test esi, esi
je SHORT G_M50985_IG06
- cmp dword ptr [edi+0x04], ebx
+ cmp dword ptr [esi+0x04], ebx
jl SHORT G_M50985_IG06 ;; size=9 bbWeight=0.50 PerfScore 2.62 G_M50985_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [edi+4*ecx+0x08], -1
+ mov dword ptr [esi+4*ecx+0x08], -1
inc ecx cmp ecx, ebx jl SHORT G_M50985_IG04 ;; size=13 bbWeight=3.96 PerfScore 9.90
-G_M50985_IG05: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M50985_IG05: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50985_IG07
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M50985_IG06: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [edi+0x04] - jae G_M50985_IG46 - mov gword ptr [ebp-0x1C], edi - ; GC ptr vars +{V00} - mov dword ptr [edi+4*ecx+0x08], -1
+ cmp ecx, dword ptr [esi+0x04] + jae G_M50985_IG44 + mov dword ptr [esi+4*ecx+0x08], -1
inc ecx cmp ecx, ebx
- mov edi, gword ptr [ebp-0x1C]
jl SHORT G_M50985_IG06
- ;; size=28 bbWeight=0.04 PerfScore 0.34 -G_M50985_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref - ; GC ptr vars -{V00}
+ ;; size=22 bbWeight=0.04 PerfScore 0.26 +G_M50985_IG07: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
xor edx, edx
- mov ecx, dword ptr [esi+0x04]
+ mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x18], ecx test ecx, ecx
- jle G_M50985_IG23 - ;; size=16 bbWeight=1 PerfScore 4.50 -G_M50985_IG08: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ jle G_M50985_IG21 + ;; size=16 bbWeight=1.98 PerfScore 8.91 +G_M50985_IG08: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax+0x04], ecx
- jl G_M50985_IG16 - ;; size=9 bbWeight=0.50 PerfScore 2.00
+ jl SHORT G_M50985_IG15 + ;; size=5 bbWeight=0.50 PerfScore 2.00
G_M50985_IG09: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] xor ecx, ecx test ebx, ebx
- jle SHORT G_M50985_IG14
+ jle SHORT G_M50985_IG13
;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M50985_IG10: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M50985_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V00} - ;; size=3 bbWeight=1.98 PerfScore 1.98 -G_M50985_IG11: ; bbWeight=15.84, gcVars=00000180 {V00 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edi] - mov gword ptr [ebp-0x20], esi
; GC ptr vars +{V02} mov dword ptr [ebp-0x10], edx
- mov edi, gword ptr [esi+4*edx+0x08] - ; gcrRegs +[edi] - mov esi, bword ptr [ebp+0x08] - ; gcrRegs -[esi] - ; byrRegs +[esi]
+ mov edi, gword ptr [edi+4*edx+0x08] + mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax]
mov dword ptr [ebp-0x14], ecx
- mov ecx, gword ptr [esi+4*ecx]
+ mov ecx, gword ptr [eax+4*ecx]
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- ; byrRegs -[esi]
+ ; byrRegs -[eax]
mov edx, eax ; gcrRegs +[edx] mov ecx, edi @@ -121,84 +110,71 @@ G_M50985_IG11: ; bbWeight=15.84, gcVars=00000180 {V00 V03}, gcrefRegs=000 call [System.String:Equals(System.String):ubyte:this] ; gcrRegs -[eax ecx edx edi] test eax, eax
- jne SHORT G_M50985_IG13 - mov esi, dword ptr [ebp-0x14] - inc esi - cmp esi, ebx - mov ecx, esi
+ jne SHORT G_M50985_IG12 + mov edi, dword ptr [ebp-0x14] + inc edi + cmp edi, ebx + mov ecx, edi
mov edx, dword ptr [ebp-0x10]
- mov esi, gword ptr [ebp-0x20] - ; gcrRegs +[esi] - jl SHORT G_M50985_IG11
+ mov edi, gword ptr [ebp-0x1C] + ; gcrRegs +[edi] + jl SHORT G_M50985_IG10
;; size=59 bbWeight=15.84 PerfScore 419.76
-G_M50985_IG12: ; bbWeight=3.96, gcVars=00000180 {V00 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M50985_IG11: ; bbWeight=3.96, gcVars=00000200 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - jmp SHORT G_M50985_IG14 - ;; size=5 bbWeight=3.96 PerfScore 11.88 -G_M50985_IG13: ; bbWeight=1.98, gcVars=000001C0 {V00 V02 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi edi] - ; GC ptr vars +{V02 V06} - mov esi, dword ptr [ebp-0x14] - mov edi, gword ptr [ebp-0x1C] - ; gcrRegs +[edi] - cmp esi, dword ptr [edi+0x04] - jae G_M50985_IG46 - mov gword ptr [ebp-0x1C], edi
+ jmp SHORT G_M50985_IG13 + ;; size=2 bbWeight=3.96 PerfScore 7.92 +G_M50985_IG12: ; bbWeight=1.98, gcVars=00000300 {V02 V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edi] + ; GC ptr vars +{V02 V08} + mov edi, dword ptr [ebp-0x14] + cmp edi, dword ptr [esi+0x04] + jae G_M50985_IG44
mov ecx, dword ptr [ebp-0x10]
- mov dword ptr [edi+4*esi+0x08], ecx - mov eax, gword ptr [ebp-0x24]
+ mov dword ptr [esi+4*edi+0x08], ecx + mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax] mov byte ptr [eax+ecx+0x08], 1 mov edx, ecx
- mov ecx, esi - mov esi, gword ptr [ebp-0x20] - ; gcrRegs +[esi]
+ mov ecx, edi
mov edi, gword ptr [ebp-0x1C]
- ;; size=43 bbWeight=1.98 PerfScore 26.73 -G_M50985_IG14: ; bbWeight=3.96, gcVars=00000080 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi] + ;; size=34 bbWeight=1.98 PerfScore 20.79 +G_M50985_IG13: ; bbWeight=3.96, gcVars=00000200 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- ; GC ptr vars -{V00 V02 V06}
+ ; GC ptr vars -{V02 V08}
cmp ecx, ebx
- je G_M50985_IG44
+ je G_M50985_IG42
inc edx cmp dword ptr [ebp-0x18], edx
- jg G_M50985_IG09 - ;; size=18 bbWeight=3.96 PerfScore 17.82 -G_M50985_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - mov eax, gword ptr [ebp-0x24]
+ jg SHORT G_M50985_IG09 + ;; size=14 bbWeight=3.96 PerfScore 17.82 +G_M50985_IG14: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edi] + mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax]
- jmp G_M50985_IG23 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M50985_IG16: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[esi]
+ jmp G_M50985_IG21 + ;; size=8 bbWeight=1.98 PerfScore 5.94 +G_M50985_IG15: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] +[edi]
xor ecx, ecx test ebx, ebx
- jle SHORT G_M50985_IG21
+ jle SHORT G_M50985_IG19
;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M50985_IG17: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M50985_IG16: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x1C], edi ...

+20 (+9.01%) : 268671.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)

@@ -8,15 +8,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 3, 2.50) ref -> [ebp-0x18] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> -; V01 arg1 [V01,T02] ( 5, 6.50) ref -> esi class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> -; V02 arg2 [V02,T05] ( 3, 5 ) ref -> ebx class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V03 arg3 [V03,T04] ( 5, 5.04) ref -> edi class-hnd single-def <System.Xml.XmlDictionaryString[]> -; V04 arg4 [V04,T07] ( 2, 1.50) int -> [ebp+0x0C] single-def -; V05 arg5 [V05,T08] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V00 this [V00,T04] ( 3, 3.98) ref -> [ebp-0x18] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext> +; V01 arg1 [V01,T02] ( 5, 7.98) ref -> esi class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator> +; V02 arg2 [V02,T06] ( 3, 5 ) ref -> [ebp+0x14] class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V03 arg3 [V03,T05] ( 5, 5.04) ref -> ebx class-hnd single-def <System.Xml.XmlDictionaryString[]> +; V04 arg4 [V04,T07] ( 2, 2.98) int -> [ebp+0x0C] single-def +; V05 arg5 [V05,T08] ( 1, 1.98) ref -> [ebp+0x08] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
; V06 loc0 [V06,T00] ( 16, 23.08) int -> [ebp-0x10]
-; V07 tmp0 [V07,T01] ( 4, 16 ) ref -> eax "argument with side effect" -; V08 cse0 [V08,T03] ( 7, 7.04) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V07 tmp0 [V07,T01] ( 4, 16 ) ref -> edi "argument with side effect" +; V08 cse0 [V08,T03] ( 7, 8.52) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
; ; Lcl frame size = 12 @@ -31,146 +31,156 @@ G_M60484_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; GC ptr vars +{V00} mov esi, edx ; gcrRegs +[esi]
- mov ebx, gword ptr [ebp+0x14]
+ mov eax, gword ptr [ebp+0x14] + ; gcrRegs +[eax] + mov ebx, gword ptr [ebp+0x10]
; gcrRegs +[ebx]
- mov edi, gword ptr [ebp+0x10] - ; gcrRegs +[edi]
mov ecx, dword ptr [ebp+0x0C] ;; size=23 bbWeight=1 PerfScore 8.75
-G_M60484_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M60484_IG02: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp+0x0C], ecx lea edx, [ecx+0x01]
- mov ecx, dword ptr [ebx+0x04]
+ mov ecx, dword ptr [eax+0x04]
mov dword ptr [ebp-0x14], ecx cmp ecx, edx
- mov eax, gword ptr [ebp-0x18] - ; gcrRegs +[eax] - jle SHORT G_M60484_IG09
+ mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + jle SHORT G_M60484_IG10
;; size=19 bbWeight=1 PerfScore 6.75 G_M60484_IG03: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars -{V00}
- test edi, edi - je SHORT G_M60484_IG08
+ test ebx, ebx + je SHORT G_M60484_IG09
test edx, edx
+ jl SHORT G_M60484_IG08 + cmp dword ptr [ebx+0x04], ecx + mov gword ptr [ebp-0x18], edi + ; GC ptr vars +{V00}
jl SHORT G_M60484_IG07
- cmp dword ptr [edi+0x04], ecx - mov gword ptr [ebp-0x18], eax - ; GC ptr vars +{V00} - jl SHORT G_M60484_IG06
;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M60484_IG04: ; bbWeight=3.96, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov eax, gword ptr [ebx+4*edx+0x08] - ; gcrRegs +[eax]
+G_M60484_IG04: ; bbWeight=3.96, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edi] + mov gword ptr [ebp+0x14], eax + mov edi, gword ptr [eax+4*edx+0x08] + ; gcrRegs +[edi]
mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08] - mov edx, eax
+ push gword ptr [ebx+4*edx+0x08] + mov edx, edi
; gcrRegs +[edx] mov ecx, esi ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
- jne SHORT G_M60484_IG15 - mov edx, dword ptr [ebp-0x10] - inc edx
+ jne G_M60484_IG16 + mov edi, dword ptr [ebp-0x10] + inc edi
mov eax, dword ptr [ebp-0x14]
- cmp eax, edx - jg SHORT G_M60484_IG04 - ;; size=38 bbWeight=3.96 PerfScore 64.35 -G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx edi] - mov eax, gword ptr [ebp-0x18]
+ cmp eax, edi + mov edx, edi + jg SHORT G_M60484_IG06 + ;; size=47 bbWeight=3.96 PerfScore 69.30 +G_M60484_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi] + jmp SHORT G_M60484_IG13 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M60484_IG06: ; bbWeight=1.98, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi] +[ebx] + mov eax, gword ptr [ebp+0x14]
; gcrRegs +[eax]
- jmp SHORT G_M60484_IG12 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M60484_IG06: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[ebx edi]
+ jmp SHORT G_M60484_IG04 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M60484_IG07: ; bbWeight=0.25, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[eax]
+G_M60484_IG08: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[edi]
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG08: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M60484_IG09: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M60484_IG09: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx edi]
+G_M60484_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax ebx]
; GC ptr vars -{V00}
- jmp SHORT G_M60484_IG12
+ jmp SHORT G_M60484_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG10: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[ebx edi] - ; GC ptr vars +{V00 V06}
+G_M60484_IG11: ; bbWeight=0.04, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edi] +[eax ebx] + ; GC ptr vars +{V00 V04}
cmp edx, ecx
- jae SHORT G_M60484_IG17 - mov eax, gword ptr [ebx+4*edx+0x08] - ; gcrRegs +[eax] - cmp edx, dword ptr [edi+0x04] - jae SHORT G_M60484_IG17
+ jae SHORT G_M60484_IG18 + mov gword ptr [ebp+0x14], eax + mov edi, gword ptr [eax+4*edx+0x08] + ; gcrRegs +[edi] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M60484_IG18
mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08] - mov edx, eax
+ push gword ptr [ebx+4*edx+0x08] + mov edx, edi
; gcrRegs +[edx] mov ecx, esi ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
- jne SHORT G_M60484_IG15 - mov eax, dword ptr [ebp-0x10] - inc eax - cmp dword ptr [ebp-0x14], eax - mov edx, eax - jg SHORT G_M60484_IG14 - ;; size=47 bbWeight=0.04 PerfScore 0.90 -G_M60484_IG11: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx edi] - mov eax, gword ptr [ebp-0x18]
+ jne SHORT G_M60484_IG16 + mov edi, dword ptr [ebp-0x10] + inc edi + cmp dword ptr [ebp-0x14], edi + mov edx, edi + mov eax, gword ptr [ebp+0x14]
; gcrRegs +[eax]
+ jg SHORT G_M60484_IG15 + ;; size=53 bbWeight=0.04 PerfScore 0.98 +G_M60484_IG12: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax ebx] + mov edi, gword ptr [ebp-0x18] + ; gcrRegs +[edi]
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M60484_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V00 V06}
+G_M60484_IG13: ; bbWeight=1.98, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V00 V04}
push gword ptr [ebp+0x08] push dword ptr [ebp+0x0C]
- mov ecx, eax
+ mov ecx, edi
; gcrRegs +[ecx] mov edx, esi ; gcrRegs +[edx] call [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
- ; gcrRegs -[eax ecx edx esi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, dword ptr [ebp-0x14]
- ;; size=19 bbWeight=0.50 PerfScore 3.25 -G_M60484_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=19 bbWeight=1.98 PerfScore 12.87 +G_M60484_IG14: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret 16
- ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M60484_IG14: ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ebx esi edi] - ; GC ptr vars +{V00 V06}
+ ;; size=10 bbWeight=1.98 PerfScore 8.91 +G_M60484_IG15: ; bbWeight=0.02, gcVars=00000010 {V00}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[eax ebx esi] + ; GC ptr vars +{V00 V04}
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG10
+ jmp SHORT G_M60484_IG11
;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M60484_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
...

+13 (+11.50%) : 70150.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)

@@ -8,19 +8,19 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [ebp-0x14] this class-hnd single-def <System.Data.DataColumnCollection>
+; V00 this [V00,T07] ( 4, 4.98) ref -> [ebp-0x18] this class-hnd single-def <System.Data.DataColumnCollection>
; V01 arg1 [V01,T03] ( 3, 5.96) ref -> esi class-hnd single-def <System.Data.DataColumn>
-; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>> -; V03 loc1 [V03,T06] ( 4, 5.96) ref -> eax class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x1C] class-hnd spill-single-def <<unknown class>> +; V03 loc1 [V03,T06] ( 4, 6.94) ref -> eax class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T00] ( 5, 16.84) int -> ecx
-; V05 loc3 [V05,T09] ( 3, 4.96) int -> registers -; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edx "impSpillLclRefs" -; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> edi class-hnd "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
+; V05 loc3 [V05,T09] ( 3, 4.96) int -> [ebp-0x10] +; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edi "impSpillLclRefs" +; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> [ebp-0x20] class-hnd spill-single-def "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
;* V08 cse0 [V08,T10] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edi "CSE - aggressive" -; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edx "CSE - aggressive" +; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -28,59 +28,67 @@ G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 20
mov edi, ecx ; gcrRegs +[edi] mov esi, edx ; gcrRegs +[esi] ;; size=13 bbWeight=1 PerfScore 5.00 G_M65349_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00} mov ebx, gword ptr [edi+0x14] ; gcrRegs +[ebx]
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x1C], ebx
; GC ptr vars +{V02} mov eax, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
lea ecx, [eax-0x01] call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs -[edi] +[eax] xor ecx, ecx xor edx, edx
- cmp dword ptr [ebp-0x10], 0
+ mov dword ptr [ebp-0x10], edx + cmp dword ptr [ebp-0x14], 0
jle SHORT G_M65349_IG06
- ;; size=34 bbWeight=1 PerfScore 14.00
+ ;; size=37 bbWeight=1 PerfScore 15.00
G_M65349_IG03: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebx+4*ecx+0x08] - ; gcrRegs +[edi] - cmp edi, esi
+ mov edx, gword ptr [ebx+4*ecx+0x08] + ; gcrRegs +[edx] + cmp edx, esi
je SHORT G_M65349_IG05 ;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
- lea ebx, [edx+0x01] - cmp edx, dword ptr [eax+0x04]
+ mov edi, dword ptr [ebp-0x10] + lea ebx, [edi+0x01] + mov gword ptr [ebp-0x20], edx + ; GC ptr vars +{V07} + cmp edi, dword ptr [eax+0x04]
jae SHORT G_M65349_IG08
- lea edx, bword ptr [eax+4*edx+0x08]
+ lea edx, bword ptr [eax+4*edi+0x08] + ; gcrRegs -[edx]
; byrRegs +[edx]
+ mov edi, gword ptr [ebp-0x20] + ; gcrRegs +[edi] + ; GC ptr vars -{V07}
call [CORINFO_HELP_ASSIGN_REF_EDI] ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, ebx - ;; size=20 bbWeight=1.98 PerfScore 17.32
+ mov dword ptr [ebp-0x10], ebx + ;; size=30 bbWeight=1.98 PerfScore 24.75
G_M65349_IG05: ; bbWeight=3.96, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz inc ecx
- mov edi, dword ptr [ebp-0x10] - cmp edi, ecx - mov ebx, gword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14] + cmp edx, ecx + mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx] jg SHORT G_M65349_IG03 ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+G_M65349_IG06: ; bbWeight=1.98, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi] ; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi] lea edx, bword ptr [edi+0x14] ; byrRegs +[edx] @@ -88,20 +96,20 @@ G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {e call [CORINFO_HELP_ASSIGN_REF_EAX] ; gcrRegs -[eax edi] ; byrRegs -[edx]
- ;; size=12 bbWeight=1 PerfScore 4.50 -G_M65349_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1.98 PerfScore 8.91 +G_M65349_IG07: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1.98 PerfScore 6.93
G_M65349_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 113, prolog size 13, PerfScore 71.05, instruction count 44, allocated bytes for code 113 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
+; Total bytes of code 126, prolog size 13, PerfScore 87.32, instruction count 48, allocated bytes for code 126 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
; ============================================================

+39 (+11.96%) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)

@@ -8,18 +8,18 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 6, 14.50) ref -> [ebp-0x20] this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T05] ( 6, 20.42) ref -> [ebp-0x24] this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T04] ( 8, 21.50) ref -> edi class-hnd single-def <System.String> ; V02 arg2 [V02,T03] ( 6, 25.16) ref -> esi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]> -; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]> +; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 18,102 ) int -> [ebp-0x14] ; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
-; V07 loc3 [V07,T05] ( 3, 20 ) ushort -> edx -; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax -; V09 cse0 [V09,T07] ( 5, 16 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V07 loc3 [V07,T06] ( 3, 20 ) ushort -> [ebp-0x1C] spill-single-def +; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax +; V09 cse0 [V09,T07] ( 5, 16 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 24
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,7 +27,7 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -37,16 +37,15 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x1C], edx - mov ecx, edx - mov dword ptr [ebp-0x10], ecx - xor eax, eax - test ecx, ecx
+ mov dword ptr [ebp-0x20], edx + mov dword ptr [ebp-0x10], edx + xor ecx, ecx + cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], eax - push eax
+ mov dword ptr [ebp-0x14], ecx + push ecx
mov ecx, edi ; gcrRegs +[ecx] mov edx, esi @@ -59,22 +58,28 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=22 bbWeight=4 PerfScore 31.00 G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi]
- mov eax, dword ptr [ebp-0x10] - mov ecx, dword ptr [ebp-0x14] - jmp G_M58768_IG15 - ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x24], ebx + ; GC ptr vars +{V00} + mov eax, dword ptr [ebp-0x14] + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
- mov ecx, eax - mov eax, dword ptr [ebp-0x10] - jmp G_M58768_IG15 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V00} + mov gword ptr [ebp-0x24], ebx + ; GC ptr vars +{V00} + mov eax, ecx + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
- cmp ecx, dword ptr [ebp-0x1C] - jae G_M58768_IG22
+ ; GC ptr vars -{V00} + cmp ecx, dword ptr [ebp-0x20] + jae G_M58768_IG23
mov dword ptr [ebp-0x14], ecx movzx edx, word ptr [edi+2*ecx+0x08]
- mov gword ptr [ebp-0x20], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} mov ecx, ebx ; gcrRegs +[ecx] @@ -85,7 +90,7 @@ G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= inc ecx mov dword ptr [ebp-0x14], ecx mov eax, dword ptr [ebp-0x18]
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] ;; size=43 bbWeight=8 PerfScore 140.00 G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz @@ -95,85 +100,98 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx jl SHORT G_M58768_IG06 ;; size=7 bbWeight=32 PerfScore 72.00 G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, dword ptr [ebp-0x1C] - jae G_M58768_IG22
+ cmp ecx, dword ptr [ebp-0x20] + jae G_M58768_IG23
mov dword ptr [ebp-0x14], ecx movzx edx, word ptr [edi+2*ecx+0x08]
+ mov dword ptr [ebp-0x1C], edx
mov eax, dword ptr [esi+0x04] dec eax
- js SHORT G_M58768_IG14 - ;; size=23 bbWeight=4 PerfScore 37.00
+ js SHORT G_M58768_IG12 + ;; size=26 bbWeight=4 PerfScore 41.00
G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [esi+0x04], eax
- mov gword ptr [ebp-0x20], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00}
- jle SHORT G_M58768_IG12
+ jle SHORT G_M58768_IG13
;; size=8 bbWeight=1 PerfScore 5.00
-G_M58768_IG10: ; bbWeight=15.84, gcVars=00000040 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- movzx ebx, word ptr [esi+2*eax+0x08] - cmp ebx, edx - je SHORT G_M58768_IG13
+ movzx edx, word ptr [esi+2*eax+0x08] + mov ebx, dword ptr [ebp-0x1C] + cmp edx, ebx + je SHORT G_M58768_IG14
dec eax jns SHORT G_M58768_IG10
- ;; size=12 bbWeight=15.84 PerfScore 71.28
+ ;; size=15 bbWeight=15.84 PerfScore 87.12
G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14 - ;; size=5 bbWeight=4 PerfScore 12.00 -G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x24], ebx + mov ebx, gword ptr [ebp+0x08] + jmp SHORT G_M58768_IG15 + ;; size=11 bbWeight=4 PerfScore 20.00 +G_M58768_IG12: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V00} + mov gword ptr [ebp-0x24], ebx + ; GC ptr vars +{V00} + mov ebx, gword ptr [ebp+0x08] + jmp SHORT G_M58768_IG15 + ;; size=8 bbWeight=2 PerfScore 8.00 +G_M58768_IG13: ; bbWeight=0.16, gcVars=00000020 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx] cmp eax, dword ptr [esi+0x04]
- jae G_M58768_IG22 - movzx ebx, word ptr [esi+2*eax+0x08] - cmp ebx, edx - je SHORT G_M58768_IG13
+ jae G_M58768_IG23 + movzx edx, word ptr [esi+2*eax+0x08] + mov ebx, dword ptr [ebp-0x1C] + cmp edx, ebx + je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12 - mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14 - ;; size=26 bbWeight=0.16 PerfScore 1.84 -G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x24], ebx + mov ebx, gword ptr [ebp+0x08] + jmp SHORT G_M58768_IG15 + ;; size=35 bbWeight=0.16 PerfScore 2.32 +G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] mov ebx, gword ptr [ebp+0x08] ; gcrRegs +[ebx] cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae SHORT G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx edx]
+ ;; size=23 bbWeight=7.92 PerfScore 110.88 +G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + inc eax + mov edx, dword ptr [ebp-0x10] + cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20] - ;; size=29 bbWeight=2 PerfScore 32.00 -G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V00} - mov ecx, dword ptr [ebp-0x14] - inc ecx - mov eax, dword ptr [ebp-0x10] - cmp ecx, eax - jl SHORT G_M58768_IG18 - ;; size=11 bbWeight=4 PerfScore 14.00 -G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[esi] - test ecx, ecx - jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19 + ;; size=14 bbWeight=4 PerfScore 18.00 +G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx esi] + test eax, eax + jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref - mov ecx, ebx
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] mov edx, edi ; gcrRegs +[edx] cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V00}
call [<unknown method>]
- ; gcrRegs -[ecx edx ebx edi] - ;; size=12 bbWeight=0.50 PerfScore 3.25 -G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx edi] + ;; size=13 bbWeight=0.50 PerfScore 3.62 +G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] ...

libraries.pmi.windows.x86.checked.mch

-15 (-9.93%) : 23249.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:Filterubyte:ubyte

@@ -12,14 +12,14 @@ ; V01 arg1 [V01,T02] ( 8, 6.02) ref -> esi class-hnd single-def <ubyte[]> ; V02 loc0 [V02,T08] ( 3, 3 ) ref -> eax class-hnd single-def <System.Tuple`2[int,ubyte[]]> ; V03 loc1 [V03,T09] ( 2, 2 ) int -> edx single-def
-; V04 loc2 [V04,T06] ( 4, 6 ) ref -> [ebp-0x10] class-hnd spill-single-def <ubyte[]> -; V05 loc3 [V05,T05] ( 6, 6 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <ubyte[]>
+; V04 loc2 [V04,T06] ( 4, 6 ) ref -> edi class-hnd single-def <ubyte[]> +; V05 loc3 [V05,T04] ( 6, 6.98) ref -> eax class-hnd exact single-def <ubyte[]>
; V06 loc4 [V06,T01] ( 9, 9 ) int -> edx ; V07 loc5 [V07,T00] ( 12, 19.02) int -> ecx
-; V08 tmp0 [V08,T03] ( 4, 8 ) int -> eax "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T04] ( 5, 6.50) int -> ebx "CSE - moderate"
+; V08 tmp0 [V08,T03] ( 4, 8 ) int -> ebx "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 5, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M2827_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,10 +27,10 @@ G_M2827_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 8
+ push eax
mov esi, edx ; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=9 bbWeight=1 PerfScore 5.50
G_M2827_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov edx, esi @@ -40,99 +40,79 @@ G_M2827_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000 mov edx, dword ptr [eax+0x08] mov edi, gword ptr [eax+0x04] ; gcrRegs +[edi]
- mov gword ptr [ebp-0x10], edi - ; GC ptr vars +{V04}
mov ecx, 0xD1FFAB1E ; ubyte[] call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [ebp-0x14], eax - ; GC ptr vars +{V05}
xor edx, edx xor ecx, ecx mov ebx, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x10], ebx
test ebx, ebx
- jle SHORT G_M2827_IG11 - ;; size=41 bbWeight=1 PerfScore 14.25 -G_M2827_IG03: ; bbWeight=0.50, gcVars=00000060 {V04 V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax]
+ jle SHORT G_M2827_IG12 + ;; size=38 bbWeight=1 PerfScore 13.25 +G_M2827_IG03: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je SHORT G_M2827_IG08
+ je SHORT G_M2827_IG09
cmp dword ptr [esi+0x04], ebx jl SHORT G_M2827_IG08 ;; size=9 bbWeight=0.50 PerfScore 2.62
-G_M2827_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M2827_IG04: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [edi+ecx+0x08], 0 je SHORT G_M2827_IG06 ;; size=7 bbWeight=3.96 PerfScore 15.84
-G_M2827_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - movzx eax, byte ptr [esi+ecx+0x08] - mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi] - cmp edx, dword ptr [edi+0x04]
+G_M2827_IG05: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + movzx ebx, byte ptr [esi+ecx+0x08] + cmp edx, dword ptr [eax+0x04]
jae SHORT G_M2827_IG13
- mov byte ptr [edi+edx+0x08], al
+ mov byte ptr [eax+edx+0x08], bl
inc edx
- ;; size=18 bbWeight=1.98 PerfScore 16.34 -G_M2827_IG06: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+ ;; size=15 bbWeight=1.98 PerfScore 14.35 +G_M2827_IG06: ; bbWeight=3.96, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
- cmp ebx, ecx - mov edi, gword ptr [ebp-0x10] - ; gcrRegs +[edi]
+ cmp dword ptr [ebp-0x10], ecx
jg SHORT G_M2827_IG04
- ;; size=8 bbWeight=3.96 PerfScore 9.90 -G_M2827_IG07: ; bbWeight=1, gcVars=00000020 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=6 bbWeight=3.96 PerfScore 12.87 +G_M2827_IG07: ; bbWeight=1.98, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi edi]
- ; GC ptr vars -{V04} - jmp SHORT G_M2827_IG11 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M2827_IG08: ; bbWeight=0.04, gcVars=00000060 {V04 V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M2827_IG12 + ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M2827_IG08: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi]
- ; GC ptr vars +{V04 V06}
+ mov ebx, dword ptr [ebp-0x10] + ;; size=3 bbWeight=0.25 PerfScore 0.25 +G_M2827_IG09: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [edi+ecx+0x08], 0
- je SHORT G_M2827_IG10
+ je SHORT G_M2827_IG11
;; size=7 bbWeight=0.04 PerfScore 0.16
-G_M2827_IG09: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+G_M2827_IG10: ; bbWeight=0.02, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, dword ptr [esi+0x04] jae SHORT G_M2827_IG13
- movzx eax, byte ptr [esi+ecx+0x08] - mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi] - cmp edx, dword ptr [edi+0x04]
+ movzx ebx, byte ptr [esi+ecx+0x08] + cmp edx, dword ptr [eax+0x04]
jae SHORT G_M2827_IG13
- mov byte ptr [edi+edx+0x08], al
+ mov byte ptr [eax+edx+0x08], bl
inc edx
+ mov ebx, dword ptr [ebp-0x10]
;; size=23 bbWeight=0.02 PerfScore 0.25
-G_M2827_IG10: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+G_M2827_IG11: ; bbWeight=0.04, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx cmp ebx, ecx
- mov edi, gword ptr [ebp-0x10] - ; gcrRegs +[edi] - jg SHORT G_M2827_IG08 - ;; size=8 bbWeight=0.04 PerfScore 0.10 -G_M2827_IG11: ; bbWeight=1, gcVars=00000020 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg SHORT G_M2827_IG09 + ;; size=5 bbWeight=0.04 PerfScore 0.06 +G_M2827_IG12: ; bbWeight=1.98, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi edi]
- ; GC ptr vars -{V04 V06} - mov eax, gword ptr [ebp-0x14] - ; gcrRegs +[eax] - ;; size=3 bbWeight=1 PerfScore 1.00 -G_M2827_IG12: ; bbWeight=1, epilog, nogc, extend - lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=6 bbWeight=1.98 PerfScore 6.93
G_M2827_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax]
- ; GC ptr vars -{V05}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 151, prolog size 11, PerfScore 70.71, instruction count 60, allocated bytes for code 151 (MethodHash=5413f4f4) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
+; Total bytes of code 136, prolog size 9, PerfScore 76.04, instruction count 56, allocated bytes for code 136 (MethodHash=5413f4f4) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
; ============================================================

-6 (-9.38%) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)

@@ -10,19 +10,19 @@ ; ; V00 arg0 [V00,T05] ( 3, 6 ) byref -> ecx single-def ; V01 arg1 [V01,T04] ( 4, 6.34) int -> edx ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 2, 4.34) int -> eax ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 1, 4 ) int -> eax ld-addr-op single-def
; V03 arg3 [V03,T10] ( 1, 1 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 7, 19.66) int -> esi
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> esi
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> edi ;* V06 tmp0 [V06,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V07 tmp1 [V07,T01] ( 3, 16.68) int -> ebx "Inlining Arg" ;* V08 tmp2 [V08,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 3, 16.68) int -> edi "Inlining Arg"
+; V09 tmp3 [V09,T02] ( 2, 16 ) int -> edi "Inlining Arg"
; V10 cse0 [V10,T03] ( 3, 12 ) int -> edi "CSE - aggressive" ; ; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -34,7 +34,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e ; byrRegs +[ecx] mov esi, dword ptr [ebp+0x08] dec esi
- js SHORT G_M34838_IG09
+ js SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 2.25 G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz lea edi, bword ptr [ecx+4*esi] @@ -47,48 +47,36 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {e ;; size=11 bbWeight=4 PerfScore 16.00 G_M34838_IG04: ; bbWeight=0.34, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz cmp edx, ebx
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=4 bbWeight=0.34 PerfScore 0.42 G_M34838_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz cmp eax, edi
- jge SHORT G_M34838_IG11 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M34838_IG06: ; bbWeight=1.66, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov eax, esi - ;; size=2 bbWeight=1.66 PerfScore 0.42 -G_M34838_IG07: ; bbWeight=1.66, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=1.66 PerfScore 6.64 -G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; byrRegs +[ecx]
+ jl SHORT G_M34838_IG08
dec esi jns SHORT G_M34838_IG03
- ;; size=3 bbWeight=4 PerfScore 5.00 -G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 10.00 +G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ecx] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 8 ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M34838_IG11: ; bbWeight=0.34, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; byrRegs +[ecx] - cmp eax, edi - jle SHORT G_M34838_IG08 - ;; size=4 bbWeight=0.34 PerfScore 0.42 -G_M34838_IG12: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz - jmp SHORT G_M34838_IG08 - ;; size=2 bbWeight=0.03 PerfScore 0.07
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, esi + ;; size=2 bbWeight=0.71 PerfScore 0.18 +G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.71 PerfScore 2.85
-; Total bytes of code 64, prolog size 9, PerfScore 43.60, instruction count 35, allocated bytes for code 64 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 58, prolog size 9, PerfScore 39.07, instruction count 32, allocated bytes for code 58 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================

-6 (-9.38%) : 310876.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)

@@ -10,19 +10,19 @@ ; ; V00 arg0 [V00,T05] ( 3, 6 ) byref -> ecx single-def ; V01 arg1 [V01,T04] ( 4, 6.34) int -> edx ld-addr-op single-def
-; V02 arg2 [V02,T07] ( 2, 4.34) int -> eax ld-addr-op single-def
+; V02 arg2 [V02,T07] ( 1, 4 ) int -> eax ld-addr-op single-def
; V03 arg3 [V03,T10] ( 1, 1 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T00] ( 7, 19.66) int -> esi
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> esi
; V05 loc1 [V05,T06] ( 2, 8 ) byref -> edi ;* V06 tmp0 [V06,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V07 tmp1 [V07,T01] ( 3, 16.68) int -> ebx "Inlining Arg" ;* V08 tmp2 [V08,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp3 [V09,T02] ( 3, 16.68) int -> edi "Inlining Arg"
+; V09 tmp3 [V09,T02] ( 2, 16 ) int -> edi "Inlining Arg"
; V10 cse0 [V10,T03] ( 3, 12 ) int -> edi "CSE - aggressive" ; ; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi @@ -34,7 +34,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e ; byrRegs +[ecx] mov esi, dword ptr [ebp+0x08] dec esi
- js SHORT G_M34838_IG09
+ js SHORT G_M34838_IG06
;; size=6 bbWeight=1 PerfScore 2.25 G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz lea edi, bword ptr [ecx+4*esi] @@ -47,48 +47,36 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {e ;; size=11 bbWeight=4 PerfScore 16.00 G_M34838_IG04: ; bbWeight=0.34, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz cmp edx, ebx
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=4 bbWeight=0.34 PerfScore 0.42 G_M34838_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz cmp eax, edi
- jge SHORT G_M34838_IG11 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M34838_IG06: ; bbWeight=1.66, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov eax, esi - ;; size=2 bbWeight=1.66 PerfScore 0.42 -G_M34838_IG07: ; bbWeight=1.66, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=1.66 PerfScore 6.64 -G_M34838_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; byrRegs +[ecx]
+ jl SHORT G_M34838_IG08
dec esi jns SHORT G_M34838_IG03
- ;; size=3 bbWeight=4 PerfScore 5.00 -G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=7 bbWeight=4 PerfScore 10.00 +G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ecx] mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 8 ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M34838_IG11: ; bbWeight=0.34, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; byrRegs +[ecx] - cmp eax, edi - jle SHORT G_M34838_IG08 - ;; size=4 bbWeight=0.34 PerfScore 0.42 -G_M34838_IG12: ; bbWeight=0.03, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz - jmp SHORT G_M34838_IG08 - ;; size=2 bbWeight=0.03 PerfScore 0.07
+G_M34838_IG08: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, esi + ;; size=2 bbWeight=0.71 PerfScore 0.18 +G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.71 PerfScore 2.85
-; Total bytes of code 64, prolog size 9, PerfScore 43.60, instruction count 35, allocated bytes for code 64 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 58, prolog size 9, PerfScore 39.07, instruction count 32, allocated bytes for code 58 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================

+10 (+7.35%) : 38550.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray1[int],byref):ubyte (FullOpts)

@@ -8,18 +8,18 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 2.50) int -> ecx single-def -; V01 arg1 [V01,T03] ( 4, 3 ) int -> edx single-def
+; V00 arg0 [V00,T07] ( 3, 2.50) int -> ecx single-def +; V01 arg1 [V01,T01] ( 4, 6.46) int -> edx single-def
; V02 arg2 [V02,T08] ( 1, 1 ) ubyte -> [ebp+0x18] single-def ; V03 arg3 [V03,T10] ( 1, 0.50) int -> [ebp+0x14] single-def ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]>
-; V06 arg6 [V06,T07] ( 2, 1.50) byref -> [ebp+0x08] single-def -; V07 loc0 [V07,T00] ( 14, 17.77) int -> ecx -; V08 tmp0 [V08,T01] ( 5, 8 ) int -> esi
+; V06 arg6 [V06,T05] ( 2, 4.96) byref -> eax single-def +; V07 loc0 [V07,T00] ( 14, 21.23) int -> ecx +; V08 tmp0 [V08,T02] ( 5, 8 ) int -> esi
; V09 tmp1 [V09,T09] ( 1, 0.50) ref -> [ebp+0x10] single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T05] ( 6, 4.54) ref -> eax single-def "field V05.array (fldOffset=0x0)" P-INDEP -; V11 cse0 [V11,T02] ( 5, 5.25) int -> ebx "CSE - aggressive"
+; V10 tmp2 [V10,T06] ( 6, 4.54) ref -> [ebp+0x0C] single-def "field V05.array (fldOffset=0x0)" P-INDEP +; V11 cse0 [V11,T03] ( 5, 5.25) int -> ebx "CSE - aggressive"
; V12 cse1 [V12,T04] ( 4, 5 ) int -> edi "CSE - aggressive" ; ; Lcl frame size = 0 @@ -30,105 +30,108 @@ G_M47144_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov eax, gword ptr [ebp+0x0C] - ; gcrRegs +[eax]
+ mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi]
;; size=12 bbWeight=1 PerfScore 6.25
-G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
xor edi, edi
- mov bword ptr [ebp+0x08], esi - mov dword ptr [esi], edi
+ mov dword ptr [eax], edi
cmp byte ptr [ebp+0x18], 0
- je SHORT G_M47144_IG13 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[esi]
+ je SHORT G_M47144_IG12 + ;; size=10 bbWeight=1 PerfScore 4.25 +G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
mov edi, dword ptr [ebp+0x14] dec edi cmp ecx, edi
- jne SHORT G_M47144_IG13
+ jne SHORT G_M47144_IG12
lea ecx, [edx+0x01] mov ebx, gword ptr [ebp+0x10] ; gcrRegs +[ebx] mov ebx, dword ptr [ebx+0x04] ; gcrRegs -[ebx] cmp ebx, ecx
- jle SHORT G_M47144_IG11
+ jle SHORT G_M47144_IG10
;; size=21 bbWeight=0.50 PerfScore 3.62
-G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - test eax, eax - je SHORT G_M47144_IG07
+G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + test esi, esi + je SHORT G_M47144_IG06
test ecx, ecx
- jl SHORT G_M47144_IG07 - cmp dword ptr [eax+0x04], ebx - jl SHORT G_M47144_IG07
+ jl SHORT G_M47144_IG06 + cmp dword ptr [esi+0x04], ebx + jl SHORT G_M47144_IG06
;; size=13 bbWeight=0.25 PerfScore 1.62
-G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov esi, dword ptr [eax+4*ecx+0x08]
+G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + mov gword ptr [ebp+0x0C], esi + mov esi, dword ptr [esi+4*ecx+0x08] + ; gcrRegs -[esi]
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx cmp ebx, ecx
+ mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi]
jg SHORT G_M47144_IG05
- ;; size=13 bbWeight=3.96 PerfScore 18.81 -G_M47144_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - jmp SHORT G_M47144_IG11 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M47144_IG07: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[eax] - test eax, eax - jne SHORT G_M47144_IG09 - ;; size=4 bbWeight=0.04 PerfScore 0.05 -G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov esi, ecx
jmp SHORT G_M47144_IG10
+ ;; size=21 bbWeight=3.96 PerfScore 34.65 +G_M47144_IG06: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + mov gword ptr [ebp+0x0C], esi + test esi, esi + jne SHORT G_M47144_IG08 + ;; size=7 bbWeight=0.04 PerfScore 0.09 +G_M47144_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz + ; gcrRegs -[esi] + mov esi, ecx + jmp SHORT G_M47144_IG09
;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M47144_IG09: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [eax+0x04] - jae SHORT G_M47144_IG15 - mov esi, dword ptr [eax+4*ecx+0x08] - ;; size=9 bbWeight=0.02 PerfScore 0.12 -G_M47144_IG10: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz + mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi] + cmp ecx, dword ptr [esi+0x04] + jae SHORT G_M47144_IG14 + mov gword ptr [ebp+0x0C], esi + mov esi, dword ptr [esi+4*ecx+0x08] + ; gcrRegs -[esi] + ;; size=15 bbWeight=0.02 PerfScore 0.16 +G_M47144_IG09: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx cmp ebx, ecx
- jg SHORT G_M47144_IG07 - ;; size=9 bbWeight=0.04 PerfScore 0.11 -G_M47144_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov eax, ecx - sub eax, edx - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov dword ptr [esi], eax
+ mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi] + jg SHORT G_M47144_IG06 + ;; size=12 bbWeight=0.04 PerfScore 0.15 +G_M47144_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref + ; gcrRegs -[esi] + sub ecx, edx + mov dword ptr [eax], ecx
mov eax, 1
- ;; size=14 bbWeight=0.50 PerfScore 1.38 -G_M47144_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ; byrRegs -[eax] + ;; size=9 bbWeight=3.96 PerfScore 5.94 +G_M47144_IG11: ; bbWeight=3.96, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 20
- ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M47144_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[esi]
+ ;; size=7 bbWeight=3.96 PerfScore 15.84 +G_M47144_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47144_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47144_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 20 ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47144_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 42.38, instruction count 64, allocated bytes for code 136 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
+; Total bytes of code 146, prolog size 12, PerfScore 74.75, instruction count 67, allocated bytes for code 146 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
; ============================================================

+33 (+9.76%) : 173460.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)

@@ -8,18 +8,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 27 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T02] ( 10, 38.84) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T05] ( 8, 21.50) ref -> [ebp-0x20] class-hnd single-def <System.String> ; V02 arg2 [V02,T04] ( 6, 25.16) ref -> edi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]> -; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]> +; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 19,106 ) int -> [ebp-0x14]
-; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
+; V06 loc2 [V06,T03] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
; V07 loc3 [V07,T07] ( 3, 20 ) ushort -> edx
-; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax
+; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax
; V09 cse0 [V09,T06] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x24] +; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,29 +29,30 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 28 + xor eax, eax + mov dword ptr [ebp-0x24], eax
mov esi, ecx ; gcrRegs +[esi] mov ebx, edx ; gcrRegs +[ebx] mov edi, gword ptr [ebp+0x0C] ; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=21 bbWeight=1 PerfScore 7.25
G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, dword ptr [ebx+0x04] mov dword ptr [ebp-0x1C], edx
- mov ecx, edx - mov dword ptr [ebp-0x10], ecx - xor eax, eax - test ecx, ecx
+ mov dword ptr [ebp-0x10], edx + xor ecx, ecx + cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- push eax - mov dword ptr [ebp-0x14], eax - mov ecx, edx - sub ecx, eax
push ecx
+ mov dword ptr [ebp-0x14], ecx + mov eax, edx + sub eax, ecx + push eax
mov ecx, ebx ; gcrRegs +[ecx] mov edx, edi @@ -62,19 +65,25 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=27 bbWeight=4 PerfScore 37.00 G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi]
- mov eax, dword ptr [ebp-0x10] - mov ecx, dword ptr [ebp-0x14] - jmp G_M58768_IG15 - ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x20], ebx + ; GC ptr vars +{V01} + mov eax, dword ptr [ebp-0x14] + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax - mov eax, dword ptr [ebp-0x10] - jmp G_M58768_IG15 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V01} + mov gword ptr [ebp-0x20], ebx + ; GC ptr vars +{V01} + mov eax, ecx + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[edi]
+ ; GC ptr vars -{V01}
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx ; GC ptr vars +{V01} mov dword ptr [ebp-0x14], ecx @@ -101,55 +110,57 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx ;; size=7 bbWeight=32 PerfScore 72.00 G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx ; GC ptr vars +{V01} mov dword ptr [ebp-0x14], ecx movzx edx, word ptr [ebx+2*ecx+0x08] mov eax, dword ptr [edi+0x04] dec eax
- mov ebx, gword ptr [ebp-0x20] - js SHORT G_M58768_IG14 - ;; size=29 bbWeight=4 PerfScore 45.00 -G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V01} - cmp dword ptr [edi+0x04], eax - mov gword ptr [ebp-0x20], ebx - ; GC ptr vars +{V01} - jle SHORT G_M58768_IG12 - ;; size=8 bbWeight=1 PerfScore 5.00 -G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ js SHORT G_M58768_IG12 + ;; size=26 bbWeight=4 PerfScore 41.00 +G_M58768_IG09: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
+ cmp dword ptr [edi+0x04], eax + jle SHORT G_M58768_IG13 + ;; size=5 bbWeight=1 PerfScore 4.00 +G_M58768_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx ebx, word ptr [edi+2*eax+0x08] cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax jns SHORT G_M58768_IG10 ;; size=12 bbWeight=15.84 PerfScore 71.28 G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=5 bbWeight=4 PerfScore 12.00
-G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov ebx, gword ptr [ebp+0x08] + ; gcrRegs +[ebx] + jmp SHORT G_M58768_IG15 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M58768_IG13: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] cmp eax, dword ptr [edi+0x04]
- jae G_M58768_IG22
+ jae G_M58768_IG23
movzx ebx, word ptr [edi+2*eax+0x08] cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12 - mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13 + mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=26 bbWeight=0.16 PerfScore 1.84
-G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx] mov ebx, gword ptr [ebp+0x08] ; gcrRegs +[ebx] cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[edx] mov ecx, esi @@ -158,33 +169,32 @@ G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov eax, dword ptr [eax+0x2C] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx edx]
+ ;; size=26 bbWeight=7.92 PerfScore 112.86 +G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + inc eax + mov edx, dword ptr [ebp-0x10] + cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20] - ;; size=28 bbWeight=2 PerfScore 32.50 -G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V01} - mov ecx, dword ptr [ebp-0x14] - inc ecx - mov eax, dword ptr [ebp-0x10] - cmp ecx, eax - jl SHORT G_M58768_IG18 - ;; size=11 bbWeight=4 PerfScore 14.00 -G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - test ecx, ecx - jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19 + ;; size=14 bbWeight=4 PerfScore 18.00 +G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx edi] + test eax, eax + jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx]
- mov edx, ebx
+ mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx] mov eax, dword ptr [esi] mov eax, dword ptr [eax+0x2C]
+ ; GC ptr vars -{V01}
call [eax+0x1C]<unknown method>
- ; gcrRegs -[ecx edx ebx esi] - ;; size=12 bbWeight=0.50 PerfScore 3.75 -G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx esi] + ;; size=13 bbWeight=0.50 PerfScore 4.12 +G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -192,35 +202,51 @@ G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M58768_IG18: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ebx esi edi] - mov eax, ecx
+G_M58768_IG19: ; bbWeight=2, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[esi edi] + ; GC ptr vars +{V01 V05} + mov ecx, eax
mov edx, dword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x20]
...

+13 (+11.40%) : 71233.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)

@@ -7,19 +7,19 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [ebp-0x14] this class-hnd single-def <System.Data.DataColumnCollection>
+; V00 this [V00,T07] ( 4, 4.98) ref -> [ebp-0x18] this class-hnd single-def <System.Data.DataColumnCollection>
; V01 arg1 [V01,T03] ( 3, 5.96) ref -> esi class-hnd single-def <System.Data.DataColumn>
-; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>> -; V03 loc1 [V03,T06] ( 4, 5.96) ref -> eax class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T08] ( 3, 5.96) ref -> [ebp-0x1C] class-hnd spill-single-def <<unknown class>> +; V03 loc1 [V03,T06] ( 4, 6.94) ref -> eax class-hnd exact single-def <<unknown class>>
; V04 loc2 [V04,T00] ( 5, 16.84) int -> ecx
-; V05 loc3 [V05,T09] ( 3, 4.96) int -> registers -; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edx "impSpillLclRefs" -; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> edi class-hnd "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
+; V05 loc3 [V05,T09] ( 3, 4.96) int -> [ebp-0x10] +; V06 tmp0 [V06,T01] ( 4, 15.84) int -> edi "impSpillLclRefs" +; V07 tmp1 [V07,T04] ( 2, 7.92) ref -> [ebp-0x20] class-hnd spill-single-def "Strict ordering of exceptions for Array store" <System.Data.DataColumn>
;* V08 cse0 [V08,T10] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
-; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edi "CSE - aggressive" -; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T02] ( 3, 9.90) ref -> edx "CSE - aggressive" +; V10 cse2 [V10,T05] ( 4, 6.96) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,60 +27,68 @@ G_M65349_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 20
mov edi, ecx ; gcrRegs +[edi] mov esi, edx ; gcrRegs +[esi] ;; size=13 bbWeight=1 PerfScore 5.00 G_M65349_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi
+ mov gword ptr [ebp-0x18], edi
; GC ptr vars +{V00} mov ebx, gword ptr [edi+0x14] ; gcrRegs +[ebx]
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x1C], ebx
; GC ptr vars +{V02} mov eax, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
lea edx, [eax-0x01] mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs -[edi] +[eax] xor ecx, ecx xor edx, edx
- cmp dword ptr [ebp-0x10], 0
+ mov dword ptr [ebp-0x10], edx + cmp dword ptr [ebp-0x14], 0
jle SHORT G_M65349_IG06
- ;; size=38 bbWeight=1 PerfScore 12.25
+ ;; size=41 bbWeight=1 PerfScore 13.25
G_M65349_IG03: ; bbWeight=3.96, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebx+4*ecx+0x08] - ; gcrRegs +[edi] - cmp edi, esi
+ mov edx, gword ptr [ebx+4*ecx+0x08] + ; gcrRegs +[edx] + cmp edx, esi
je SHORT G_M65349_IG05 ;; size=8 bbWeight=3.96 PerfScore 12.87
-G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M65349_IG04: ; bbWeight=1.98, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
- lea ebx, [edx+0x01] - cmp edx, dword ptr [eax+0x04]
+ mov edi, dword ptr [ebp-0x10] + lea ebx, [edi+0x01] + mov gword ptr [ebp-0x20], edx + ; GC ptr vars +{V07} + cmp edi, dword ptr [eax+0x04]
jae SHORT G_M65349_IG08
- lea edx, bword ptr [eax+4*edx+0x08]
+ lea edx, bword ptr [eax+4*edi+0x08] + ; gcrRegs -[edx]
; byrRegs +[edx]
+ mov edi, gword ptr [ebp-0x20] + ; gcrRegs +[edi] + ; GC ptr vars -{V07}
call CORINFO_HELP_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, ebx - ;; size=19 bbWeight=1.98 PerfScore 13.37
+ mov dword ptr [ebp-0x10], ebx + ;; size=29 bbWeight=1.98 PerfScore 20.79
G_M65349_IG05: ; bbWeight=3.96, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz inc ecx
- mov edi, dword ptr [ebp-0x10] - cmp edi, ecx - mov ebx, gword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14] + cmp edx, ecx + mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx] jg SHORT G_M65349_IG03 ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+G_M65349_IG06: ; bbWeight=1.98, gcVars=00000080 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi] ; GC ptr vars -{V02}
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x18]
; gcrRegs +[edi] lea edx, bword ptr [edi+0x14] ; byrRegs +[edx] @@ -88,20 +96,20 @@ G_M65349_IG06: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000001 {e call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax edi] ; byrRegs -[edx]
- ;; size=11 bbWeight=1 PerfScore 2.50 -G_M65349_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1.98 PerfScore 4.95 +G_M65349_IG07: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1.98 PerfScore 6.93
G_M65349_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 13, PerfScore 63.34, instruction count 45, allocated bytes for code 114 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
+; Total bytes of code 127, prolog size 13, PerfScore 77.65, instruction count 49, allocated bytes for code 127 (MethodHash=c07d00ba) for method System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-26 (-5.37%) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)

@@ -8,16 +8,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 13, 11.83) ref -> ecx class-hnd single-def <ubyte[]>
-; V01 arg1 [V01,T00] ( 32, 40.58) int -> edx -; V02 arg2 [V02,T07] ( 6, 4 ) int -> [ebp+0x0C] -; V03 arg3 [V03,T06] ( 7, 4 ) byref -> [ebp+0x08] single-def -; V04 loc0 [V04,T04] ( 12, 12 ) int -> edi
+; V01 arg1 [V01,T00] ( 32, 45.02) int -> edx +; V02 arg2 [V02,T06] ( 6, 6.96) int -> [ebp+0x0C] +; V03 arg3 [V03,T07] ( 7, 4 ) byref -> [ebp+0x08] single-def +; V04 loc0 [V04,T04] ( 12, 13.48) int -> edi
; V05 loc1 [V05,T08] ( 4, 2.50) ubyte -> [ebp-0x10] ; V06 loc2 [V06,T02] ( 13, 18.50) int -> ebx ; V07 loc3 [V07,T01] ( 14, 28 ) int -> eax
-; V08 loc4 [V08,T05] ( 7, 9.50) int -> [ebp-0x14]
+; V08 loc4 [V08,T05] ( 7, 10.98) int -> esi
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M51022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -25,39 +25,40 @@ G_M51022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
+ push eax
vzeroupper
- mov esi, dword ptr [ebp+0x0C] - mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - ;; size=18 bbWeight=1 PerfScore 7.50 -G_M51022_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000001 {eax}, byref, isz
+ mov eax, dword ptr [ebp+0x0C] + mov esi, bword ptr [ebp+0x08] + ; byrRegs +[esi] + ;; size=16 bbWeight=1 PerfScore 8.25 +G_M51022_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs +[ecx] xor edi, edi
- mov bword ptr [ebp+0x08], eax - mov dword ptr [eax], edi - lea edi, [edx+esi]
+ mov bword ptr [ebp+0x08], esi + mov dword ptr [esi], edi + lea edi, [edx+eax]
xor ebx, ebx cmp edx, edi jge SHORT G_M51022_IG09 ;; size=16 bbWeight=1 PerfScore 4.25 G_M51022_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
+ ; byrRegs -[esi]
cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
cmp byte ptr [ecx+edx+0x08], 45 mov dword ptr [ebp-0x10], ebx jne SHORT G_M51022_IG04 mov dword ptr [ebp-0x10], 1 inc edx
- dec esi
+ dec eax
;; size=28 bbWeight=0.50 PerfScore 5.25 G_M51022_IG04: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- mov ebx, esi
+ mov dword ptr [ebp+0x0C], eax + mov ebx, eax
sub ebx, 1 cmp ebx, 9
- ja G_M51022_IG21 - ;; size=14 bbWeight=1 PerfScore 1.75
+ ja G_M51022_IG22 + ;; size=17 bbWeight=1 PerfScore 2.75
G_M51022_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz xor ebx, ebx cmp edx, edi @@ -66,8 +67,8 @@ G_M51022_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000 G_M51022_IG06: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz test ecx, ecx je SHORT G_M51022_IG10
- mov eax, edx - or eax, edi
+ mov esi, edx + or esi, edi
jl SHORT G_M51022_IG10 cmp dword ptr [ecx+0x04], edi jl SHORT G_M51022_IG10 @@ -76,19 +77,19 @@ G_M51022_IG07: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000 movzx eax, byte ptr [ecx+edx+0x08] add eax, -48 cmp eax, -2
- je SHORT G_M51022_IG12
+ je SHORT G_M51022_IG13
cmp eax, 10
- jae G_M51022_IG21
+ jae G_M51022_IG22
lea ebx, [ebx+4*ebx] lea ebx, [eax+2*ebx] inc edx cmp edx, edi jl SHORT G_M51022_IG07 ;; size=33 bbWeight=3.96 PerfScore 28.71
-G_M51022_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51022_IG08: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx] jmp SHORT G_M51022_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M51022_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov dword ptr [ebp-0x10], ebx @@ -96,165 +97,160 @@ G_M51022_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000 ;; size=5 bbWeight=0.50 PerfScore 1.50 G_M51022_IG10: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
movzx eax, byte ptr [ecx+edx+0x08] add eax, -48 cmp eax, -2
- je SHORT G_M51022_IG12
+ je SHORT G_M51022_IG13
cmp eax, 10
- jae G_M51022_IG21
+ jae G_M51022_IG22
lea ebx, [ebx+4*ebx] lea ebx, [eax+2*ebx] inc edx cmp edx, edi jl SHORT G_M51022_IG10 ;; size=42 bbWeight=0.04 PerfScore 0.45
-G_M51022_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51022_IG11: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- cmp esi, 10 - je G_M51022_IG21
+ cmp dword ptr [ebp+0x0C], 10 + je G_M51022_IG22 + ;; size=10 bbWeight=1.98 PerfScore 5.94 +G_M51022_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebp-0x10], 0
- je G_M51022_IG24 - jmp G_M51022_IG23 - ;; size=24 bbWeight=0.50 PerfScore 3.12 -G_M51022_IG12: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ je G_M51022_IG25 + jmp G_M51022_IG24 + ;; size=15 bbWeight=0.50 PerfScore 2.50 +G_M51022_IG13: ; bbWeight=1.98, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx] inc edx
- mov dword ptr [ebp-0x14], 1
+ mov esi, 1
cmp edx, edi jge SHORT G_M51022_IG18
- ;; size=12 bbWeight=0.50 PerfScore 1.25 -G_M51022_IG13: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp+0x0C], esi - mov esi, edx - or esi, edi - jl SHORT G_M51022_IG16
+ ;; size=10 bbWeight=1.98 PerfScore 3.46 +G_M51022_IG14: ; bbWeight=0.25, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz + mov eax, edx + or eax, edi + jl SHORT G_M51022_IG17
cmp dword ptr [ecx+0x04], edi
- jl SHORT G_M51022_IG16 - ;; size=14 bbWeight=0.25 PerfScore 1.62 -G_M51022_IG14: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M51022_IG17 + ;; size=11 bbWeight=0.25 PerfScore 1.38 +G_M51022_IG15: ; bbWeight=3.96, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [ecx+edx+0x08] add eax, -48 cmp eax, 10
- jae G_M51022_IG21 - mov esi, dword ptr [ebp-0x14]
+ jae G_M51022_IG22
lea esi, [esi+4*esi] add esi, esi
- mov dword ptr [ebp-0x14], esi
lea ebx, [ebx+4*ebx] lea ebx, [eax+2*ebx] inc edx cmp edx, edi
- jl SHORT G_M51022_IG14 - ;; size=39 bbWeight=3.96 PerfScore 34.65 -G_M51022_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M51022_IG15 + ;; size=33 bbWeight=3.96 PerfScore 26.73 +G_M51022_IG16: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- mov esi, dword ptr [ebp+0x0C]
jmp SHORT G_M51022_IG18
- ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M51022_IG16: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96 +G_M51022_IG17: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx] cmp edx, dword ptr [ecx+0x04]
- jae G_M51022_IG27
+ jae G_M51022_IG28
movzx eax, byte ptr [ecx+edx+0x08] add eax, -48 cmp eax, 10
- jae SHORT G_M51022_IG21 - mov esi, dword ptr [ebp-0x14]
+ jae SHORT G_M51022_IG22
lea esi, [esi+4*esi] add esi, esi lea ebx, [ebx+4*ebx] lea ebx, [eax+2*ebx] inc edx cmp edx, edi
- mov dword ptr [ebp-0x14], esi - jl SHORT G_M51022_IG16 - ;; size=44 bbWeight=0.04 PerfScore 0.51 -G_M51022_IG17: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jl SHORT G_M51022_IG17 + ;; size=38 bbWeight=0.04 PerfScore 0.43 +G_M51022_IG18: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
- mov esi, dword ptr [ebp+0x0C] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M51022_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - cmp esi, 8 - jle SHORT G_M51022_IG19
+ cmp dword ptr [ebp+0x0C], 8 + jle SHORT G_M51022_IG20 + ;; size=6 bbWeight=1.98 PerfScore 5.94 +G_M51022_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, ebx vxorps xmm1, xmm1, xmm1
- vcvtsi2sd xmm1, xmm1, dword ptr [ebp-0x14]
+ vcvtsi2sd xmm1, xmm1, esi
vdivsd xmm0, xmm0, xmm1 vcvtsd2ss xmm0, xmm0, xmm0
- mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - vmovss dword ptr [eax], xmm0 - jmp SHORT G_M51022_IG20 - ;; size=39 bbWeight=0.50 PerfScore 18.46 -G_M51022_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; byrRegs -[eax]
+ mov esi, bword ptr [ebp+0x08]
...

-21 (-5.16%) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ; @@ -78,11 +78,11 @@ G_M51273_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M51273_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx cmp ebx, 16
- jb SHORT G_M51273_IG05
+ jb SHORT G_M51273_IG08
mov edx, edi cmp ebx, 32
- jb G_M51273_IG17 - ;; size=18 bbWeight=1 PerfScore 3.00
+ jb SHORT G_M51273_IG06 + ;; size=14 bbWeight=1 PerfScore 3.00
G_M51273_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref lea eax, [ebx-0x20] mov dword ptr [ebp-0x1C], eax @@ -91,7 +91,7 @@ G_M51273_IG04: ; bbWeight=1.60, gcrefRegs=00000000 {}, byrefRegs=00000000 vmovups ymm0, ymmword ptr [esi+ecx] vpmovmskb eax, ymm0 test eax, eax
- jne SHORT G_M51273_IG05
+ jne SHORT G_M51273_IG08
vmovaps ymm1, ymm0 vpmovzxbw ymm1, ymm1 vextracti128 xmm0, ymm0, 1 @@ -104,35 +104,55 @@ G_M51273_IG04: ; bbWeight=1.60, gcrefRegs=00000000 {}, byrefRegs=00000000 cmp ecx, eax jbe SHORT G_M51273_IG04 ;; size=55 bbWeight=1.60 PerfScore 35.60
-G_M51273_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - cmp ecx, ebx - jbe SHORT G_M51273_IG06
+G_M51273_IG05: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M51273_IG08 + ;; size=2 bbWeight=0.80 PerfScore 1.60 +G_M51273_IG06: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + lea eax, [ebx-0x10] + ;; size=3 bbWeight=0.20 PerfScore 0.10 +G_M51273_IG07: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + vmovups xmm0, xmmword ptr [esi+ecx] + vptest xmm0, xmmword ptr [@RWD00] + jne SHORT G_M51273_IG08 + vpmovzxbw xmm1, xmm0 + vpsrldq xmm0, xmm0, 8 + vpmovzxbw xmm0, xmm0 + vmovups xmmword ptr [edx], xmm1 + vmovups xmmword ptr [edx+0x10], xmm0 + add ecx, 16 + add edx, 32 + cmp ecx, eax + jbe SHORT G_M51273_IG07 + ;; size=50 bbWeight=0.20 PerfScore 3.75 +G_M51273_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], ecx
+ cmp ecx, ebx + jbe SHORT G_M51273_IG09
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
+ ;; size=23 bbWeight=1 PerfScore 5.75 +G_M51273_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x10]
- ;; size=26 bbWeight=1 PerfScore 6.75 -G_M51273_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
sub ebx, ecx mov dword ptr [ebp-0x14], ebx cmp ebx, 4
- jb SHORT G_M51273_IG14 - ;; size=10 bbWeight=1 PerfScore 2.50 -G_M51273_IG07: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jb SHORT G_M51273_IG17 + ;; size=13 bbWeight=1 PerfScore 3.50 +G_M51273_IG10: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
lea eax, [ecx+ebx-0x04] mov dword ptr [ebp-0x20], eax ;; size=7 bbWeight=0.80 PerfScore 1.60
-G_M51273_IG08: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG11: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, ecx mov eax, dword ptr [esi+edx] test eax, 0xD1FFAB1E
- jne G_M51273_IG19 - ;; size=16 bbWeight=2.80 PerfScore 9.80 -G_M51273_IG09: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M51273_IG20 + ;; size=12 bbWeight=2.80 PerfScore 9.80 +G_M51273_IG12: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
vmovd xmm0, eax vpmovzxbw xmm0, xmm0 vmovd eax, xmm0 @@ -143,21 +163,21 @@ G_M51273_IG09: ; bbWeight=2.80, gcrefRegs=00000000 {}, byrefRegs=00000000 add ecx, 4 mov eax, dword ptr [ebp-0x20] cmp ecx, eax
- jbe SHORT G_M51273_IG08
+ jbe SHORT G_M51273_IG11
;; size=37 bbWeight=2.80 PerfScore 36.40
-G_M51273_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [ebp-0x14] test bl, 2
- jne SHORT G_M51273_IG16
+ jne SHORT G_M51273_IG19
;; size=8 bbWeight=1 PerfScore 2.25
-G_M51273_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test bl, 1
- jne SHORT G_M51273_IG15
+ jne SHORT G_M51273_IG18
;; size=5 bbWeight=1 PerfScore 1.25
-G_M51273_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, ecx ;; size=2 bbWeight=1 PerfScore 0.25
-G_M51273_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M51273_IG16: ; bbWeight=1, epilog, nogc, extend
vzeroupper lea esp, [ebp-0x0C] pop ebx @@ -166,54 +186,34 @@ G_M51273_IG13: ; bbWeight=1, epilog, nogc, extend pop ebp ret 4 ;; size=13 bbWeight=1 PerfScore 5.50
-G_M51273_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - jmp SHORT G_M51273_IG10
+G_M51273_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + jmp SHORT G_M51273_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51273_IG15: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG18: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+ecx] mov ebx, eax test bl, 128
- jne SHORT G_M51273_IG12
+ jne SHORT G_M51273_IG15
mov word ptr [edi+2*ecx], bx inc ecx
- jmp SHORT G_M51273_IG12
+ jmp SHORT G_M51273_IG15
;; size=18 bbWeight=0.40 PerfScore 2.70
-G_M51273_IG16: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG19: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
movzx eax, word ptr [esi+ecx] test eax, 0xD1FFAB1E
- jne SHORT G_M51273_IG19
+ jne SHORT G_M51273_IG20
movzx edx, al mov word ptr [edi+2*ecx], dx shr eax, 8 lea edx, [ecx+0x01] mov word ptr [edi+2*edx], ax add ecx, 2
- jmp SHORT G_M51273_IG11
+ jmp SHORT G_M51273_IG14
;; size=33 bbWeight=0.40 PerfScore 3.50
-G_M51273_IG17: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - lea eax, [ebx-0x10] - ;; size=3 bbWeight=0.20 PerfScore 0.10 -G_M51273_IG18: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - vmovups xmm0, xmmword ptr [esi+ecx] - vptest xmm0, xmmword ptr [@RWD00] - jne G_M51273_IG05 - vpmovzxbw xmm1, xmm0 - vpsrldq xmm0, xmm0, 8 - vpmovzxbw xmm0, xmm0 - vmovups xmmword ptr [edx], xmm1 - vmovups xmmword ptr [edx+0x10], xmm0 - add ecx, 16 - add edx, 32 - mov dword ptr [ebp-0x10], ecx - cmp ecx, eax - mov ecx, dword ptr [ebp-0x10] - jbe SHORT G_M51273_IG18 - jmp G_M51273_IG05 - ;; size=65 bbWeight=0.20 PerfScore 4.55 -G_M51273_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], eax test eax, 0xD1FFAB1E
- jne SHORT G_M51273_IG21
+ jne SHORT G_M51273_IG22
mov dword ptr [ebp-0x10], ecx mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -222,25 +222,25 @@ G_M51273_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M51273_IG21
+ jmp SHORT G_M51273_IG22
;; size=34 bbWeight=0 PerfScore 0.00
-G_M51273_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51273_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
movzx edx, al mov word ptr [edi+2*ecx], dx inc ecx shr eax, 8 mov dword ptr [ebp-0x18], eax ;; size=14 bbWeight=0 PerfScore 0.00
-G_M51273_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M51273_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x18] movzx edx, al test dl, 128
- je SHORT G_M51273_IG20 - jmp G_M51273_IG12
+ je SHORT G_M51273_IG21 + jmp G_M51273_IG15
;; size=16 bbWeight=0 PerfScore 0.00 RWD00 dq 8080808080808080h, 8080808080808080h
-; Total bytes of code 407, prolog size 19, PerfScore 124.95, instruction count 127, allocated bytes for code 407 (MethodHash=b01e37b6) for method System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
+; Total bytes of code 386, prolog size 19, PerfScore 125.75, instruction count 125, allocated bytes for code 386 (MethodHash=b01e37b6) for method System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
; ============================================================

-6 (-3.51%) : 22150.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)

@@ -39,15 +39,26 @@ G_M29319_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=14 bbWeight=1 PerfScore 6.75 G_M29319_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz test edi, edi
- je G_M29319_IG08 - test ebx, ebx
je SHORT G_M29319_IG07
+ test ebx, ebx + je SHORT G_M29319_IG06
xor eax, eax mov dword ptr [ebp-0x10], eax cmp dword ptr [ebx+0x04], 0
- jg SHORT G_M29319_IG05 - ;; size=23 bbWeight=1 PerfScore 7.75 -G_M29319_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M29319_IG04 + ;; size=19 bbWeight=1 PerfScore 7.75 +G_M29319_IG03: ; bbWeight=0.52, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, 0xD1FFAB1E + call CORINFO_HELP_COUNTPROFILE32 + mov ecx, dword ptr [ebp-0x10] + cmp gword ptr [ebx+4*ecx+0x08], 0 + je SHORT G_M29319_IG06 + inc ecx + cmp dword ptr [ebx+0x04], ecx + mov dword ptr [ebp-0x10], ecx + jg SHORT G_M29319_IG03 + ;; size=29 bbWeight=0.52 PerfScore 5.95 +G_M29319_IG04: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov ecx, esi @@ -73,7 +84,7 @@ G_M29319_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ; gcrRegs -[ecx edx ebx esi edi] +[eax] ; gcr arg pop 3 ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M29319_IG04: ; bbWeight=1.00, epilog, nogc, extend
+G_M29319_IG05: ; bbWeight=1.00, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -81,23 +92,8 @@ G_M29319_IG04: ; bbWeight=1.00, epilog, nogc, extend pop ebp ret 20 ;; size=8 bbWeight=1.00 PerfScore 4.50
-G_M29319_IG05: ; bbWeight=0.52, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[ebx esi edi] - mov ecx, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov ecx, dword ptr [ebp-0x10] - cmp gword ptr [ebx+4*ecx+0x08], 0 - je SHORT G_M29319_IG07 - inc ecx - cmp dword ptr [ebx+0x04], ecx - mov dword ptr [ebp-0x10], ecx - jg SHORT G_M29319_IG05 - ;; size=29 bbWeight=0.52 PerfScore 5.95 -G_M29319_IG06: ; bbWeight=0.34, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M29319_IG03 - ;; size=2 bbWeight=0.34 PerfScore 0.68 -G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx esi edi]
+G_M29319_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax]
mov ecx, 0x2C9B mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -108,7 +104,7 @@ G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[eax ecx] int3 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M29319_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M29319_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD50 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -120,6 +116,6 @@ G_M29319_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 171, prolog size 14, PerfScore 40.88, instruction count 60, allocated bytes for code 171 (MethodHash=63cd8d78) for method System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
+; Total bytes of code 165, prolog size 14, PerfScore 40.20, instruction count 59, allocated bytes for code 165 (MethodHash=63cd8d78) for method System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
; ============================================================

+16 (+4.89%) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)

@@ -8,25 +8,25 @@ ; 0 inlinees with PGO data; 15 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 15, 15 ) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner> -; V01 arg1 [V01,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase> -; V02 arg2 [V02,T12] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String> -; V03 arg3 [V03,T13] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String> -; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
+; V00 this [V00,T02] ( 15, 15.98) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner> +; V01 arg1 [V01,T09] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase> +; V02 arg2 [V02,T13] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String> +; V03 arg3 [V03,T14] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String> +; V04 arg4 [V04,T15] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T12] ( 1, 1.98) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
; V06 arg6 [V06,T16] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <Xunit.Sdk.IMessageBus> ; V07 arg7 [V07,T17] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <Xunit.Sdk.ExceptionAggregator> ; V08 arg8 [V08,T18] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Threading.CancellationTokenSource>
-; V09 loc0 [V09,T06] ( 4, 6 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>> -; V10 loc1 [V10,T05] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
+; V09 loc0 [V09,T07] ( 4, 6 ) ref -> ebx class-hnd single-def <<unknown class>> +; V10 loc1 [V10,T05] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
; V11 loc2 [V11,T01] ( 12, 21.04) int -> [ebp-0x10] ; V12 tmp0 [V12,T03] ( 4, 16 ) ref -> eax class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V13 tmp1 [V13,T09] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type> -; V14 tmp2 [V14,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> -; V15 tmp3 [V15,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]> -; V16 tmp4 [V16,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect" -; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> ecx "argument with side effect" -; V18 cse0 [V18,T04] ( 6, 7.50) int -> ebx "CSE - moderate"
+; V13 tmp1 [V13,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type> +; V14 tmp2 [V14,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> +; V15 tmp3 [V15,T04] ( 2, 7.92) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]> +; V16 tmp4 [V16,T08] ( 3, 6 ) ref -> ecx single-def "argument with side effect" +; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> edi "argument with side effect" +; V18 cse0 [V18,T06] ( 6, 7.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
; ; Lcl frame size = 12 @@ -130,30 +130,37 @@ G_M37566_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 mov eax, dword ptr [eax+0x34] call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] +[eax]
- mov edi, eax - ; gcrRegs +[edi] - mov gword ptr [ebp-0x14], edi - ; GC ptr vars +{V09} - mov ebx, dword ptr [edi+0x04] - mov edx, ebx
+ mov ebx, eax + ; gcrRegs +[ebx] + mov eax, dword ptr [ebx+0x04] + ; gcrRegs -[eax] + mov dword ptr [ebp-0x14], eax + mov edx, eax
mov ecx, 0xD1FFAB1E ; System.Type[] call CORINFO_HELP_NEWARR_1_OBJ
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V10} xor edx, edx
- test ebx, ebx
+ mov ecx, dword ptr [ebp-0x14] + test ecx, ecx + mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi]
jle SHORT G_M37566_IG08
- ;; size=180 bbWeight=1 PerfScore 58.75 -G_M37566_IG03: ; bbWeight=0.50, gcVars=00000060 {V09 V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - cmp dword ptr [eax+0x04], ebx
+ ;; size=186 bbWeight=1 PerfScore 60.75 +G_M37566_IG03: ; bbWeight=0.50, gcVars=00000020 {V10}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp dword ptr [eax+0x04], ecx + mov gword ptr [ebp+0x14], edi
jl SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
+ ;; size=8 bbWeight=0.50 PerfScore 2.50 +G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax edi]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08] + ; gcrRegs +[edi] + mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi] mov edi, dword ptr [edi+0x2C] call [edi+0x1C]<unknown method> @@ -167,26 +174,26 @@ G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax edi] ; byrRegs -[edx] inc ecx
- cmp ebx, ecx
+ cmp dword ptr [ebp-0x14], ecx
mov edx, ecx
- mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi]
jg SHORT G_M37566_IG04
- ;; size=40 bbWeight=3.96 PerfScore 66.33 -G_M37566_IG05: ; bbWeight=1, gcVars=00000020 {V10}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edi] - ; GC ptr vars -{V09}
+ ;; size=40 bbWeight=3.96 PerfScore 70.29 +G_M37566_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax] jmp SHORT G_M37566_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00 -G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[edi] - ; GC ptr vars +{V06 V09}
+ ;; size=8 bbWeight=1.98 PerfScore 7.92 +G_M37566_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax edi] +[ebx]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08] + ; gcrRegs +[edi] + mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi] mov edi, dword ptr [edi+0x2C] call [edi+0x1C]<unknown method> @@ -202,52 +209,53 @@ G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] inc edi
- cmp ebx, edi - mov edx, edi
+ mov edx, dword ptr [ebp-0x14] + cmp edx, edi
jg SHORT G_M37566_IG10
- ;; size=42 bbWeight=0.04 PerfScore 0.79 -G_M37566_IG07: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V06 V09}
+ ;; size=45 bbWeight=0.04 PerfScore 0.83 +G_M37566_IG07: ; bbWeight=0.02, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
mov eax, ecx ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.02 PerfScore 0.01 -G_M37566_IG08: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi] + ;; size=5 bbWeight=0.02 PerfScore 0.03 +G_M37566_IG08: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp+0x14]
+ mov ecx, edi
; gcrRegs +[ecx] mov edx, eax ; gcrRegs +[edx] ; GC ptr vars -{V10} call [Xunit.Sdk.Reflector:ConvertArguments(System.Object[],System.Type[]):System.Object[]]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[ecx edx edi]
lea edx, bword ptr [esi+0x2C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax esi] ; byrRegs -[edx]
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M37566_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=18 bbWeight=1.98 PerfScore 9.90 +G_M37566_IG09: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret 28
- ;; size=10 bbWeight=1 PerfScore 4.50 -G_M37566_IG10: ; bbWeight=0.02, gcVars=00000060 {V09 V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx esi] - ; GC ptr vars +{V05 V06 V09 V10} - mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi]
+ ;; size=10 bbWeight=1.98 PerfScore 8.91 +G_M37566_IG10: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx ebx esi] + ; GC ptr vars +{V05 V10} + mov edx, edi
jmp SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.02 PerfScore 0.06
+ ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M37566_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx esi edi] - ; GC ptr vars -{V05 V06 V09 V10}
+ ; gcrRegs -[ecx ebx esi] + ; GC ptr vars -{V05 V10}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 327, prolog size 9, PerfScore 146.18, instruction count 107, allocated bytes for code 327 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
+; Total bytes of code 343, prolog size 9, PerfScore 166.17, instruction count 113, allocated bytes for code 343 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
; ============================================================

+16 (+4.89%) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)

@@ -8,25 +8,25 @@ ; 0 inlinees with PGO data; 15 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 15, 15 ) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner> -; V01 arg1 [V01,T08] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase> -; V02 arg2 [V02,T12] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String> -; V03 arg3 [V03,T13] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String> -; V04 arg4 [V04,T14] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]> -; V05 arg5 [V05,T15] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
+; V00 this [V00,T02] ( 15, 15.98) ref -> esi this class-hnd single-def <Xunit.Sdk.XunitTestCaseRunner> +; V01 arg1 [V01,T09] ( 3, 3 ) ref -> ecx class-hnd single-def <Xunit.Sdk.IXunitTestCase> +; V02 arg2 [V02,T13] ( 1, 1 ) ref -> [ebp+0x20] class-hnd single-def <System.String> +; V03 arg3 [V03,T14] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <System.String> +; V04 arg4 [V04,T15] ( 1, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Object[]> +; V05 arg5 [V05,T12] ( 1, 1.98) ref -> [ebp+0x14] class-hnd single-def <System.Object[]>
; V06 arg6 [V06,T16] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <Xunit.Sdk.IMessageBus> ; V07 arg7 [V07,T17] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <Xunit.Sdk.ExceptionAggregator> ; V08 arg8 [V08,T18] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Threading.CancellationTokenSource>
-; V09 loc0 [V09,T06] ( 4, 6 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>> -; V10 loc1 [V10,T05] ( 6, 6.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
+; V09 loc0 [V09,T07] ( 4, 6 ) ref -> ebx class-hnd single-def <<unknown class>> +; V10 loc1 [V10,T05] ( 6, 7.52) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.Type[]>
; V11 loc2 [V11,T01] ( 12, 21.04) int -> [ebp-0x10] ; V12 tmp0 [V12,T03] ( 4, 16 ) ref -> eax class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V13 tmp1 [V13,T09] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type> -; V14 tmp2 [V14,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> -; V15 tmp3 [V15,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]> -; V16 tmp4 [V16,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect" -; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> ecx "argument with side effect" -; V18 cse0 [V18,T04] ( 6, 7.50) int -> ebx "CSE - moderate"
+; V13 tmp1 [V13,T10] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Type> +; V14 tmp2 [V14,T11] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> +; V15 tmp3 [V15,T04] ( 2, 7.92) ref -> eax class-hnd single-def "Inlining Arg" <System.Object[]> +; V16 tmp4 [V16,T08] ( 3, 6 ) ref -> ecx single-def "argument with side effect" +; V17 tmp5 [V17,T00] ( 6, 24 ) ref -> edi "argument with side effect" +; V18 cse0 [V18,T06] ( 6, 7.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
; ; Lcl frame size = 12 @@ -130,30 +130,37 @@ G_M37566_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 mov eax, dword ptr [eax+0x34] call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] +[eax]
- mov edi, eax - ; gcrRegs +[edi] - mov gword ptr [ebp-0x14], edi - ; GC ptr vars +{V09} - mov ebx, dword ptr [edi+0x04] - mov edx, ebx
+ mov ebx, eax + ; gcrRegs +[ebx] + mov eax, dword ptr [ebx+0x04] + ; gcrRegs -[eax] + mov dword ptr [ebp-0x14], eax + mov edx, eax
mov ecx, 0xD1FFAB1E ; System.Type[] call CORINFO_HELP_NEWARR_1_OBJ
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V10} xor edx, edx
- test ebx, ebx
+ mov ecx, dword ptr [ebp-0x14] + test ecx, ecx + mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi]
jle SHORT G_M37566_IG08
- ;; size=180 bbWeight=1 PerfScore 58.75 -G_M37566_IG03: ; bbWeight=0.50, gcVars=00000060 {V09 V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - cmp dword ptr [eax+0x04], ebx
+ ;; size=186 bbWeight=1 PerfScore 60.75 +G_M37566_IG03: ; bbWeight=0.50, gcVars=00000020 {V10}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp dword ptr [eax+0x04], ecx + mov gword ptr [ebp+0x14], edi
jl SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
+ ;; size=8 bbWeight=0.50 PerfScore 2.50 +G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax edi]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08] + ; gcrRegs +[edi] + mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi] mov edi, dword ptr [edi+0x2C] call [edi+0x1C]<unknown method> @@ -167,26 +174,26 @@ G_M37566_IG04: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax edi] ; byrRegs -[edx] inc ecx
- cmp ebx, ecx
+ cmp dword ptr [ebp-0x14], ecx
mov edx, ecx
- mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi]
jg SHORT G_M37566_IG04
- ;; size=40 bbWeight=3.96 PerfScore 66.33 -G_M37566_IG05: ; bbWeight=1, gcVars=00000020 {V10}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edi] - ; GC ptr vars -{V09}
+ ;; size=40 bbWeight=3.96 PerfScore 70.29 +G_M37566_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax] jmp SHORT G_M37566_IG08
- ;; size=5 bbWeight=1 PerfScore 3.00 -G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[edi] - ; GC ptr vars +{V06 V09}
+ ;; size=8 bbWeight=1.98 PerfScore 7.92 +G_M37566_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax edi] +[ebx]
mov dword ptr [ebp-0x10], edx
- mov ecx, gword ptr [edi+4*edx+0x08]
+ mov edi, gword ptr [ebx+4*edx+0x08] + ; gcrRegs +[edi] + mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ecx]
+ mov edi, dword ptr [edi]
; gcrRegs -[edi] mov edi, dword ptr [edi+0x2C] call [edi+0x1C]<unknown method> @@ -202,52 +209,53 @@ G_M37566_IG06: ; bbWeight=0.04, gcVars=00000060 {V09 V10}, gcrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] inc edi
- cmp ebx, edi - mov edx, edi
+ mov edx, dword ptr [ebp-0x14] + cmp edx, edi
jg SHORT G_M37566_IG10
- ;; size=42 bbWeight=0.04 PerfScore 0.79 -G_M37566_IG07: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V06 V09}
+ ;; size=45 bbWeight=0.04 PerfScore 0.83 +G_M37566_IG07: ; bbWeight=0.02, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx]
mov eax, ecx ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.02 PerfScore 0.01 -G_M37566_IG08: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ mov edi, gword ptr [ebp+0x14] + ; gcrRegs +[edi] + ;; size=5 bbWeight=0.02 PerfScore 0.03 +G_M37566_IG08: ; bbWeight=1.98, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp+0x14]
+ mov ecx, edi
; gcrRegs +[ecx] mov edx, eax ; gcrRegs +[edx] ; GC ptr vars -{V10} call [Xunit.Sdk.Reflector:ConvertArguments(System.Object[],System.Type[]):System.Object[]]
- ; gcrRegs -[ecx edx]
+ ; gcrRegs -[ecx edx edi]
lea edx, bword ptr [esi+0x2C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax esi] ; byrRegs -[edx]
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M37566_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=18 bbWeight=1.98 PerfScore 9.90 +G_M37566_IG09: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret 28
- ;; size=10 bbWeight=1 PerfScore 4.50 -G_M37566_IG10: ; bbWeight=0.02, gcVars=00000060 {V09 V10}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx esi] - ; GC ptr vars +{V05 V06 V09 V10} - mov edi, gword ptr [ebp-0x14] - ; gcrRegs +[edi]
+ ;; size=10 bbWeight=1.98 PerfScore 8.91 +G_M37566_IG10: ; bbWeight=0.02, gcVars=00000020 {V10}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx ebx esi] + ; GC ptr vars +{V05 V10} + mov edx, edi
jmp SHORT G_M37566_IG06
- ;; size=5 bbWeight=0.02 PerfScore 0.06
+ ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M37566_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx esi edi] - ; GC ptr vars -{V05 V06 V09 V10}
+ ; gcrRegs -[ecx ebx esi] + ; GC ptr vars -{V05 V10}
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 327, prolog size 9, PerfScore 146.18, instruction count 107, allocated bytes for code 327 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
+; Total bytes of code 343, prolog size 9, PerfScore 166.17, instruction count 113, allocated bytes for code 343 (MethodHash=29706d41) for method Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
; ============================================================

+17 (+6.20%) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)

@@ -11,8 +11,8 @@ ; V00 this [V00,T07] ( 7, 10 ) byref -> esi this single-def ; V01 arg1 [V01,T08] ( 4, 6.50) ref -> [ebp-0x14] class-hnd single-def <System.Xml.Linq.XNamespace> ; V02 arg2 [V02,T10] ( 2, 2.50) ubyte -> [ebp+0x08] single-def
-; V03 loc0 [V03,T03] ( 12, 52.50) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V04 loc1 [V04,T04] ( 5, 50 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
+; V03 loc0 [V03,T03] ( 13, 54.50) ref -> [ebp-0x18] class-hnd <<unknown class>> +; V04 loc1 [V04,T04] ( 6, 52 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Linq.XNamespace> ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.Linq.XNamespace> ; V07 tmp2 [V07,T00] ( 5,148.71) ref -> edx class-hnd exact "Inlining Arg" <System.String> @@ -162,26 +162,28 @@ G_M50968_IG13: ; bbWeight=16, gcrefRegs=0000000E {ecx edx ebx}, byrefRegs ; gcrRegs +[ecx] je SHORT G_M50968_IG10 ;; size=34 bbWeight=16 PerfScore 180.00
-G_M50968_IG14: ; bbWeight=4, gcVars=00000108 {V01 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; gcrRegs -[ecx]
+G_M50968_IG14: ; bbWeight=8, gcVars=00000108 {V01 V03}, gcrefRegs=00000002 {ecx}, byrefRegs=00000040 {esi}, gcvars, byref
; GC ptr vars -{V04}
- jmp SHORT G_M50968_IG16 - ;; size=2 bbWeight=4 PerfScore 8.00 -G_M50968_IG15: ; bbWeight=2, gcVars=00000100 {V01}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
+ movzx ebx, byte ptr [ebp+0x08] + ;; size=7 bbWeight=8 PerfScore 16.00 +G_M50968_IG15: ; bbWeight=2, gcVars=00000100 {V01}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; GC ptr vars -{V03}
- test bl, bl
+ cmp ecx, eax
jne SHORT G_M50968_IG19
+ test bl, bl + jne SHORT G_M50968_IG20
mov edx, gword ptr [eax+0x04] ; gcrRegs +[edx] cmp dword ptr [edx+0x04], 0 mov gword ptr [ebp-0x18], eax ; GC ptr vars +{V03} mov dword ptr [ebp+0x08], ebx
- jg SHORT G_M50968_IG21 - ;; size=19 bbWeight=2 PerfScore 18.50
+ jg SHORT G_M50968_IG22 + ;; size=23 bbWeight=2 PerfScore 21.00
G_M50968_IG16: ; bbWeight=4, gcVars=00000108 {V01 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
- ; gcrRegs -[eax edx]
+ ; gcrRegs -[eax ecx edx]
mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax] cmp eax, gword ptr [esi] @@ -205,15 +207,23 @@ G_M50968_IG18: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M50968_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M50968_IG19: ; bbWeight=1, gcVars=00000100 {V01}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
+ ; GC ptr vars +{V01 V08} + mov gword ptr [ebp-0x18], eax + ; GC ptr vars +{V03} + mov dword ptr [ebp+0x08], ebx + jmp SHORT G_M50968_IG16 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M50968_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, gcvars, byref + ; GC ptr vars -{V01 V03 V08}
lea edx, bword ptr [esi+0x04] ; byrRegs +[edx] call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX ; byrRegs -[edx esi] mov eax, gword ptr [eax+0x04] ;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M50968_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M50968_IG21: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -221,14 +231,14 @@ G_M50968_IG20: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M50968_IG21: ; bbWeight=0.50, gcVars=00000008 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M50968_IG22: ; bbWeight=0.50, gcVars=00000008 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] ; GC ptr vars +{V03} mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax] mov eax, gword ptr [eax+0x04] ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M50968_IG22: ; bbWeight=0.50, epilog, nogc, extend
+G_M50968_IG23: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -237,6 +247,6 @@ G_M50968_IG22: ; bbWeight=0.50, epilog, nogc, extend ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 274, prolog size 16, PerfScore 622.55, instruction count 111, allocated bytes for code 274 (MethodHash=853538e7) for method System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
+; Total bytes of code 291, prolog size 16, PerfScore 637.05, instruction count 117, allocated bytes for code 291 (MethodHash=853538e7) for method System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-43 (-12.91%) : 215942.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T18] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T11] ( 6, 43 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]> -; V02 loc0 [V02,T04] ( 6, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]> -; V03 loc1 [V03,T14] ( 3, 22 ) ubyte -> [ebp-0x24] -; V04 loc2 [V04,T10] ( 6, 73 ) int -> ebx
+; V01 arg1 [V01,T11] ( 6, 19 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]> +; V02 loc0 [V02,T04] ( 7, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]> +; V03 loc1 [V03,T14] ( 3, 10 ) ubyte -> [ebp-0x24] +; V04 loc2 [V04,T10] ( 6, 25 ) int -> ebx
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MemberInfo>
-; V07 tmp0 [V07,T00] ( 6,164.33) ref -> [ebp-0x34] class-hnd exact "non-inline candidate call" <System.String>
+; V07 tmp0 [V07,T00] ( 6,164.33) ref -> esi class-hnd exact "non-inline candidate call" <System.String>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]> ; V09 tmp2 [V09,T12] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp3 [V10,T01] ( 5,142.88) ref -> [ebp-0x38] class-hnd exact "Inlining Arg" <System.String> -; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> eax "impAppendStmt"
+; V10 tmp3 [V10,T01] ( 5,142.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> +; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> ecx "impAppendStmt"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,22 @@ ;* V17 tmp10 [V17,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MemberInfo]> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V20 tmp13 [V20,T13] ( 2, 64 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V20 tmp13 [V20,T13] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
;* V21 tmp14 [V21,T19] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> [ebp-0x3C] spill-single-def "field V05._current (fldOffset=0x4)" P-INDEP
+; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> eax "field V05._current (fldOffset=0x4)" P-INDEP
; V23 tmp16 [V23,T02] ( 6, 73.29) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP
-; V24 tmp17 [V24,T07] ( 2, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V24 tmp17 [V24,T07] ( 3, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> ecx "field V08._list (fldOffset=0x0)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x4)" P-INDEP ;* V27 tmp20 [V27,T20] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP ; V28 tmp21 [V28,T16] ( 2, 8 ) int -> edx "field V08._version (fldOffset=0xc)" P-INDEP ;* V29 tmp22 [V29,T21] ( 0, 0 ) ubyte -> zero-ref "field V19.hasValue (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T17] ( 2, 32 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
+; V30 tmp23 [V30,T17] ( 2, 8 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
; V31 tmp24 [V31,T03] ( 3, 79.90) ref -> eax "arr expr" ; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ; V33 cse0 [V33,T05] ( 2, 32.05) int -> eax "CSE - moderate" ;
-; Lcl frame size = 48
+; Lcl frame size = 36
G_M52580_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -51,7 +51,7 @@ G_M52580_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 48
+ sub esp, 36
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -67,10 +67,10 @@ G_M52580_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 mov edi, eax ; gcrRegs +[edi] test edi, edi
- je G_M52580_IG19
+ je G_M52580_IG16
xor ebx, ebx cmp dword ptr [esi+0x04], 0
- jle G_M52580_IG15
+ jle G_M52580_IG14
;; size=28 bbWeight=1 PerfScore 8.75 G_M52580_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] @@ -82,125 +82,87 @@ G_M52580_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 xor ecx, ecx ; gcrRegs -[ecx] mov dword ptr [ebp-0x2C], edx
- jmp SHORT G_M52580_IG08
+ jmp SHORT G_M52580_IG09
;; size=17 bbWeight=4 PerfScore 27.00
-G_M52580_IG04: ; bbWeight=8, gcVars=00000040 {V22}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V22}
+G_M52580_IG04: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax]
mov gword ptr [ebp-0x30], esi ; GC ptr vars +{V01}
- mov eax, gword ptr [esi+4*ebx+0x08] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x34], eax - ; GC ptr vars +{V07} - mov ecx, gword ptr [ebp-0x3C]
+ mov esi, gword ptr [esi+4*ebx+0x08] + mov ecx, eax
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x2C] - ; GC ptr vars -{V22} - call [edx+0x18]<unknown method> - ; gcrRegs -[ecx esi]
+ mov eax, dword ptr [eax] + ; gcrRegs -[eax] + mov eax, dword ptr [eax+0x2C] + call [eax+0x18]<unknown method> + ; gcrRegs -[ecx] +[eax]
mov edx, eax ; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x34]
+ mov ecx, esi
; gcrRegs +[ecx] cmp byte ptr [ecx], cl
- cmp ecx, edx - je G_M52580_IG16 - ;; size=36 bbWeight=8 PerfScore 140.00 -G_M52580_IG05: ; bbWeight=5.27, gcVars=00000800 {V01}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - ; GC ptr vars -{V07}
+ cmp esi, edx + je SHORT G_M52580_IG12 + ;; size=27 bbWeight=8 PerfScore 120.00 +G_M52580_IG05: ; bbWeight=5.27, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax ecx]
test edx, edx
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V07} - mov gword ptr [ebp-0x38], edx - ; GC ptr vars +{V10} - mov ecx, dword ptr [ebp-0x28] - ; gcrRegs -[ecx] - je SHORT G_M52580_IG13 - ;; size=13 bbWeight=5.27 PerfScore 22.40 -G_M52580_IG06: ; bbWeight=42.17, gcVars=00000803 {V01 V07 V10}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edx] - mov edx, gword ptr [ebp-0x34] - ; gcrRegs +[edx] - mov eax, dword ptr [edx+0x04] - mov esi, gword ptr [ebp-0x38] - ; gcrRegs +[esi] - cmp eax, dword ptr [esi+0x04] - mov gword ptr [ebp-0x34], edx - mov gword ptr [ebp-0x38], esi - mov esi, gword ptr [ebp-0x30] - jne SHORT G_M52580_IG12 - ;; size=23 bbWeight=42.17 PerfScore 463.84 -G_M52580_IG07: ; bbWeight=8, gcVars=00000003 {V07 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edx] - ; GC ptr vars -{V01} - mov dword ptr [ebp-0x28], ecx - mov edx, gword ptr [ebp-0x34] - ; gcrRegs +[edx] - lea eax, bword ptr [edx+0x08] - ; byrRegs +[eax] - mov edx, dword ptr [edx+0x04] - ; gcrRegs -[edx] - add edx, edx - push edx - mov edx, gword ptr [ebp-0x38] - ; gcrRegs +[edx]
+ je G_M52580_IG17 + ;; size=8 bbWeight=5.27 PerfScore 6.59 +G_M52580_IG06: ; bbWeight=42.17, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + mov ecx, dword ptr [esi+0x04] + cmp ecx, dword ptr [edx+0x04] + jne G_M52580_IG17 + ;; size=12 bbWeight=42.17 PerfScore 253.00 +G_M52580_IG07: ; bbWeight=8, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz + lea ecx, bword ptr [esi+0x08] + ; byrRegs +[ecx] + mov eax, dword ptr [esi+0x04] + add eax, eax + push eax
add edx, 8 ; gcrRegs -[edx] ; byrRegs +[edx]
- mov ecx, eax - ; byrRegs +[ecx] - ; GC ptr vars -{V07 V10}
call [<unknown method>]
- ; byrRegs -[eax ecx edx]
+ ; gcrRegs -[esi] + ; byrRegs -[ecx edx]
test eax, eax mov ecx, dword ptr [ebp-0x28] mov edx, dword ptr [ebp-0x2C]
- jne SHORT G_M52580_IG11 - ;; size=39 bbWeight=8 PerfScore 108.00 -G_M52580_IG08: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M52580_IG12 + ;; size=28 bbWeight=8 PerfScore 82.00 +G_M52580_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov esi, gword ptr [ebp-0x30] + ; gcrRegs +[esi] + ;; size=3 bbWeight=4 PerfScore 4.00 +G_M52580_IG09: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V01}
cmp edx, dword ptr [edi+0x0C]
- jne SHORT G_M52580_IG17 - ;; size=5 bbWeight=32 PerfScore 128.00 -G_M52580_IG09: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M52580_IG18 + ;; size=9 bbWeight=32 PerfScore 128.00 +G_M52580_IG10: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [edi+0x08] cmp ecx, eax
- jae SHORT G_M52580_IG14
+ jae SHORT G_M52580_IG13
;; size=7 bbWeight=16.02 PerfScore 52.08
-G_M52580_IG10: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M52580_IG11: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [edi+0x04] ; gcrRegs +[eax] cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M52580_IG18
+ jae SHORT G_M52580_IG15
mov eax, gword ptr [eax+4*ecx+0x08]
- mov gword ptr [ebp-0x3C], eax - ; GC ptr vars +{V22}
inc ecx mov dword ptr [ebp-0x28], ecx
- jmp G_M52580_IG04 - ;; size=24 bbWeight=13.32 PerfScore 163.12 -G_M52580_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - ; GC ptr vars -{V22} - mov gword ptr [ebp-0x30], esi - ; GC ptr vars +{V01} - jmp SHORT G_M52580_IG16 - ;; size=5 bbWeight=4 PerfScore 12.00 -G_M52580_IG12: ; bbWeight=21.08, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V01} - mov edx, dword ptr [ebp-0x2C] - jmp SHORT G_M52580_IG08 - ;; size=5 bbWeight=21.08 PerfScore 63.25 -G_M52580_IG13: ; bbWeight=2.64, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[esi]
+ jmp SHORT G_M52580_IG04 + ;; size=18 bbWeight=13.32 PerfScore 149.81 +G_M52580_IG12: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi]
; GC ptr vars +{V01 V11}
- mov edx, dword ptr [ebp-0x2C]
+ mov dword ptr [ebp-0x24], 1
mov esi, gword ptr [ebp-0x30] ; gcrRegs +[esi]
- jmp SHORT G_M52580_IG08 - ;; size=8 bbWeight=2.64 PerfScore 10.54 -G_M52580_IG14: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=2 PerfScore 4.00 +G_M52580_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
...

-43 (-12.91%) : 216028.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T18] ( 3, 3 ) ref -> ecx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T11] ( 6, 43 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]> -; V02 loc0 [V02,T04] ( 6, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]> -; V03 loc1 [V03,T14] ( 3, 22 ) ubyte -> [ebp-0x24] -; V04 loc2 [V04,T10] ( 6, 73 ) int -> ebx
+; V01 arg1 [V01,T11] ( 6, 19 ) ref -> [ebp-0x30] class-hnd single-def <System.String[]> +; V02 loc0 [V02,T04] ( 7, 67.34) ref -> edi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]> +; V03 loc1 [V03,T14] ( 3, 10 ) ubyte -> [ebp-0x24] +; V04 loc2 [V04,T10] ( 6, 25 ) int -> ebx
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]> ;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-; V07 tmp0 [V07,T00] ( 6,164.33) ref -> [ebp-0x34] class-hnd exact "non-inline candidate call" <System.String>
+; V07 tmp0 [V07,T00] ( 6,164.33) ref -> esi class-hnd exact "non-inline candidate call" <System.String>
;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]> ; V09 tmp2 [V09,T12] ( 2, 16 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp3 [V10,T01] ( 5,142.88) ref -> [ebp-0x38] class-hnd exact "Inlining Arg" <System.String> -; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> eax "impAppendStmt"
+; V10 tmp3 [V10,T01] ( 5,142.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> +; V11 tmp4 [V11,T08] ( 2, 32 ) byref -> ecx "impAppendStmt"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -28,22 +28,22 @@ ;* V17 tmp10 [V17,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MethodInfo]> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V20 tmp13 [V20,T13] ( 2, 64 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
+; V20 tmp13 [V20,T13] ( 2, 16 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
;* V21 tmp14 [V21,T19] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> [ebp-0x3C] spill-single-def "field V05._current (fldOffset=0x4)" P-INDEP
+; V22 tmp15 [V22,T06] ( 3, 29.32) ref -> eax "field V05._current (fldOffset=0x4)" P-INDEP
; V23 tmp16 [V23,T02] ( 6, 73.29) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP
-; V24 tmp17 [V24,T07] ( 2, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V24 tmp17 [V24,T07] ( 3, 36 ) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> ecx "field V08._list (fldOffset=0x0)" P-INDEP ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref "field V08._current (fldOffset=0x4)" P-INDEP ;* V27 tmp20 [V27,T20] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP ; V28 tmp21 [V28,T16] ( 2, 8 ) int -> edx "field V08._version (fldOffset=0xc)" P-INDEP ;* V29 tmp22 [V29,T21] ( 0, 0 ) ubyte -> zero-ref "field V19.hasValue (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T17] ( 2, 32 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
+; V30 tmp23 [V30,T17] ( 2, 8 ) ubyte -> eax "field V19.value (fldOffset=0x1)" P-INDEP
; V31 tmp24 [V31,T03] ( 3, 79.90) ref -> eax "arr expr" ; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ; V33 cse0 [V33,T05] ( 2, 32.05) int -> eax "CSE - moderate" ;
-; Lcl frame size = 48
+; Lcl frame size = 36
G_M38308_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -51,7 +51,7 @@ G_M38308_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 48
+ sub esp, 36
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -67,10 +67,10 @@ G_M38308_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 mov edi, eax ; gcrRegs +[edi] test edi, edi
- je G_M38308_IG19
+ je G_M38308_IG16
xor ebx, ebx cmp dword ptr [esi+0x04], 0
- jle G_M38308_IG15
+ jle G_M38308_IG14
;; size=28 bbWeight=1 PerfScore 8.75 G_M38308_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] @@ -82,125 +82,87 @@ G_M38308_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 xor ecx, ecx ; gcrRegs -[ecx] mov dword ptr [ebp-0x2C], edx
- jmp SHORT G_M38308_IG08
+ jmp SHORT G_M38308_IG09
;; size=17 bbWeight=4 PerfScore 27.00
-G_M38308_IG04: ; bbWeight=8, gcVars=00000040 {V22}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V22}
+G_M38308_IG04: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax]
mov gword ptr [ebp-0x30], esi ; GC ptr vars +{V01}
- mov eax, gword ptr [esi+4*ebx+0x08] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x34], eax - ; GC ptr vars +{V07} - mov ecx, gword ptr [ebp-0x3C]
+ mov esi, gword ptr [esi+4*ebx+0x08] + mov ecx, eax
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x2C] - ; GC ptr vars -{V22} - call [edx+0x18]<unknown method> - ; gcrRegs -[ecx esi]
+ mov eax, dword ptr [eax] + ; gcrRegs -[eax] + mov eax, dword ptr [eax+0x2C] + call [eax+0x18]<unknown method> + ; gcrRegs -[ecx] +[eax]
mov edx, eax ; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x34]
+ mov ecx, esi
; gcrRegs +[ecx] cmp byte ptr [ecx], cl
- cmp ecx, edx - je G_M38308_IG16 - ;; size=36 bbWeight=8 PerfScore 140.00 -G_M38308_IG05: ; bbWeight=5.27, gcVars=00000800 {V01}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - ; GC ptr vars -{V07}
+ cmp esi, edx + je SHORT G_M38308_IG12 + ;; size=27 bbWeight=8 PerfScore 120.00 +G_M38308_IG05: ; bbWeight=5.27, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax ecx]
test edx, edx
- mov gword ptr [ebp-0x34], ecx - ; GC ptr vars +{V07} - mov gword ptr [ebp-0x38], edx - ; GC ptr vars +{V10} - mov ecx, dword ptr [ebp-0x28] - ; gcrRegs -[ecx] - je SHORT G_M38308_IG13 - ;; size=13 bbWeight=5.27 PerfScore 22.40 -G_M38308_IG06: ; bbWeight=42.17, gcVars=00000803 {V01 V07 V10}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edx] - mov edx, gword ptr [ebp-0x34] - ; gcrRegs +[edx] - mov eax, dword ptr [edx+0x04] - mov esi, gword ptr [ebp-0x38] - ; gcrRegs +[esi] - cmp eax, dword ptr [esi+0x04] - mov gword ptr [ebp-0x34], edx - mov gword ptr [ebp-0x38], esi - mov esi, gword ptr [ebp-0x30] - jne SHORT G_M38308_IG12 - ;; size=23 bbWeight=42.17 PerfScore 463.84 -G_M38308_IG07: ; bbWeight=8, gcVars=00000003 {V07 V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edx] - ; GC ptr vars -{V01} - mov dword ptr [ebp-0x28], ecx - mov edx, gword ptr [ebp-0x34] - ; gcrRegs +[edx] - lea eax, bword ptr [edx+0x08] - ; byrRegs +[eax] - mov edx, dword ptr [edx+0x04] - ; gcrRegs -[edx] - add edx, edx - push edx - mov edx, gword ptr [ebp-0x38] - ; gcrRegs +[edx]
+ je G_M38308_IG17 + ;; size=8 bbWeight=5.27 PerfScore 6.59 +G_M38308_IG06: ; bbWeight=42.17, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + mov ecx, dword ptr [esi+0x04] + cmp ecx, dword ptr [edx+0x04] + jne G_M38308_IG17 + ;; size=12 bbWeight=42.17 PerfScore 253.00 +G_M38308_IG07: ; bbWeight=8, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz + lea ecx, bword ptr [esi+0x08] + ; byrRegs +[ecx] + mov eax, dword ptr [esi+0x04] + add eax, eax + push eax
add edx, 8 ; gcrRegs -[edx] ; byrRegs +[edx]
- mov ecx, eax - ; byrRegs +[ecx] - ; GC ptr vars -{V07 V10}
call [<unknown method>]
- ; byrRegs -[eax ecx edx]
+ ; gcrRegs -[esi] + ; byrRegs -[ecx edx]
test eax, eax mov ecx, dword ptr [ebp-0x28] mov edx, dword ptr [ebp-0x2C]
- jne SHORT G_M38308_IG11 - ;; size=39 bbWeight=8 PerfScore 108.00 -G_M38308_IG08: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M38308_IG12 + ;; size=28 bbWeight=8 PerfScore 82.00 +G_M38308_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov esi, gword ptr [ebp-0x30] + ; gcrRegs +[esi] + ;; size=3 bbWeight=4 PerfScore 4.00 +G_M38308_IG09: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars -{V01}
cmp edx, dword ptr [edi+0x0C]
- jne SHORT G_M38308_IG17 - ;; size=5 bbWeight=32 PerfScore 128.00 -G_M38308_IG09: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M38308_IG18 + ;; size=9 bbWeight=32 PerfScore 128.00 +G_M38308_IG10: ; bbWeight=16.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [edi+0x08] cmp ecx, eax
- jae SHORT G_M38308_IG14
+ jae SHORT G_M38308_IG13
;; size=7 bbWeight=16.02 PerfScore 52.08
-G_M38308_IG10: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M38308_IG11: ; bbWeight=13.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [edi+0x04] ; gcrRegs +[eax] cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M38308_IG18
+ jae SHORT G_M38308_IG15
mov eax, gword ptr [eax+4*ecx+0x08]
- mov gword ptr [ebp-0x3C], eax - ; GC ptr vars +{V22}
inc ecx mov dword ptr [ebp-0x28], ecx
- jmp G_M38308_IG04 - ;; size=24 bbWeight=13.32 PerfScore 163.12 -G_M38308_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - ; GC ptr vars -{V22} - mov gword ptr [ebp-0x30], esi - ; GC ptr vars +{V01} - jmp SHORT G_M38308_IG16 - ;; size=5 bbWeight=4 PerfScore 12.00 -G_M38308_IG12: ; bbWeight=21.08, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V01} - mov edx, dword ptr [ebp-0x2C] - jmp SHORT G_M38308_IG08 - ;; size=5 bbWeight=21.08 PerfScore 63.25 -G_M38308_IG13: ; bbWeight=2.64, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[esi]
+ jmp SHORT G_M38308_IG04 + ;; size=18 bbWeight=13.32 PerfScore 149.81 +G_M38308_IG12: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi]
; GC ptr vars +{V01 V11}
- mov edx, dword ptr [ebp-0x2C]
+ mov dword ptr [ebp-0x24], 1
mov esi, gword ptr [ebp-0x30] ; gcrRegs +[esi]
- jmp SHORT G_M38308_IG08 - ;; size=8 bbWeight=2.64 PerfScore 10.54 -G_M38308_IG14: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=2 PerfScore 4.00 +G_M38308_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
...

-14 (-8.09%) : 200557.dasm - System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)

@@ -9,15 +9,15 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Xml.XmlDiff.XmlDiffDocument> ; V01 arg1 [V01,T04] ( 5, 7 ) ref -> edx class-hnd single-def <System.String>
-; V02 arg2 [V02,T05] ( 3, 5 ) ref -> eax class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 3, 5 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
; V03 loc0 [V03,T03] ( 9, 10 ) int -> esi ; V04 loc1 [V04,T00] ( 13, 21.08) int -> ebx
-; V05 loc2 [V05,T01] ( 6, 12 ) ushort -> ecx -; V06 loc3 [V06,T02] ( 6, 12 ) ushort -> edi -; V07 cse0 [V07,T06] ( 7, 4.54) int -> [ebp-0x10] spill-single-def "CSE - moderate" -; V08 cse1 [V08,T07] ( 6, 3.54) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V05 loc2 [V05,T01] ( 6, 12 ) ushort -> eax +; V06 loc3 [V06,T02] ( 6, 12 ) ushort -> ecx +; V07 cse0 [V07,T05] ( 7, 6.02) int -> edi "CSE - moderate" +; V08 cse1 [V08,T06] ( 6, 5.02) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M40607_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -25,115 +25,116 @@ G_M40607_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
+ push eax
mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.50
+ ;; size=10 bbWeight=1 PerfScore 6.25
G_M40607_IG02: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edx] mov ecx, dword ptr [edx+0x04]
- mov dword ptr [ebp-0x14], ecx
+ mov dword ptr [ebp-0x10], ecx
mov esi, ecx
+ mov gword ptr [ebp+0x08], eax
mov edi, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x10], edi
cmp edi, esi cmovl esi, edi xor ebx, ebx test esi, esi
- jle SHORT G_M40607_IG09
+ jle SHORT G_M40607_IG08
;; size=25 bbWeight=1 PerfScore 8.25
-G_M40607_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+G_M40607_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax]
cmp ecx, esi
- jl SHORT G_M40607_IG07
+ jl SHORT G_M40607_IG06
cmp edi, esi jl SHORT G_M40607_IG06 ;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M40607_IG04: ; bbWeight=3.96, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz - movzx ecx, word ptr [edx+2*ebx+0x08] - movzx edi, word ptr [eax+2*ebx+0x08] - cmp ecx, edi - jl SHORT G_M40607_IG10 - jg SHORT G_M40607_IG13
+G_M40607_IG04: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + movzx eax, word ptr [edx+2*ebx+0x08] + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + movzx ecx, word ptr [ecx+2*ebx+0x08] + ; gcrRegs -[ecx] + cmp eax, ecx + jl SHORT G_M40607_IG09 + jg SHORT G_M40607_IG12
inc ebx cmp ebx, esi jl SHORT G_M40607_IG04
- ;; size=21 bbWeight=3.96 PerfScore 30.69 -G_M40607_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edx] - mov ecx, dword ptr [ebp-0x14] - mov edi, dword ptr [ebp-0x10] - jmp SHORT G_M40607_IG09 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M40607_IG06: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref - ; gcrRegs +[eax edx] - mov edi, dword ptr [ebp-0x10] - ;; size=3 bbWeight=0.25 PerfScore 0.25 -G_M40607_IG07: ; bbWeight=0.04, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz - cmp ebx, dword ptr [ebp-0x14] - jae SHORT G_M40607_IG17 - movzx ecx, word ptr [edx+2*ebx+0x08]
+ ;; size=24 bbWeight=3.96 PerfScore 34.65 +G_M40607_IG05: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edx] + mov ecx, dword ptr [ebp-0x10] + jmp SHORT G_M40607_IG08 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M40607_IG06: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[edx] + cmp ebx, dword ptr [ebp-0x10] + jae SHORT G_M40607_IG16 + movzx eax, word ptr [edx+2*ebx+0x08]
cmp ebx, edi
- jae SHORT G_M40607_IG17 - movzx edi, word ptr [eax+2*ebx+0x08] - cmp ecx, edi - jl SHORT G_M40607_IG10 - jg SHORT G_M40607_IG13
+ jae SHORT G_M40607_IG16 + mov ecx, gword ptr [ebp+0x08] + ; gcrRegs +[ecx] + movzx ecx, word ptr [ecx+2*ebx+0x08] + ; gcrRegs -[ecx] + cmp eax, ecx + jl SHORT G_M40607_IG09 + jg SHORT G_M40607_IG12
inc ebx cmp ebx, esi
- mov edi, dword ptr [ebp-0x10] - jl SHORT G_M40607_IG07
+ jl SHORT G_M40607_IG06
;; size=33 bbWeight=0.04 PerfScore 0.52
-G_M40607_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax edx] - mov ecx, dword ptr [ebp-0x14]
+G_M40607_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] + mov ecx, dword ptr [ebp-0x10]
;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M40607_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M40607_IG08: ; bbWeight=1.98, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi
- jge SHORT G_M40607_IG12 - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M40607_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jge SHORT G_M40607_IG11 + ;; size=4 bbWeight=1.98 PerfScore 2.48 +G_M40607_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG11: ; bbWeight=0.50, epilog, nogc, extend - lea esp, [ebp-0x0C]
+G_M40607_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop ecx
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M40607_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - mov edi, dword ptr [ebp-0x10] - cmp dword ptr [ebp-0x14], edi - jle SHORT G_M40607_IG15 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M40607_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M40607_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + cmp dword ptr [ebp-0x10], edi + jle SHORT G_M40607_IG14 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M40607_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG14: ; bbWeight=0.50, epilog, nogc, extend - lea esp, [ebp-0x0C]
+G_M40607_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ecx
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M40607_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M40607_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M40607_IG16: ; bbWeight=0.50, epilog, nogc, extend - lea esp, [ebp-0x0C]
+G_M40607_IG15: ; bbWeight=0.50, epilog, nogc, extend + pop ecx
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M40607_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M40607_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 12, PerfScore 58.23, instruction count 75, allocated bytes for code 173 (MethodHash=18dd6160) for method System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
+; Total bytes of code 159, prolog size 10, PerfScore 67.98, instruction count 73, allocated bytes for code 159 (MethodHash=18dd6160) for method System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
; ============================================================

+33 (+9.76%) : 200462.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)

@@ -8,18 +8,20 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 27 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
+; V00 this [V00,T02] ( 10, 38.84) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.SequentialOutput>
; V01 arg1 [V01,T05] ( 8, 21.50) ref -> [ebp-0x20] class-hnd single-def <System.String> ; V02 arg2 [V02,T04] ( 6, 25.16) ref -> edi class-hnd single-def <ushort[]>
-; V03 arg3 [V03,T09] ( 2, 4 ) ref -> [ebp+0x08] class-hnd single-def <System.String[]> -; V04 loc0 [V04,T08] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
+; V03 arg3 [V03,T08] ( 2, 15.84) ref -> [ebp+0x08] class-hnd single-def <System.String[]> +; V04 loc0 [V04,T09] ( 4, 10 ) int -> [ebp-0x10] spill-single-def
; V05 loc1 [V05,T00] ( 19,106 ) int -> [ebp-0x14]
-; V06 loc2 [V06,T02] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
+; V06 loc2 [V06,T03] ( 3, 40 ) int -> [ebp-0x18] spill-single-def
; V07 loc3 [V07,T07] ( 3, 20 ) ushort -> edx
-; V08 loc4 [V08,T01] ( 14, 77.16) int -> eax
+; V08 loc4 [V08,T01] ( 14, 89 ) int -> eax
; V09 cse0 [V09,T06] ( 6, 20 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; TEMP_02 ref -> [ebp-0x24] +; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,29 +29,30 @@ G_M58768_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 28 + xor eax, eax + mov dword ptr [ebp-0x24], eax
mov esi, ecx ; gcrRegs +[esi] mov ebx, edx ; gcrRegs +[ebx] mov edi, gword ptr [ebp+0x0C] ; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=21 bbWeight=1 PerfScore 7.25
G_M58768_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, dword ptr [ebx+0x04] mov dword ptr [ebp-0x1C], edx
- mov ecx, edx - mov dword ptr [ebp-0x10], ecx - xor eax, eax - test ecx, ecx
+ mov dword ptr [ebp-0x10], edx + xor ecx, ecx + cmp dword ptr [ebp-0x10], 0
jle SHORT G_M58768_IG05
- ;; size=17 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 7.25
G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- push eax - mov dword ptr [ebp-0x14], eax - mov ecx, edx - sub ecx, eax
push ecx
+ mov dword ptr [ebp-0x14], ecx + mov eax, edx + sub eax, ecx + push eax
mov ecx, ebx ; gcrRegs +[ecx] mov edx, edi @@ -62,19 +65,25 @@ G_M58768_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=27 bbWeight=4 PerfScore 37.00 G_M58768_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi]
- mov eax, dword ptr [ebp-0x10] - mov ecx, dword ptr [ebp-0x14] - jmp G_M58768_IG15 - ;; size=11 bbWeight=1 PerfScore 4.00
+ mov gword ptr [ebp-0x20], ebx + ; GC ptr vars +{V01} + mov eax, dword ptr [ebp-0x14] + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=14 bbWeight=1 PerfScore 5.00
G_M58768_IG05: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax - mov eax, dword ptr [ebp-0x10] - jmp G_M58768_IG15 - ;; size=10 bbWeight=0.50 PerfScore 1.62
+ ; GC ptr vars -{V01} + mov gword ptr [ebp-0x20], ebx + ; GC ptr vars +{V01} + mov eax, ecx + mov edx, dword ptr [ebp-0x10] + jmp G_M58768_IG16 + ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M58768_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[edi]
+ ; GC ptr vars -{V01}
cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx ; GC ptr vars +{V01} mov dword ptr [ebp-0x14], ecx @@ -101,55 +110,57 @@ G_M58768_IG07: ; bbWeight=32, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx ;; size=7 bbWeight=32 PerfScore 72.00 G_M58768_IG08: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp ecx, dword ptr [ebp-0x1C]
- jae G_M58768_IG22
+ jae G_M58768_IG23
mov gword ptr [ebp-0x20], ebx ; GC ptr vars +{V01} mov dword ptr [ebp-0x14], ecx movzx edx, word ptr [ebx+2*ecx+0x08] mov eax, dword ptr [edi+0x04] dec eax
- mov ebx, gword ptr [ebp-0x20] - js SHORT G_M58768_IG14 - ;; size=29 bbWeight=4 PerfScore 45.00 -G_M58768_IG09: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; GC ptr vars -{V01} - cmp dword ptr [edi+0x04], eax - mov gword ptr [ebp-0x20], ebx - ; GC ptr vars +{V01} - jle SHORT G_M58768_IG12 - ;; size=8 bbWeight=1 PerfScore 5.00 -G_M58768_IG10: ; bbWeight=15.84, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ js SHORT G_M58768_IG12 + ;; size=26 bbWeight=4 PerfScore 41.00 +G_M58768_IG09: ; bbWeight=1, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
+ cmp dword ptr [edi+0x04], eax + jle SHORT G_M58768_IG13 + ;; size=5 bbWeight=1 PerfScore 4.00 +G_M58768_IG10: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx ebx, word ptr [edi+2*eax+0x08] cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax jns SHORT G_M58768_IG10 ;; size=12 bbWeight=15.84 PerfScore 71.28 G_M58768_IG11: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x20]
+ mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=5 bbWeight=4 PerfScore 12.00
-G_M58768_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG12: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov ebx, gword ptr [ebp+0x08] + ; gcrRegs +[ebx] + jmp SHORT G_M58768_IG15 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M58768_IG13: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] cmp eax, dword ptr [edi+0x04]
- jae G_M58768_IG22
+ jae G_M58768_IG23
movzx ebx, word ptr [edi+2*eax+0x08] cmp ebx, edx
- je SHORT G_M58768_IG13
+ je SHORT G_M58768_IG14
dec eax
- jns SHORT G_M58768_IG12 - mov ebx, gword ptr [ebp-0x20]
+ jns SHORT G_M58768_IG13 + mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- jmp SHORT G_M58768_IG14
+ jmp SHORT G_M58768_IG15
;; size=26 bbWeight=0.16 PerfScore 1.84
-G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M58768_IG14: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx] mov ebx, gword ptr [ebp+0x08] ; gcrRegs +[ebx] cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M58768_IG22
+ jae G_M58768_IG23
mov edx, gword ptr [ebx+4*eax+0x08] ; gcrRegs +[edx] mov ecx, esi @@ -158,33 +169,32 @@ G_M58768_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov eax, dword ptr [eax+0x2C] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx edx]
+ ;; size=26 bbWeight=7.92 PerfScore 112.86 +G_M58768_IG15: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x14] + inc eax + mov edx, dword ptr [ebp-0x10] + cmp eax, edx
mov gword ptr [ebp+0x08], ebx
- mov ebx, gword ptr [ebp-0x20] - ;; size=28 bbWeight=2 PerfScore 32.50 -G_M58768_IG14: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V01} - mov ecx, dword ptr [ebp-0x14] - inc ecx - mov eax, dword ptr [ebp-0x10] - cmp ecx, eax - jl SHORT G_M58768_IG18 - ;; size=11 bbWeight=4 PerfScore 14.00 -G_M58768_IG15: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] - test ecx, ecx - jne SHORT G_M58768_IG20
+ jl SHORT G_M58768_IG19 + ;; size=14 bbWeight=4 PerfScore 18.00 +G_M58768_IG16: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx edi] + test eax, eax + jne SHORT G_M58768_IG21
;; size=4 bbWeight=1 PerfScore 1.25
-G_M58768_IG16: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M58768_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx]
- mov edx, ebx
+ mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx] mov eax, dword ptr [esi] mov eax, dword ptr [eax+0x2C]
+ ; GC ptr vars -{V01}
call [eax+0x1C]<unknown method>
- ; gcrRegs -[ecx edx ebx esi] - ;; size=12 bbWeight=0.50 PerfScore 3.75 -G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs -[ecx edx esi] + ;; size=13 bbWeight=0.50 PerfScore 4.12 +G_M58768_IG18: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -192,35 +202,51 @@ G_M58768_IG17: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M58768_IG18: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs +[ebx esi edi] - mov eax, ecx
+G_M58768_IG19: ; bbWeight=2, gcVars=00000020 {V01}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[esi edi] + ; GC ptr vars +{V01 V05} + mov ecx, eax
mov edx, dword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x20]
...

+24 (+10.13%) : 174193.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesEightByteSize(int) (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 10, 10.04) int -> esi single-def -; V01 loc0 [V01,T08] ( 8, 8.54) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.ValueTuple`2[int,int][]> -; V02 loc1 [V02,T07] ( 6, 10 ) ref -> ebx class-hnd exact single-def <System.ValueTuple`2[int,int][]>
+; V00 arg0 [V00,T05] ( 10, 10.04) int -> [ebp-0x10] single-def +; V01 loc0 [V01,T07] ( 8, 10.50) ref -> edi class-hnd exact single-def <System.ValueTuple`2[int,int][]> +; V02 loc1 [V02,T08] ( 6, 10 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.ValueTuple`2[int,int][]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[System.ValueTuple`2[int,int]]> ; V04 loc3 [V04,T03] ( 11, 21 ) int -> ecx ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ValueTuple`2[int,int]> @@ -27,8 +27,8 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.ValueTuple`2[int,int]> ;* V17 tmp11 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp12 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp13 [V19,T11] ( 2, 1.50) byref -> esi "field V03._reference (fldOffset=0x0)" P-INDEP -; V20 tmp14 [V20,T10] ( 4, 3 ) int -> [ebp-0x10] spill-single-def "field V03._length (fldOffset=0x4)" P-INDEP
+; V19 tmp13 [V19,T11] ( 2, 2.48) byref -> esi "field V03._reference (fldOffset=0x0)" P-INDEP +; V20 tmp14 [V20,T09] ( 4, 4.96) int -> [ebp-0x14] spill-single-def "field V03._length (fldOffset=0x4)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "field V05.Item1 (fldOffset=0x0)" P-INDEP ;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "field V05.Item2 (fldOffset=0x4)" P-INDEP ; V23 tmp17 [V23,T06] ( 6, 12 ) int -> eax "field V06.Item1 (fldOffset=0x0)" P-INDEP @@ -39,12 +39,12 @@ ;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP ;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "field V16.Item1 (fldOffset=0x0)" P-INDEP ;* V30 tmp24 [V30 ] ( 0, 0 ) int -> zero-ref "field V16.Item2 (fldOffset=0x4)" P-INDEP
-; V31 tmp25 [V31,T02] ( 6, 24 ) int -> edi "index expr" -; V32 tmp26 [V32,T00] ( 6, 24 ) byref -> edi "BlockOp address local" -; V33 tmp27 [V33,T01] ( 6, 24 ) byref -> edi "BlockOp address local" -; V34 cse0 [V34,T09] ( 4, 4.54) int -> [ebp-0x14] hoist multi-def "CSE - moderate"
+; V31 tmp25 [V31,T02] ( 6, 24 ) int -> ebx "index expr" +; V32 tmp26 [V32,T00] ( 6, 24 ) byref -> ebx "BlockOp address local" +; V33 tmp27 [V33,T01] ( 6, 24 ) byref -> ebx "BlockOp address local" +; V34 cse0 [V34,T10] ( 4, 4.54) int -> [ebp-0x18] hoist multi-def "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M1960_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -52,7 +52,7 @@ G_M1960_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 12
+ sub esp, 16
mov esi, ecx ;; size=11 bbWeight=1 PerfScore 4.75 G_M1960_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz @@ -62,123 +62,127 @@ G_M1960_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ; gcrRegs +[eax] mov edi, eax ; gcrRegs +[edi]
- mov gword ptr [ebp-0x18], edi - ; GC ptr vars +{V01}
mov edx, esi mov ecx, 0xD1FFAB1E ; System.ValueTuple`2[int,int][] call CORINFO_HELP_NEWARR_1_VC
- mov ebx, eax - ; gcrRegs +[ebx]
+ mov gword ptr [ebp-0x1C], eax + ; GC ptr vars +{V02}
xor ecx, ecx test esi, esi
- jle SHORT G_M1960_IG08 - ;; size=37 bbWeight=1 PerfScore 6.00 -G_M1960_IG03: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M1960_IG06 + ;; size=35 bbWeight=1 PerfScore 5.75 +G_M1960_IG03: ; bbWeight=0.50, gcVars=00000100 {V02}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] cmp dword ptr [edi+0x04], esi
- jl SHORT G_M1960_IG06
+ jl SHORT G_M1960_IG07 + mov dword ptr [ebp-0x10], esi
lea edx, [esi-0x01]
- mov dword ptr [ebp-0x14], edx - ;; size=11 bbWeight=0.50 PerfScore 2.75 -G_M1960_IG04: ; bbWeight=3.96, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+ mov dword ptr [ebp-0x18], edx + ;; size=14 bbWeight=0.50 PerfScore 3.25 +G_M1960_IG04: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov eax, ecx neg eax mov edx, ecx
- mov edi, dword ptr [ebp-0x14] - sub edi, edx - cmp edi, dword ptr [ebx+0x04] - jae G_M1960_IG14 - lea edi, bword ptr [ebx+8*edi+0x08] - ; byrRegs +[edi] - mov dword ptr [edi], eax - mov dword ptr [edi+0x04], edx - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ; byrRegs -[edi] - lea edi, bword ptr [edi+8*edx+0x08] - ; gcrRegs -[edi] - ; byrRegs +[edi] - mov dword ptr [edi], eax - mov dword ptr [edi+0x04], edx
+ mov ebx, dword ptr [ebp-0x18] + sub ebx, edx + mov esi, gword ptr [ebp-0x1C] + ; gcrRegs +[esi] + cmp ebx, dword ptr [esi+0x04] + jae G_M1960_IG16 + lea ebx, bword ptr [esi+8*ebx+0x08] + ; byrRegs +[ebx] + mov dword ptr [ebx], eax + mov dword ptr [ebx+0x04], edx + lea ebx, bword ptr [edi+8*edx+0x08] + mov dword ptr [ebx], eax + mov dword ptr [ebx+0x04], edx
inc ecx
- cmp ecx, esi
+ mov ebx, dword ptr [ebp-0x10] + ; byrRegs -[ebx] + cmp ecx, ebx + mov dword ptr [ebp-0x10], ebx
jl SHORT G_M1960_IG04
- ;; size=46 bbWeight=3.96 PerfScore 57.42 -G_M1960_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - jmp SHORT G_M1960_IG08 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M1960_IG06: ; bbWeight=0.04, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi]
+ ;; size=52 bbWeight=3.96 PerfScore 65.34 +G_M1960_IG05: ; bbWeight=1.98, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx] + jmp SHORT G_M1960_IG09 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M1960_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] + mov ebx, gword ptr [ebp-0x1C] + ; gcrRegs +[ebx] + jmp SHORT G_M1960_IG09 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M1960_IG07: ; bbWeight=0.04, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx]
mov eax, ecx neg eax mov edx, ecx
- lea edi, [esi-0x01] - sub edi, edx - cmp edi, dword ptr [ebx+0x04] - jae SHORT G_M1960_IG14 - lea edi, bword ptr [ebx+8*edi+0x08] - ; byrRegs +[edi] - mov dword ptr [edi], eax - mov dword ptr [edi+0x04], edx - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ; byrRegs -[edi]
+ mov dword ptr [ebp-0x10], esi + lea ebx, [esi-0x01] + sub ebx, edx + mov esi, gword ptr [ebp-0x1C] + ; gcrRegs +[esi] + cmp ebx, dword ptr [esi+0x04] + jae SHORT G_M1960_IG16 + lea ebx, bword ptr [esi+8*ebx+0x08] + ; byrRegs +[ebx] + mov dword ptr [ebx], eax + mov dword ptr [ebx+0x04], edx
cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M1960_IG14 - lea edi, bword ptr [edi+8*edx+0x08] - ; gcrRegs -[edi] - ; byrRegs +[edi] - mov dword ptr [edi], eax - mov dword ptr [edi+0x04], edx
+ jae SHORT G_M1960_IG16 + lea ebx, bword ptr [edi+8*edx+0x08] + mov dword ptr [ebx], eax + mov dword ptr [ebx+0x04], edx
inc ecx
- cmp ecx, esi - jl SHORT G_M1960_IG06 - ;; size=47 bbWeight=0.04 PerfScore 0.72 -G_M1960_IG07: ; bbWeight=0.02, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref - ; byrRegs -[edi] - mov edi, gword ptr [ebp-0x18] - ; gcrRegs +[edi] - ;; size=3 bbWeight=0.02 PerfScore 0.02 -G_M1960_IG08: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x10] + ; byrRegs -[ebx] + cmp ecx, ebx + jl SHORT G_M1960_IG15 + ;; size=53 bbWeight=0.04 PerfScore 0.80 +G_M1960_IG08: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov ebx, esi + ; gcrRegs +[ebx] + ;; size=2 bbWeight=0.02 PerfScore 0.01 +G_M1960_IG09: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi]
lea esi, bword ptr [edi+0x08] ; byrRegs +[esi] mov eax, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x14], eax
cmp eax, 1
- jle SHORT G_M1960_IG11 - ;; size=14 bbWeight=1 PerfScore 4.75 -G_M1960_IG09: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ jle SHORT G_M1960_IG12 + ;; size=14 bbWeight=1.98 PerfScore 9.40 +G_M1960_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 1
- ja SHORT G_M1960_IG13
+ ja SHORT G_M1960_IG14
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x10]
+ mov eax, dword ptr [ebp-0x14]
;; size=24 bbWeight=0.50 PerfScore 2.88
-G_M1960_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M1960_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
mov ecx, esi ; byrRegs +[ecx] mov edx, eax call [<unknown method>] ; byrRegs -[ecx esi] ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M1960_IG11: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+G_M1960_IG12: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx ; gcrRegs +[ecx] mov edx, edi ; gcrRegs +[edx]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V02}
call [Xunit.Assert:Equal[System.ValueTuple`2[int,int]](System.ValueTuple`2[int,int][],System.ValueTuple`2[int,int][])] ; gcrRegs -[ecx edx ebx edi] ;; size=10 bbWeight=1 PerfScore 3.50
-G_M1960_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M1960_IG13: ; bbWeight=1, epilog, nogc, extend
...

+19 (+11.18%) : 101265.dasm - System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)

@@ -9,15 +9,15 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 7, 7.54) ref -> esi class-hnd single-def <int[]>
-; V01 arg1 [V01,T06] ( 3, 3 ) int -> edi single-def -; V02 arg2 [V02,T07] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Action> -; V03 loc0 [V03,T04] ( 5, 7 ) ref -> ebx class-hnd exact single-def <System.UnitTesting.CompositionAssert+CompositionErrorExpectation[]>
+; V01 arg1 [V01,T06] ( 3, 3.98) int -> edi single-def +; V02 arg2 [V02,T07] ( 1, 1.98) ref -> ebx class-hnd single-def <System.Action> +; V03 loc0 [V03,T04] ( 5, 7.98) ref -> [ebp-0x18] class-hnd exact spill-single-def <System.UnitTesting.CompositionAssert+CompositionErrorExpectation[]>
; V04 loc1 [V04,T01] ( 12, 21.04) int -> [ebp-0x10] ; V05 tmp0 [V05,T00] ( 8, 32 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.UnitTesting.CompositionAssert+CompositionErrorExpectation> ; V06 tmp1 [V06,T02] ( 4, 16 ) int -> edx "Inlining Arg" ; V07 cse0 [V07,T05] ( 5, 6.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" ;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M18995_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -25,29 +25,31 @@ G_M18995_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx ; gcrRegs +[esi] mov edi, edx
- ;; size=13 bbWeight=1 PerfScore 5.00 -G_M18995_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, gword ptr [ebp+0x08] + ; gcrRegs +[ebx] + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M18995_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [esi+0x04] mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation[] call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[eax]
- mov ebx, eax - ; gcrRegs +[ebx] - xor eax, eax
+ mov gword ptr [ebp-0x18], eax + ; GC ptr vars +{V03} + xor edx, edx + mov dword ptr [ebp-0x10], edx + mov ecx, dword ptr [eax+0x04] + mov dword ptr [ebp-0x14], ecx + test ecx, ecx + jle SHORT G_M18995_IG06 + ;; size=31 bbWeight=1 PerfScore 9.75 +G_M18995_IG03: ; bbWeight=0.50, gcVars=00000010 {V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- mov dword ptr [ebp-0x10], eax - mov edx, dword ptr [ebx+0x04] - mov dword ptr [ebp-0x14], edx - test edx, edx - jle SHORT G_M18995_IG07 - ;; size=30 bbWeight=1 PerfScore 9.00 -G_M18995_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [esi+0x04], edx - jl SHORT G_M18995_IG06
+ cmp dword ptr [esi+0x04], ecx + jl SHORT G_M18995_IG07
;; size=5 bbWeight=0.50 PerfScore 2.00 G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation @@ -57,7 +59,10 @@ G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 mov edx, dword ptr [esi+4*ecx+0x08] mov dword ptr [eax+0x14], edx mov byte ptr [eax+0x18], 1
- lea edx, bword ptr [ebx+4*ecx+0x08]
+ mov edx, gword ptr [ebp-0x18] + ; gcrRegs +[edx] + lea edx, bword ptr [edx+4*ecx+0x08] + ; gcrRegs -[edx]
; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] @@ -66,23 +71,34 @@ G_M18995_IG04: ; bbWeight=3.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 mov dword ptr [ebp-0x10], ecx cmp dword ptr [ebp-0x14], ecx jg SHORT G_M18995_IG04
- ;; size=42 bbWeight=3.96 PerfScore 49.50 -G_M18995_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=45 bbWeight=3.96 PerfScore 53.46 +G_M18995_IG05: ; bbWeight=1.98, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- jmp SHORT G_M18995_IG07 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M18995_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[esi]
+ mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax] + jmp SHORT G_M18995_IG09 + ;; size=5 bbWeight=1.98 PerfScore 5.94 +G_M18995_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax] + jmp SHORT G_M18995_IG09 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M18995_IG07: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] +[esi]
mov ecx, 0xD1FFAB1E ; System.UnitTesting.CompositionAssert+CompositionErrorExpectation call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] mov ecx, dword ptr [ebp-0x10] cmp ecx, dword ptr [esi+0x04]
- jae SHORT G_M18995_IG09
+ jae SHORT G_M18995_IG11
mov edx, dword ptr [esi+4*ecx+0x08] mov dword ptr [eax+0x14], edx mov byte ptr [eax+0x18], 1
- lea edx, bword ptr [ebx+4*ecx+0x08]
+ mov edx, gword ptr [ebp-0x18] + ; gcrRegs +[edx] + lea edx, bword ptr [edx+4*ecx+0x08] + ; gcrRegs -[edx]
; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] @@ -91,32 +107,37 @@ G_M18995_IG06: ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 mov edx, dword ptr [ebp-0x14] cmp edx, ecx mov dword ptr [ebp-0x10], ecx
- jg SHORT G_M18995_IG06 - ;; size=49 bbWeight=0.04 PerfScore 0.63 -G_M18995_IG07: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M18995_IG07 + ;; size=52 bbWeight=0.04 PerfScore 0.67 +G_M18995_IG08: ; bbWeight=0.02, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
- push gword ptr [ebp+0x08]
+ mov eax, gword ptr [ebp-0x18] + ; gcrRegs +[eax] + ;; size=3 bbWeight=0.02 PerfScore 0.02 +G_M18995_IG09: ; bbWeight=1.98, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref + push ebx
; gcr arg push 0
- mov ecx, ebx
+ mov ecx, eax
; gcrRegs +[ecx] mov edx, edi
+ ; GC ptr vars -{V03}
call [System.UnitTesting.CompositionAssert:ThrowsErrors(System.UnitTesting.CompositionAssert+CompositionErrorExpectation[],int,System.Action)]
- ; gcrRegs -[ecx ebx]
+ ; gcrRegs -[eax ecx ebx]
; gcr arg pop 1
- ;; size=13 bbWeight=1 PerfScore 4.50 -G_M18995_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1.98 PerfScore 8.91 +G_M18995_IG10: ; bbWeight=1.98, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi pop edi pop ebp ret 4
- ;; size=10 bbWeight=1 PerfScore 4.50 -G_M18995_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=10 bbWeight=1.98 PerfScore 8.91 +G_M18995_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 13, PerfScore 77.13, instruction count 60, allocated bytes for code 170 (MethodHash=c9d5b5cc) for method System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
+; Total bytes of code 189, prolog size 16, PerfScore 97.16, instruction count 67, allocated bytes for code 189 (MethodHash=c9d5b5cc) for method System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-21 (-7.61%) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)

@@ -8,21 +8,21 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 4, 7 ) ref -> [ebp-0x1C] class-hnd single-def <System.String> -; V01 loc0 [V01,T04] ( 8, 37.50) ref -> edi class-hnd exact single-def <uint[]> -; V02 loc1 [V02,T06] ( 6, 11 ) int -> [ebp-0x10] -; V03 loc2 [V03,T05] ( 7, 21 ) int -> [ebp-0x14] -; V04 loc3 [V04,T03] ( 11, 38 ) int -> ecx
+; V00 arg0 [V00,T08] ( 4, 7 ) ref -> [ebp-0x18] class-hnd single-def <System.String> +; V01 loc0 [V01,T04] ( 8, 43.42) ref -> edi class-hnd exact single-def <uint[]> +; V02 loc1 [V02,T06] ( 6, 28.76) int -> ebx +; V03 loc2 [V03,T07] ( 7, 21 ) int -> [ebp-0x10] +; V04 loc3 [V04,T03] ( 11, 43.92) int -> ecx
; V05 loc4 [V05,T00] ( 15, 85.32) int -> edx ; V06 loc5 [V06,T11] ( 3, 4.50) ref -> eax class-hnd exact <System.String> ; V07 tmp0 [V07,T01] ( 4, 64 ) int -> registers "Strict ordering of exceptions for Array store"
-; V08 tmp1 [V08,T08] ( 2, 8 ) int -> ebx "dup spill"
+; V08 tmp1 [V08,T05] ( 2, 31.68) int -> ebx "dup spill"
; V09 tmp2 [V09,T09] ( 3, 6 ) int -> edx "Inline return value spill temp" ;* V10 tmp3 [V10,T12] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V11 cse0 [V11,T02] ( 3, 47.52) int -> esi "CSE - aggressive"
-; V12 cse1 [V12,T10] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V12 cse1 [V12,T10] ( 3, 6 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M43253_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -30,7 +30,7 @@ G_M43253_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 12
mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -45,18 +45,18 @@ G_M43253_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor eax, eax ; gcrRegs -[eax] mov edx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x18], edx
+ mov dword ptr [ebp-0x14], edx
test edx, edx
- jle G_M43253_IG18
+ jle G_M43253_IG19
;; size=35 bbWeight=1 PerfScore 6.50 G_M43253_IG03: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], esi
+ mov gword ptr [ebp-0x18], esi
; GC ptr vars +{V00} movzx ecx, word ptr [esi+2*eax+0x08] cmp ecx, 65 jb SHORT G_M43253_IG05 ;; size=13 bbWeight=4 PerfScore 17.00
-G_M43253_IG04: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43253_IG04: ; bbWeight=2, gcVars=00000100 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi] cmp ecx, 90 ja SHORT G_M43253_IG05 @@ -73,9 +73,8 @@ G_M43253_IG06: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 cmp ecx, 45 je SHORT G_M43253_IG07 xor ebx, ebx
- mov dword ptr [ebp-0x10], ebx - jmp G_M43253_IG17 - ;; size=15 bbWeight=2 PerfScore 9.00
+ jmp SHORT G_M43253_IG18 + ;; size=9 bbWeight=2 PerfScore 7.00
G_M43253_IG07: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp eax, 28 jle SHORT G_M43253_IG08 @@ -83,9 +82,9 @@ G_M43253_IG07: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 jmp SHORT G_M43253_IG09 ;; size=12 bbWeight=2 PerfScore 7.00 G_M43253_IG08: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], eax
mov edx, eax
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x10]
;; size=8 bbWeight=2 PerfScore 4.50 G_M43253_IG09: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz test edx, edx @@ -96,23 +95,23 @@ G_M43253_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 jg SHORT G_M43253_IG14 ;; size=5 bbWeight=1 PerfScore 1.25 G_M43253_IG11: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x10], ebx
+ mov dword ptr [ebp-0x10], eax
;; size=3 bbWeight=0.50 PerfScore 0.50 G_M43253_IG12: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz lea esi, [edx-0x01] cmp esi, 29
- jae G_M43253_IG22 - imul ebx, dword ptr [edi+4*edx+0x04], 31 - add ebx, ecx - mov dword ptr [edi+4*edx+0x08], ebx
+ jae SHORT G_M43253_IG22 + imul eax, dword ptr [edi+4*edx+0x04], 31 + add eax, ecx + mov dword ptr [edi+4*edx+0x08], eax
mov edx, esi test edx, edx jg SHORT G_M43253_IG12
- ;; size=29 bbWeight=15.84 PerfScore 150.48 -G_M43253_IG13: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - mov ebx, dword ptr [ebp-0x10]
+ ;; size=25 bbWeight=15.84 PerfScore 150.48 +G_M43253_IG13: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x10]
jmp SHORT G_M43253_IG15
- ;; size=5 bbWeight=2 PerfScore 6.00
+ ;; size=5 bbWeight=7.92 PerfScore 23.76
G_M43253_IG14: ; bbWeight=0.16, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz lea esi, [edx-0x01] cmp esi, 29 @@ -126,35 +125,35 @@ G_M43253_IG14: ; bbWeight=0.16, gcrefRegs=00000080 {edi}, byrefRegs=00000 test edx, edx jg SHORT G_M43253_IG14 ;; size=29 bbWeight=0.16 PerfScore 1.72
-G_M43253_IG15: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M43253_IG15: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [edi+0x08], ecx inc ebx cmp ebx, 4
- jl SHORT G_M43253_IG20 - mov dword ptr [ebp-0x14], eax
+ jl SHORT G_M43253_IG18 + ;; size=9 bbWeight=7.92 PerfScore 19.80 +G_M43253_IG16: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz + mov dword ptr [ebp-0x10], eax
mov ecx, edi ; gcrRegs +[ecx] mov edx, ebx call [System.Management.Automation.ScriptBlock+SuspiciousContentChecker:CheckForMatches(uint[],int):System.String] ; gcrRegs -[ecx] +[eax] test eax, eax
- mov dword ptr [ebp-0x10], ebx
jne SHORT G_M43253_IG21
- ;; size=29 bbWeight=2 PerfScore 18.50 -G_M43253_IG16: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ;; size=17 bbWeight=2 PerfScore 11.50 +G_M43253_IG17: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x10]
;; size=3 bbWeight=1 PerfScore 1.00
-G_M43253_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M43253_IG18: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
inc eax
- mov edx, dword ptr [ebp-0x18]
+ mov edx, dword ptr [ebp-0x14]
cmp edx, eax
- mov ebx, dword ptr [ebp-0x10] - mov esi, gword ptr [ebp-0x1C]
+ mov esi, gword ptr [ebp-0x18]
; gcrRegs +[esi] jg G_M43253_IG03
- ;; size=18 bbWeight=4 PerfScore 18.00 -G_M43253_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=15 bbWeight=4 PerfScore 14.00 +G_M43253_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi] ; GC ptr vars -{V00} mov ecx, edi @@ -163,7 +162,7 @@ G_M43253_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {e call [System.Management.Automation.ScriptBlock+SuspiciousContentChecker:CheckForMatches(uint[],int):System.String] ; gcrRegs -[ecx edi] +[eax] ;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M43253_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M43253_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -171,15 +170,7 @@ G_M43253_IG19: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M43253_IG20: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[edi] - ; GC ptr vars +{V00 V07} - mov dword ptr [ebp-0x10], ebx - jmp SHORT G_M43253_IG17 - ;; size=5 bbWeight=1 PerfScore 3.00
G_M43253_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[edi] +[eax] - ; GC ptr vars -{V00 V07}
lea esp, [ebp-0x0C] pop ebx pop esi @@ -193,6 +184,6 @@ G_M43253_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 11, PerfScore 268.95, instruction count 105, allocated bytes for code 276 (MethodHash=ca42570a) for method System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
+; Total bytes of code 255, prolog size 11, PerfScore 290.51, instruction count 100, allocated bytes for code 255 (MethodHash=ca42570a) for method System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
; ============================================================

-19 (-6.03%) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)

@@ -8,27 +8,27 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 RetBuf [V00,T09] ( 3, 3 ) byref -> [ebp-0x20] single-def
+; V00 RetBuf [V00,T09] ( 3, 2 ) byref -> [ebp-0x20] single-def
; V01 arg0 [V01,T03] ( 4, 10 ) ref -> esi class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+cenv> ; V02 arg1 [V02,T07] ( 2, 8 ) ref -> ebx class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+env>
-; V03 arg2 [V03,T05] ( 6, 10.58) ref -> edi class-hnd single-def <FSharp.Compiler.TypedTree+DecisionTreeTarget[]>
+; V03 arg2 [V03,T04] ( 6, 10.58) ref -> edi class-hnd single-def <FSharp.Compiler.TypedTree+DecisionTreeTarget[]>
; V04 arg3 [V04,T08] ( 2, 8 ) ref -> [ebp+0x08] class-hnd single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr> ;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
-; V06 loc1 [V06,T04] ( 5, 11 ) ref -> [ebp-0x24] class-hnd exact spill-single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
+; V06 loc1 [V06,T06] ( 5, 10 ) ref -> [ebp-0x24] class-hnd exact spill-single-def <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]>
; V07 loc2 [V07,T00] ( 12, 41.08) int -> [ebp-0x10] ; V08 loc3 [V08 ] ( 4, 32 ) struct ( 8) [ebp-0x18] do-not-enreg[HS] hidden-struct-arg "Strict ordering of exceptions for Array store" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit>
-; V09 tmp1 [V09,T10] ( 2, 4 ) ref -> esi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V09 tmp1 [V09,T11] ( 2, 0 ) ref -> esi class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit>
-; V11 tmp3 [V11,T13] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V11 tmp3 [V11,T10] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field empty struct" <FSharp.Compiler.PostTypeCheckSemanticChecks+Limit> ; V13 tmp5 [V13,T01] ( 4, 32 ) int -> [ebp-0x18] do-not-enreg[H] hidden-struct-arg "field V08.scope@ (fldOffset=0x0)" P-DEP ; V14 tmp6 [V14,T02] ( 4, 32 ) int -> [ebp-0x14] do-not-enreg[H] hidden-struct-arg "field V08.flags@ (fldOffset=0x4)" P-DEP ;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "field V10.scope@ (fldOffset=0x0)" P-INDEP ;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "field V10.flags@ (fldOffset=0x4)" P-INDEP
-;* V17 tmp9 [V17,T11] ( 0, 0 ) int -> zero-ref single-def "field V12.scope@ (fldOffset=0x0)" P-INDEP -;* V18 tmp10 [V18,T12] ( 0, 0 ) int -> zero-ref single-def "field V12.flags@ (fldOffset=0x4)" P-INDEP -; V19 tmp11 [V19,T14] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V20 cse0 [V20,T06] ( 5, 10.50) int -> [ebp-0x1C] spill-single-def "CSE - aggressive"
+;* V17 tmp9 [V17,T13] ( 0, 0 ) int -> zero-ref single-def "field V12.scope@ (fldOffset=0x0)" P-INDEP +;* V18 tmp10 [V18,T14] ( 0, 0 ) int -> zero-ref single-def "field V12.flags@ (fldOffset=0x4)" P-INDEP +; V19 tmp11 [V19,T12] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V20 cse0 [V20,T05] ( 5, 10.50) int -> [ebp-0x1C] spill-single-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -48,9 +48,9 @@ G_M728_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov edi, gword ptr [ebp+0x0C] ; gcrRegs +[edi] ;; size=20 bbWeight=1 PerfScore 7.75
-G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
test edi, edi
- je G_M728_IG13
+ je G_M728_IG08
mov edx, dword ptr [edi+0x04] mov ecx, 0xD1FFAB1E ; FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[] call CORINFO_HELP_NEWARR_1_VC @@ -61,12 +61,12 @@ G_M728_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C8 {ebx mov ecx, dword ptr [eax+0x04] mov dword ptr [ebp-0x1C], ecx test ecx, ecx
- jle SHORT G_M728_IG06 - ;; size=36 bbWeight=1 PerfScore 10.00 -G_M728_IG03: ; bbWeight=0.50, gcVars=00000210 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jle G_M728_IG09 + ;; size=40 bbWeight=1 PerfScore 10.00 +G_M728_IG03: ; bbWeight=0.50, gcVars=00000240 {V00 V06}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] cmp dword ptr [edi+0x04], ecx
- jl SHORT G_M728_IG07
+ jl SHORT G_M728_IG05
;; size=5 bbWeight=0.50 PerfScore 2.00 G_M728_IG04: ; bbWeight=7.92, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz push ebx @@ -87,26 +87,15 @@ G_M728_IG04: ; bbWeight=7.92, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs mov dword ptr [eax+8*edx+0x0C], ecx inc edx cmp dword ptr [ebp-0x1C], edx
- jg SHORT G_M728_IG04 - ;; size=48 bbWeight=7.92 PerfScore 142.56 -G_M728_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax ebx esi edi] - mov eax, gword ptr [ebp-0x24] - ; gcrRegs +[eax] - jmp SHORT G_M728_IG08 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M728_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M728_IG09 + jmp SHORT G_M728_IG04 + ;; size=50 bbWeight=7.92 PerfScore 158.40 +G_M728_IG05: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x24] - ; gcrRegs +[eax] - jmp SHORT G_M728_IG08 - ;; size=5 bbWeight=0.50 PerfScore 1.50 -G_M728_IG07: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[ebx esi edi]
push ebx push gword ptr [ebp+0x08] cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M728_IG12
+ jae SHORT G_M728_IG07
mov dword ptr [ebp-0x10], edx push gword ptr [edi+4*edx+0x08] lea ecx, [ebp-0x18] @@ -124,53 +113,19 @@ G_M728_IG07: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs inc edx mov ecx, dword ptr [ebp-0x1C] cmp ecx, edx
- jg SHORT G_M728_IG11 - ;; size=55 bbWeight=0.08 PerfScore 1.70 -G_M728_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ jle SHORT G_M728_IG06 + jmp SHORT G_M728_IG05 + ;; size=57 bbWeight=0.08 PerfScore 1.86 +G_M728_IG06: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx esi edi]
- test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M728_IG14 - ;; size=9 bbWeight=1 PerfScore 4.00 -G_M728_IG09: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov esi, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[esi] - cmp dword ptr [D1FFAB1EH], 0 - jne SHORT G_M728_IG15 - ;; size=15 bbWeight=1 PerfScore 6.00 -G_M728_IG10: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - push 0 - push 0 - mov ecx, eax - ; gcrRegs +[ecx] - ; GC ptr vars -{V06} - call [Microsoft.FSharp.Primitives.Basics.List:ofArray[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit](FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit]] - ; gcrRegs -[ecx] - push eax - push 3 - push 3 - push 1 - mov edx, dword ptr [D1FFAB1EH] ; function address - push edx - mov edx, esi - ; gcrRegs +[edx] - mov ecx, bword ptr [ebp-0x20] - ; byrRegs +[ecx] - ; GC ptr vars -{V00} - call CORINFO_HELP_TAILCALL - ; gcrRegs -[eax edx esi] - ; byrRegs -[ecx] - ;; size=36 bbWeight=1 PerfScore 14.50 -G_M728_IG11: ; bbWeight=0.04, gcVars=00000210 {V00 V06}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[eax ebx esi edi] - ; GC ptr vars +{V00 V04 V06 V09} - jmp SHORT G_M728_IG07
+ jmp SHORT G_M728_IG09
;; size=2 bbWeight=0.04 PerfScore 0.08
-G_M728_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax ebx esi edi] - ; GC ptr vars -{V00 V04 V06 V09}
+G_M728_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] + ; GC ptr vars -{V00 V06}
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M728_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M728_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -190,26 +145,42 @@ G_M728_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=44 bbWeight=0 PerfScore 0.00
-G_M728_IG14: ; bbWeight=0, gcVars=00000210 {V00 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[eax] - ; GC ptr vars +{V00 V04 V06 V09}
+G_M728_IG09: ; bbWeight=0, gcVars=00000240 {V00 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars +{V00 V06 V09}
mov ecx, 0xD1FFAB1E mov edx, 0x1AA5 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcrRegs -[eax] - mov eax, gword ptr [ebp-0x24] - ; gcrRegs +[eax] - jmp SHORT G_M728_IG09 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M728_IG15: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[esi]
+ cmp dword ptr [D1FFAB1EH], 0 + je SHORT G_M728_IG10
call CORINFO_HELP_POLL_GC
- ; gcrRegs -[eax] - mov eax, gword ptr [ebp-0x24] - ; gcrRegs +[eax] - jmp SHORT G_M728_IG10 - ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=35 bbWeight=0 PerfScore 0.00 +G_M728_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + push 0 + push 0 + mov ecx, gword ptr [ebp-0x24] + ; gcrRegs +[ecx] + ; GC ptr vars -{V06 V09} + call [Microsoft.FSharp.Primitives.Basics.List:ofArray[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit](FSharp.Compiler.PostTypeCheckSemanticChecks+Limit[]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.PostTypeCheckSemanticChecks+Limit]] + ; gcrRegs -[ecx] +[eax] + push eax + push 3 + push 3 + push 1 + mov edx, dword ptr [D1FFAB1EH] ; function address + push edx + mov edx, esi + ; gcrRegs +[edx] + mov ecx, bword ptr [ebp-0x20] + ; byrRegs +[ecx] + ; GC ptr vars -{V00} + call CORINFO_HELP_TAILCALL + ; gcrRegs -[eax edx esi] + ; byrRegs -[ecx] + int3 + ;; size=38 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 9, PerfScore 193.09, instruction count 101, allocated bytes for code 315 (MethodHash=2f90fd27) for method FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
+; Total bytes of code 296, prolog size 9, PerfScore 180.09, instruction count 94, allocated bytes for code 296 (MethodHash=2f90fd27) for method FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
; ============================================================

-20 (-3.02%) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray1[int],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

@@ -8,53 +8,53 @@ ; 0 inlinees with PGO data; 14 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 6, 4 ) ref -> [ebp-0x2C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V00 this [V00,T12] ( 6, 4 ) ref -> [ebp-0x2C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
; V01 arg1 [V01,T16] ( 4, 3 ) ref -> [ebp-0x30] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]> ;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ; V05 arg5 [V05,T32] ( 2, 1.50) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V06 loc0 [V06,T18] ( 5, 4.50) ref -> [ebp-0x34] class-hnd exact spill-single-def <<unknown class>> -; V07 loc1 [V07,T09] ( 5, 7 ) int -> [ebp-0x10] spill-single-def
+; V06 loc0 [V06,T19] ( 5, 4.50) ref -> [ebp-0x34] class-hnd exact spill-single-def <<unknown class>> +; V07 loc1 [V07,T06] ( 5, 8.96) int -> [ebp-0x10] spill-single-def
;* V08 loc2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V09 loc3 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ; V10 loc4 [V10,T28] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> ; V11 loc5 [V11,T01] ( 13, 20.52) int -> ebx
-; V12 loc6 [V12,T12] ( 4, 6 ) ref -> [ebp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V12 loc6 [V12,T14] ( 4, 6 ) ref -> [ebp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V13 loc7 [V13,T29] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V14 tmp0 [V14,T05] ( 5, 8 ) int -> registers -; V15 tmp1 [V15,T08] ( 7, 7 ) ref -> esi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+; V14 tmp0 [V14,T08] ( 5, 8 ) int -> registers +; V15 tmp1 [V15,T11] ( 7, 7 ) ref -> esi class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V16 tmp2 [V16,T23] ( 5, 2.50) int -> [ebp-0x14] spill-single-def "Inline stloc first use temp" ;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V18 tmp4 [V18,T33] ( 2, 1 ) int -> edx "Inline return value spill temp" ; V19 tmp5 [V19,T22] ( 3, 3 ) int -> edx "Inlining Arg" ; V20 tmp6 [V20,T00] ( 14, 28 ) ref -> [ebp-0x3C] class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V21 tmp7 [V21,T03] ( 10, 10 ) int -> [ebp-0x18] "Inline stloc first use temp"
+; V21 tmp7 [V21,T04] ( 10, 10 ) int -> [ebp-0x18] "Inline stloc first use temp"
;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V23 tmp9 [V23,T11] ( 6, 6 ) int -> [ebp-0x1C] "Inline return value spill temp" -; V24 tmp10 [V24,T02] ( 6, 12 ) int -> registers "Inlining Arg"
+; V23 tmp9 [V23,T13] ( 6, 6 ) int -> [ebp-0x1C] "Inline return value spill temp" +; V24 tmp10 [V24,T02] ( 6, 12 ) int -> ecx "Inlining Arg"
;* V25 tmp11 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V26 tmp12 [V26 ] ( 3, 2.50) struct (12) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V26 tmp12 [V26 ] ( 3, 4.46) struct (12) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V27 tmp13 [V27,T25] ( 4, 2 ) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V28 tmp14 [V28,T13] ( 4, 6 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V28 tmp14 [V28,T05] ( 4, 9.92) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V29 tmp15 [V29 ] ( 0, 0 ) ref -> zero-ref single-def ; V30 tmp16 [V30,T30] ( 3, 1.50) ref -> edx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V31 tmp17 [V31,T20] ( 3, 3 ) byref -> eax single-def "Inlining Arg" -; V32 tmp18 [V32,T19] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V31 tmp17 [V31,T21] ( 3, 3 ) byref -> eax single-def "Inlining Arg" +; V32 tmp18 [V32,T20] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V33 tmp19 [V33 ] ( 0, 0 ) ref -> zero-ref single-def
-; V34 tmp20 [V34,T17] ( 6, 4.54) ref -> [ebp+0x14] single-def "field V02.array (fldOffset=0x0)" P-INDEP -; V35 tmp21 [V35,T04] ( 6, 8.75) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP -; V36 tmp22 [V36,T21] ( 3, 3 ) ref -> [ebp+0x0C] single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V34 tmp20 [V34,T18] ( 6, 4.54) ref -> [ebp+0x14] single-def "field V02.array (fldOffset=0x0)" P-INDEP +; V35 tmp21 [V35,T07] ( 6, 8.75) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP +; V36 tmp22 [V36,T17] ( 3, 4.96) ref -> [ebp+0x0C] single-def "field V04.array (fldOffset=0x0)" P-INDEP
; V37 tmp23 [V37,T24] ( 3, 2.50) ref -> ebx "field V09.array (fldOffset=0x0)" P-INDEP
-; V38 tmp24 [V38 ] ( 2, 1.50) ref -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V26.DefaultType (fldOffset=0x0)" P-DEP -; V39 tmp25 [V39 ] ( 2, 2 ) ref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V26._extensions (fldOffset=0x4)" P-DEP -; V40 tmp26 [V40 ] ( 1, 1 ) ubyte -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP -; V41 tmp27 [V41,T06] ( 4, 8 ) ref -> registers "argument with side effect" -; V42 tmp28 [V42,T07] ( 4, 8 ) int -> registers "argument with side effect"
+; V38 tmp24 [V38 ] ( 2, 2.48) ref -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V26.DefaultType (fldOffset=0x0)" P-DEP +; V39 tmp25 [V39 ] ( 2, 3.96) ref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V26._extensions (fldOffset=0x4)" P-DEP +; V40 tmp26 [V40 ] ( 1, 1.98) ubyte -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP +; V41 tmp27 [V41,T09] ( 4, 8 ) ref -> ecx "argument with side effect" +; V42 tmp28 [V42,T10] ( 4, 8 ) int -> registers "argument with side effect"
; V43 tmp29 [V43,T26] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V44 tmp30 [V44,T27] ( 2, 2 ) int -> ebx "argument with side effect"
-; V45 tmp31 [V45,T14] ( 3, 6 ) ref -> ecx single-def "argument with side effect" -; V46 cse0 [V46,T15] ( 3, 5.94) ref -> edi "CSE - conservative"
+; V45 tmp31 [V45,T03] ( 3, 11.88) ref -> ecx single-def "argument with side effect" +; V46 cse0 [V46,T15] ( 3, 5.94) ref -> ecx "CSE - conservative"
; V47 cse1 [V47,T31] ( 3, 1.50) ref -> edx "CSE - conservative" ; V48 cse2 [V48,T34] ( 3, 0.06) ref -> ecx "CSE - conservative" ; @@ -78,7 +78,7 @@ G_M15034_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, gword ptr [ebp+0x10] ; gcrRegs +[esi] ;; size=29 bbWeight=1 PerfScore 10.75
-G_M15034_IG02: ; bbWeight=1, gcVars=0000000000010400 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG02: ; bbWeight=1, gcVars=0000000000011000 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -94,7 +94,7 @@ G_M15034_IG02: ; bbWeight=1, gcVars=0000000000010400 {V00 V01}, gcrefRegs cmp gword ptr [ebp+0x08], 0 je SHORT G_M15034_IG06 ;; size=33 bbWeight=1 PerfScore 16.25
-G_M15034_IG03: ; bbWeight=0.50, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG03: ; bbWeight=0.50, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx esi] mov esi, gword ptr [eax+0x04] ; gcrRegs +[esi] @@ -133,27 +133,27 @@ G_M15034_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcr arg pop 1 mov ebx, dword ptr [ebp-0x14] mov dword ptr [esi+0x08], ebx
- jmp G_M15034_IG28
+ jmp G_M15034_IG26
;; size=29 bbWeight=0.50 PerfScore 5.25 G_M15034_IG05: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz jmp SHORT G_M15034_IG04 ;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M15034_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M15034_IG06: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[eax] xor ebx, ebx cmp dword ptr [esi+0x04], 0
- jle SHORT G_M15034_IG12 - ;; size=8 bbWeight=0.50 PerfScore 2.12 -G_M15034_IG07: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M15034_IG26 + ;; size=12 bbWeight=0.50 PerfScore 2.12 +G_M15034_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + cmp gword ptr [ebp+0x14], 0 + je G_M15034_IG16 + mov eax, dword ptr [esi+0x04]
mov edx, gword ptr [ebp+0x14] ; gcrRegs +[edx]
- test edx, edx - je G_M15034_IG18 - mov eax, dword ptr [esi+0x04] - ; gcrRegs -[eax]
cmp eax, dword ptr [edx+0x04]
- jg SHORT G_M15034_IG11 - ;; size=19 bbWeight=0.25 PerfScore 2.06
+ jg SHORT G_M15034_IG10 + ;; size=21 bbWeight=0.25 PerfScore 2.50
G_M15034_IG08: ; bbWeight=3.96, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz mov eax, gword ptr [esi+4*ebx+0x08] ; gcrRegs +[eax] @@ -163,155 +163,140 @@ G_M15034_IG08: ; bbWeight=3.96, gcrefRegs=00000044 {edx esi}, byrefRegs=0 mov edx, dword ptr [edx+4*ebx+0x08] ; gcrRegs -[edx] cmp edx, dword ptr [ebp-0x10]
- jne SHORT G_M15034_IG16
+ jne SHORT G_M15034_IG14
;; size=19 bbWeight=3.96 PerfScore 35.64
-G_M15034_IG09: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG09: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] mov edx, gword ptr [ebp-0x34] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x04]
- mov ecx, dword ptr [edx+0x08] - inc ecx - mov edi, gword ptr [edx+0x04] - ; gcrRegs +[edi] - cmp dword ptr [edi+0x04], ecx - jge SHORT G_M15034_IG10 - mov edi, dword ptr [edi+0x04] - ; gcrRegs -[edi] - add edi, edi - cmp edi, ecx
+ mov edi, dword ptr [edx+0x08] + inc edi + mov ecx, gword ptr [edx+0x04] + ; gcrRegs +[ecx] + cmp dword ptr [ecx+0x04], edi
jge SHORT G_M15034_IG13
- mov dword ptr [ebp-0x18], ecx - mov edi, ecx - jmp SHORT G_M15034_IG14
+ mov ecx, dword ptr [ecx+0x04] + ; gcrRegs -[ecx] + add ecx, ecx + cmp ecx, edi + jge SHORT G_M15034_IG11 + mov ecx, edi + mov dword ptr [ebp-0x1C], ecx + jmp SHORT G_M15034_IG12
;; size=34 bbWeight=1.98 PerfScore 35.64
-G_M15034_IG10: ; bbWeight=0.99, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x18], ecx - jmp SHORT G_M15034_IG15 - ;; size=5 bbWeight=0.99 PerfScore 2.97 -G_M15034_IG11: ; bbWeight=0.12, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15034_IG10: ; bbWeight=0.12, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V12}
- mov eax, gword ptr [ebp-0x34] - ; gcrRegs +[eax] - jmp SHORT G_M15034_IG18
+ mov gword ptr [ebp+0x14], edx + jmp SHORT G_M15034_IG16
;; size=5 bbWeight=0.12 PerfScore 0.38
-G_M15034_IG12: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edx esi] - jmp G_M15034_IG28 - ;; size=5 bbWeight=0.25 PerfScore 0.50 -G_M15034_IG13: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] +[edx esi] - ; GC ptr vars +{V12} - mov dword ptr [ebp-0x18], ecx
+G_M15034_IG11: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V12 V14} + mov dword ptr [ebp-0x1C], ecx
;; size=3 bbWeight=1.98 PerfScore 1.98
-G_M15034_IG14: ; bbWeight=1.98, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M15034_IG12: ; bbWeight=1.98, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
push 0xD1FFAB1E mov gword ptr [ebp-0x3C], edx ; GC ptr vars +{V20} lea ecx, bword ptr [edx+0x04] ; byrRegs +[ecx]
- mov edx, edi
+ mov edx, dword ptr [ebp-0x1C]
; gcrRegs -[edx]
+ ; GC ptr vars -{V14}
call [System.Array:Resize[System.__Canon](byref,int)] ; byrRegs -[ecx] mov edx, gword ptr [ebp-0x3C] ; gcrRegs +[edx]
- ;; size=22 bbWeight=1.98 PerfScore 13.37 -G_M15034_IG15: ; bbWeight=1.98, gcVars=0000000000051400 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=23 bbWeight=1.98 PerfScore 14.85 +G_M15034_IG13: ; bbWeight=1.98, gcVars=0000000000095000 {V00 V01 V06 V12}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V20}
- mov edi, gword ptr [edx+0x04] - ; gcrRegs +[edi]
+ mov ecx, gword ptr [edx+0x04] + ; gcrRegs +[ecx]
mov gword ptr [ebp-0x3C], edx ; GC ptr vars +{V20} mov eax, dword ptr [edx+0x08] push gword ptr [ebp-0x38] ; gcr arg push 0
- mov ecx, edi - ; gcrRegs +[ecx]
mov edx, eax ; gcrRegs -[edx] ; GC ptr vars -{V12} +{V00} call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx]
; gcr arg pop 1
- mov edi, gword ptr [ebp-0x3C] - ; gcrRegs +[edi] - mov eax, dword ptr [ebp-0x18] - mov dword ptr [edi+0x08], eax - ;; size=30 bbWeight=1.98 PerfScore 20.79 -G_M15034_IG16: ; bbWeight=3.96, gcVars=0000000000050400 {V00 V01 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edi]
+ mov eax, gword ptr [ebp-0x3C] + ; gcrRegs +[eax] + mov dword ptr [eax+0x08], edi + ;; size=25 bbWeight=1.98 PerfScore 18.31 +G_M15034_IG14: ; bbWeight=3.96, gcVars=0000000000091000 {V00 V01 V06}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
...

+10 (+7.35%) : 31264.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray1[int],byref):ubyte (FullOpts)

@@ -8,18 +8,18 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 2.50) int -> ecx single-def -; V01 arg1 [V01,T03] ( 4, 3 ) int -> edx single-def
+; V00 arg0 [V00,T07] ( 3, 2.50) int -> ecx single-def +; V01 arg1 [V01,T01] ( 4, 6.46) int -> edx single-def
; V02 arg2 [V02,T08] ( 1, 1 ) ubyte -> [ebp+0x18] single-def ; V03 arg3 [V03,T10] ( 1, 0.50) int -> [ebp+0x14] single-def ;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V05 arg5 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[int]>
-; V06 arg6 [V06,T07] ( 2, 1.50) byref -> [ebp+0x08] single-def -; V07 loc0 [V07,T00] ( 14, 17.77) int -> ecx -; V08 tmp0 [V08,T01] ( 5, 8 ) int -> esi
+; V06 arg6 [V06,T05] ( 2, 4.96) byref -> eax single-def +; V07 loc0 [V07,T00] ( 14, 21.23) int -> ecx +; V08 tmp0 [V08,T02] ( 5, 8 ) int -> esi
; V09 tmp1 [V09,T09] ( 1, 0.50) ref -> [ebp+0x10] single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T05] ( 6, 4.54) ref -> eax single-def "field V05.array (fldOffset=0x0)" P-INDEP -; V11 cse0 [V11,T02] ( 5, 5.25) int -> ebx "CSE - aggressive"
+; V10 tmp2 [V10,T06] ( 6, 4.54) ref -> [ebp+0x0C] single-def "field V05.array (fldOffset=0x0)" P-INDEP +; V11 cse0 [V11,T03] ( 5, 5.25) int -> ebx "CSE - aggressive"
; V12 cse1 [V12,T04] ( 4, 5 ) int -> edi "CSE - aggressive" ; ; Lcl frame size = 0 @@ -30,105 +30,108 @@ G_M47144_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov eax, gword ptr [ebp+0x0C] - ; gcrRegs +[eax]
+ mov eax, bword ptr [ebp+0x08] + ; byrRegs +[eax] + mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi]
;; size=12 bbWeight=1 PerfScore 6.25
-G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000040 {esi}, byref, isz
+G_M47144_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
xor edi, edi
- mov bword ptr [ebp+0x08], esi - mov dword ptr [esi], edi
+ mov dword ptr [eax], edi
cmp byte ptr [ebp+0x18], 0
- je SHORT G_M47144_IG13 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[esi]
+ je SHORT G_M47144_IG12 + ;; size=10 bbWeight=1 PerfScore 4.25 +G_M47144_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
mov edi, dword ptr [ebp+0x14] dec edi cmp ecx, edi
- jne SHORT G_M47144_IG13
+ jne SHORT G_M47144_IG12
lea ecx, [edx+0x01] mov ebx, gword ptr [ebp+0x10] ; gcrRegs +[ebx] mov ebx, dword ptr [ebx+0x04] ; gcrRegs -[ebx] cmp ebx, ecx
- jle SHORT G_M47144_IG11
+ jle SHORT G_M47144_IG10
;; size=21 bbWeight=0.50 PerfScore 3.62
-G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - test eax, eax - je SHORT G_M47144_IG07
+G_M47144_IG04: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + test esi, esi + je SHORT G_M47144_IG06
test ecx, ecx
- jl SHORT G_M47144_IG07 - cmp dword ptr [eax+0x04], ebx - jl SHORT G_M47144_IG07
+ jl SHORT G_M47144_IG06 + cmp dword ptr [esi+0x04], ebx + jl SHORT G_M47144_IG06
;; size=13 bbWeight=0.25 PerfScore 1.62
-G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov esi, dword ptr [eax+4*ecx+0x08]
+G_M47144_IG05: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + mov gword ptr [ebp+0x0C], esi + mov esi, dword ptr [esi+4*ecx+0x08] + ; gcrRegs -[esi]
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx cmp ebx, ecx
+ mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi]
jg SHORT G_M47144_IG05
- ;; size=13 bbWeight=3.96 PerfScore 18.81 -G_M47144_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - jmp SHORT G_M47144_IG11 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M47144_IG07: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[eax] - test eax, eax - jne SHORT G_M47144_IG09 - ;; size=4 bbWeight=0.04 PerfScore 0.05 -G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - mov esi, ecx
jmp SHORT G_M47144_IG10
+ ;; size=21 bbWeight=3.96 PerfScore 34.65 +G_M47144_IG06: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz + mov gword ptr [ebp+0x0C], esi + test esi, esi + jne SHORT G_M47144_IG08 + ;; size=7 bbWeight=0.04 PerfScore 0.09 +G_M47144_IG07: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz + ; gcrRegs -[esi] + mov esi, ecx + jmp SHORT G_M47144_IG09
;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M47144_IG09: ; bbWeight=0.02, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - cmp ecx, dword ptr [eax+0x04] - jae SHORT G_M47144_IG15 - mov esi, dword ptr [eax+4*ecx+0x08] - ;; size=9 bbWeight=0.02 PerfScore 0.12 -G_M47144_IG10: ; bbWeight=0.04, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M47144_IG08: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz + mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi] + cmp ecx, dword ptr [esi+0x04] + jae SHORT G_M47144_IG14 + mov gword ptr [ebp+0x0C], esi + mov esi, dword ptr [esi+4*ecx+0x08] + ; gcrRegs -[esi] + ;; size=15 bbWeight=0.02 PerfScore 0.16 +G_M47144_IG09: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp esi, edi
- jne SHORT G_M47144_IG11
+ jne SHORT G_M47144_IG10
inc ecx cmp ebx, ecx
- jg SHORT G_M47144_IG07 - ;; size=9 bbWeight=0.04 PerfScore 0.11 -G_M47144_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov eax, ecx - sub eax, edx - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov dword ptr [esi], eax
+ mov esi, gword ptr [ebp+0x0C] + ; gcrRegs +[esi] + jg SHORT G_M47144_IG06 + ;; size=12 bbWeight=0.04 PerfScore 0.15 +G_M47144_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref + ; gcrRegs -[esi] + sub ecx, edx + mov dword ptr [eax], ecx
mov eax, 1
- ;; size=14 bbWeight=0.50 PerfScore 1.38 -G_M47144_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ; byrRegs -[eax] + ;; size=9 bbWeight=3.96 PerfScore 5.94 +G_M47144_IG11: ; bbWeight=3.96, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 20
- ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M47144_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[esi]
+ ;; size=7 bbWeight=3.96 PerfScore 15.84 +G_M47144_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47144_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M47144_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 20 ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M47144_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47144_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 42.38, instruction count 64, allocated bytes for code 136 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
+; Total bytes of code 146, prolog size 12, PerfScore 74.75, instruction count 67, allocated bytes for code 146 (MethodHash=af4c47d7) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
; ============================================================

+27 (+8.79%) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18]
;* V10 tmp0 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp1 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp2 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V14 cse0 [V14,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -33,7 +33,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -65,166 +65,172 @@ G_M30277_IG05: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M30277_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG21
+ je G_M30277_IG20
;; size=27 bbWeight=1 PerfScore 8.75 G_M30277_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG20
+ jle G_M30277_IG19
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG08: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG10
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG09: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG10 inc ebx cmp ebx, esi jl SHORT G_M30277_IG09
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG11 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG19
+ jg SHORT G_M30277_IG18
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG26
+ je G_M30277_IG25
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG18
+ jl SHORT G_M30277_IG17
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG22 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG21 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG22
+ jle SHORT G_M30277_IG21
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG14: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG16
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG15: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG16 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG15
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG16: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG14
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG25 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG17: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG26
+ jmp SHORT G_M30277_IG25
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG08 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG20: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG08 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG19: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG20: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG11 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG22: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG21: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG28 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG27 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG24 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG23: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG24
+ jle SHORT G_M30277_IG23 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG22: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG23
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG23 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG24: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG22 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG23: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG26
+ je SHORT G_M30277_IG25
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG22
+ jge SHORT G_M30277_IG21
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG25: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG24: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG26: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG25: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} ...

+27 (+9.22%) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)

@@ -7,20 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 7, 12 ) ref -> [ebp-0x1C] this class-hnd single-def <System.String>
+; V00 this [V00,T08] ( 7, 14.96) ref -> [ebp-0x24] this class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 6, 35 ) int -> edi single-def ; V02 arg2 [V02,T02] ( 10, 49 ) int -> esi single-def ; V03 arg3 [V03,T11] ( 2, 2 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T07] ( 15, 19.54) int -> [ebp-0x10] -; V05 loc1 [V05,T04] ( 11, 23.25) int -> edx
+; V04 loc0 [V04,T05] ( 15, 22.50) int -> [ebp-0x10] +; V05 loc1 [V05,T04] ( 11, 26.21) int -> edx
; V06 loc2 [V06,T01] ( 6, 72 ) int -> ebx
-; V07 loc3 [V07,T06] ( 2, 20 ) ushort -> ecx
+; V07 loc3 [V07,T07] ( 2, 20 ) ushort -> [ebp-0x14] spill-single-def
; V08 loc4 [V08,T00] ( 12, 72 ) int -> ebx
-; V09 loc5 [V09,T05] ( 4, 20 ) ushort -> ecx -; V10 cse0 [V10,T10] ( 3, 2.50) int -> [ebp-0x14] spill-single-def "CSE - moderate" -; V11 cse1 [V11,T09] ( 6, 6.79) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V09 loc5 [V09,T06] ( 4, 20 ) ushort -> [ebp-0x18] +; V10 cse0 [V10,T10] ( 3, 2.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate" +; V11 cse1 [V11,T09] ( 6, 6.79) int -> [ebp-0x20] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -28,7 +28,7 @@ G_M30277_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov ebx, ecx ; gcrRegs +[ebx] mov edi, edx @@ -44,166 +44,172 @@ G_M30277_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 setg cl call [<unknown method>] mov ecx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x18], ecx
+ mov dword ptr [ebp-0x20], ecx
lea edx, [ecx-0x01]
- mov dword ptr [ebp-0x14], edx
+ mov dword ptr [ebp-0x1C], edx
mov dword ptr [ebp-0x10], edx xor edx, edx test byte ptr [ebp+0x08], 1
- je G_M30277_IG17
+ je G_M30277_IG16
;; size=53 bbWeight=1 PerfScore 17.75 G_M30277_IG03: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref xor edx, edx test ecx, ecx
- jle G_M30277_IG16
+ jle G_M30277_IG15
;; size=10 bbWeight=0.50 PerfScore 0.75 G_M30277_IG04: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} movzx ecx, word ptr [ebx+2*edx+0x08]
+ mov dword ptr [ebp-0x14], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG06
- ;; size=14 bbWeight=4 PerfScore 18.00
+ ;; size=17 bbWeight=4 PerfScore 22.00
G_M30277_IG05: ; bbWeight=16, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x14] + cmp ecx, eax
je SHORT G_M30277_IG06 inc ebx cmp ebx, esi jl SHORT G_M30277_IG05
- ;; size=13 bbWeight=16 PerfScore 76.00
+ ;; size=16 bbWeight=16 PerfScore 92.00
G_M30277_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi je SHORT G_M30277_IG07 inc edx
- mov ecx, dword ptr [ebp-0x18]
+ mov ecx, dword ptr [ebp-0x20]
cmp ecx, edx
- jg SHORT G_M30277_IG15
+ jg SHORT G_M30277_IG14
;; size=12 bbWeight=4 PerfScore 15.00 G_M30277_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref test byte ptr [ebp+0x08], 2
- je G_M30277_IG22
+ je G_M30277_IG21
;; size=10 bbWeight=1 PerfScore 3.00 G_M30277_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x14]
+ mov eax, dword ptr [ebp-0x1C]
cmp eax, edx
- jl SHORT G_M30277_IG14
+ jl SHORT G_M30277_IG13
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M30277_IG09: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ebx, eax or ebx, edx
- jl SHORT G_M30277_IG18 - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M30277_IG17 + mov ecx, dword ptr [ebp-0x20]
cmp ecx, eax
- jle SHORT G_M30277_IG18
+ jle SHORT G_M30277_IG17
;; size=13 bbWeight=0.25 PerfScore 0.94 G_M30277_IG10: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi jle SHORT G_M30277_IG12
- ;; size=17 bbWeight=3.96 PerfScore 21.78
+ ;; size=20 bbWeight=3.96 PerfScore 25.74
G_M30277_IG11: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx
+ movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax
je SHORT G_M30277_IG12 inc ebx cmp ebx, esi
+ mov dword ptr [ebp-0x18], eax
jl SHORT G_M30277_IG11
- ;; size=13 bbWeight=15.84 PerfScore 75.24
+ ;; size=19 bbWeight=15.84 PerfScore 106.92
G_M30277_IG12: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp ebx, esi
- je SHORT G_M30277_IG22
+ je SHORT G_M30277_IG21
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx jge SHORT G_M30277_IG10
- ;; size=12 bbWeight=3.96 PerfScore 14.85 -G_M30277_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG22 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M30277_IG14: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M30277_IG21 + ;; size=17 bbWeight=3.96 PerfScore 26.73 +G_M30277_IG13: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x10], eax
- jmp SHORT G_M30277_IG22
+ jmp SHORT G_M30277_IG21
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG15: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ebx, gword ptr [ebp-0x1C]
+G_M30277_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx]
- jmp SHORT G_M30277_IG04 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M30277_IG16: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M30277_IG04 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M30277_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG07 ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M30277_IG17: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M30277_IG16: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; GC ptr vars -{V00}
- mov gword ptr [ebp-0x1C], ebx
+ mov gword ptr [ebp-0x24], ebx
; GC ptr vars +{V00} jmp SHORT G_M30277_IG07 ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M30277_IG18: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30277_IG17: ; bbWeight=0.04, gcVars=00000100 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
- cmp eax, dword ptr [ebp-0x18] - jae SHORT G_M30277_IG24 - mov ebx, gword ptr [ebp-0x1C]
+ cmp eax, dword ptr [ebp-0x20] + jae SHORT G_M30277_IG23 + mov ebx, gword ptr [ebp-0x24]
; gcrRegs +[ebx] mov dword ptr [ebp-0x10], eax movzx ecx, word ptr [ebx+2*eax+0x08]
+ mov dword ptr [ebp-0x18], ecx
xor ebx, ebx ; gcrRegs -[ebx] test esi, esi
- jle SHORT G_M30277_IG20 - ;; size=22 bbWeight=0.04 PerfScore 0.34 -G_M30277_IG19: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - movzx eax, word ptr [edi+2*ebx] - cmp eax, ecx - je SHORT G_M30277_IG20
+ jle SHORT G_M30277_IG19 + ;; size=25 bbWeight=0.04 PerfScore 0.38 +G_M30277_IG18: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + movzx ecx, word ptr [edi+2*ebx] + mov eax, dword ptr [ebp-0x18] + cmp ecx, eax + je SHORT G_M30277_IG19
inc ebx cmp ebx, esi
- jl SHORT G_M30277_IG19 - ;; size=13 bbWeight=0.16 PerfScore 0.76 -G_M30277_IG20: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x18], eax + jl SHORT G_M30277_IG18 + ;; size=19 bbWeight=0.16 PerfScore 1.08 +G_M30277_IG19: ; bbWeight=0.04, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, esi
- je SHORT G_M30277_IG22
+ je SHORT G_M30277_IG21
mov eax, dword ptr [ebp-0x10] dec eax cmp eax, edx
- jge SHORT G_M30277_IG18
+ jge SHORT G_M30277_IG17
;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M30277_IG21: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG20: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x10], eax ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M30277_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30277_IG21: ; bbWeight=3.96, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx] ; GC ptr vars -{V00} call [System.String:CreateTrimmedString(int,int):System.String:this] ; gcrRegs -[ecx] +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.00 -G_M30277_IG23: ; bbWeight=1, epilog, nogc, extend
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 196 45 68 83 -668 +906
benchmarks.run_pgo.windows.x86.checked.mch 185 38 86 61 -413 +1,124
benchmarks.run_tiered.windows.x86.checked.mch 187 43 67 77 -717 +851
coreclr_tests.run.windows.x86.checked.mch 4,234 765 1,320 2,149 -12,759 +21,902
libraries.crossgen2.windows.x86.checked.mch 499 115 163 221 -1,548 +2,264
libraries.pmi.windows.x86.checked.mch 625 172 206 247 -2,543 +3,485
libraries_tests.run.windows.x86.Release.mch 237 57 91 89 -571 +1,013
librariestestsnotieredcompilation.run.windows.x86.Release.mch 885 280 322 283 -4,820 +6,161
realworld.run.windows.x86.checked.mch 161 36 61 64 -964 +1,183
7,209 1,551 2,384 3,274 -25,003 +38,889

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 38,538 6 38,532 349 (0.90%) 357 (0.92%)
benchmarks.run_pgo.windows.x86.checked.mch 82,769 41,585 41,184 2,660 (3.11%) 2,664 (3.12%)
benchmarks.run_tiered.windows.x86.checked.mch 73,348 45,417 27,931 274 (0.37%) 281 (0.38%)
coreclr_tests.run.windows.x86.checked.mch 406,111 186,921 219,190 490 (0.12%) 511 (0.13%)
libraries.crossgen2.windows.x86.checked.mch 272,456 15 272,441 524 (0.19%) 566 (0.21%)
libraries.pmi.windows.x86.checked.mch 318,787 6 318,781 1,755 (0.55%) 1,787 (0.56%)
libraries_tests.run.windows.x86.Release.mch 49,131 31,248 17,883 483 (0.97%) 494 (1.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 339,970 22,425 317,545 4,067 (1.18%) 4,091 (1.19%)
realworld.run.windows.x86.checked.mch 37,438 3 37,435 417 (1.10%) 422 (1.11%)
1,618,548 327,626 1,290,922 11,019 (0.68%) 11,173 (0.69%)

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: 11103861 (overridden on cmd)
Total bytes of diff: 11104099 (overridden on cmd)
Total bytes of delta: 238 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          82 : 34105.dasm (3.15 % of base)
          82 : 31570.dasm (3.16 % of base)
          45 : 18370.dasm (1.58 % of base)
          45 : 28723.dasm (1.70 % of base)
          45 : 4424.dasm (1.58 % of base)
          39 : 26882.dasm (1.50 % of base)
          31 : 14453.dasm (4.72 % of base)
          31 : 43.dasm (4.72 % of base)
          27 : 524.dasm (8.79 % of base)
          27 : 14935.dasm (8.79 % of base)
          24 : 7554.dasm (2.99 % of base)
          24 : 35434.dasm (2.99 % of base)
          22 : 4232.dasm (4.73 % of base)
          22 : 35343.dasm (4.73 % of base)
          16 : 28848.dasm (2.64 % of base)
          16 : 32704.dasm (2.64 % of base)
          16 : 4810.dasm (1.46 % of base)
          16 : 17481.dasm (1.46 % of base)
          15 : 34704.dasm (1.56 % of base)
          15 : 6820.dasm (6.94 % of base)

Top file improvements (bytes):
         -65 : 23540.dasm (-4.25 % of base)
         -46 : 7776.dasm (-1.15 % of base)
         -46 : 35172.dasm (-1.15 % of base)
         -46 : 35544.dasm (-1.19 % of base)
         -41 : 29035.dasm (-0.92 % of base)
         -31 : 14457.dasm (-1.83 % of base)
         -31 : 47.dasm (-1.83 % of base)
         -25 : 10185.dasm (-1.18 % of base)
         -25 : 18902.dasm (-1.18 % of base)
         -23 : 26880.dasm (-2.13 % of base)
         -20 : 11067.dasm (-0.78 % of base)
         -20 : 22114.dasm (-0.78 % of base)
         -19 : 37587.dasm (-1.66 % of base)
         -19 : 37916.dasm (-1.66 % of base)
         -18 : 4180.dasm (-1.38 % of base)
         -18 : 16837.dasm (-1.38 % of base)
         -17 : 24521.dasm (-4.75 % of base)
         -14 : 23623.dasm (-1.47 % of base)
         -14 : 24407.dasm (-1.47 % of base)
         -13 : 19037.dasm (-0.58 % of base)

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

Top method regressions (bytes):
          82 (3.15 % of base) : 34105.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)
          82 (3.16 % of base) : 31570.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)
          45 (1.70 % of base) : 28723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          45 (1.58 % of base) : 18370.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
          45 (1.58 % of base) : 4424.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
          39 (1.50 % of base) : 26882.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
          31 (4.72 % of base) : 14453.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          27 (8.79 % of base) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          27 (8.79 % of base) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          24 (2.99 % of base) : 7554.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          24 (2.99 % of base) : 35434.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          22 (4.73 % of base) : 4232.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
          22 (4.73 % of base) : 35343.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
          16 (2.64 % of base) : 28848.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          16 (2.64 % of base) : 32704.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          16 (1.46 % of base) : 4810.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (FullOpts)
          16 (1.46 % of base) : 17481.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (FullOpts)
          15 (1.56 % of base) : 34704.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
          15 (6.94 % of base) : 6820.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)

Top method improvements (bytes):
         -65 (-4.25 % of base) : 23540.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
         -46 (-1.15 % of base) : 7776.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -46 (-1.15 % of base) : 35172.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -46 (-1.19 % of base) : 35544.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -41 (-0.92 % of base) : 29035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -31 (-1.83 % of base) : 14457.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -25 (-1.18 % of base) : 10185.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -25 (-1.18 % of base) : 18902.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -23 (-2.13 % of base) : 26880.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
         -20 (-0.78 % of base) : 11067.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
         -20 (-0.78 % of base) : 22114.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
         -19 (-1.66 % of base) : 37587.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -19 (-1.66 % of base) : 37916.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -18 (-1.38 % of base) : 4180.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -18 (-1.38 % of base) : 16837.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -17 (-4.75 % of base) : 24521.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
         -14 (-1.47 % of base) : 23623.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
         -14 (-1.47 % of base) : 24407.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
         -13 (-0.58 % of base) : 19037.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)

Top method regressions (percentages):
          27 (8.79 % of base) : 524.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          27 (8.79 % of base) : 14935.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          15 (6.94 % of base) : 6820.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
          15 (6.94 % of base) : 21792.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
          22 (4.73 % of base) : 4232.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
          22 (4.73 % of base) : 35343.dasm - Utf8Json.JsonReader:ReadInt64():long:this (FullOpts)
          31 (4.72 % of base) : 14453.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          12 (3.47 % of base) : 32959.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
          12 (3.47 % of base) : 28370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
          82 (3.16 % of base) : 31570.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)
          82 (3.15 % of base) : 34105.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)
          24 (2.99 % of base) : 7554.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          24 (2.99 % of base) : 35434.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (FullOpts)
          14 (2.66 % of base) : 38501.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (FullOpts)
          16 (2.64 % of base) : 28848.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          16 (2.64 % of base) : 32704.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
           6 (1.99 % of base) : 1095.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
           6 (1.99 % of base) : 15361.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          45 (1.70 % of base) : 28723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

Top method improvements (percentages):
         -17 (-4.75 % of base) : 24521.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (FullOpts)
         -65 (-4.25 % of base) : 23540.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
          -7 (-2.37 % of base) : 8561.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
          -7 (-2.37 % of base) : 17971.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (FullOpts)
         -23 (-2.13 % of base) : 26880.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
          -5 (-1.98 % of base) : 19394.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
          -5 (-1.98 % of base) : 6563.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
         -31 (-1.83 % of base) : 14457.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
          -8 (-1.66 % of base) : 37478.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (FullOpts)
         -19 (-1.66 % of base) : 37587.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -19 (-1.66 % of base) : 37916.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -14 (-1.47 % of base) : 23623.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
         -14 (-1.47 % of base) : 24407.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (FullOpts)
         -18 (-1.38 % of base) : 4180.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -18 (-1.38 % of base) : 16837.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
          -6 (-1.20 % of base) : 24087.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
          -6 (-1.20 % of base) : 33845.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
         -46 (-1.19 % of base) : 35544.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -25 (-1.18 % of base) : 10185.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (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: 31808217 (overridden on cmd)
Total bytes of diff: 31808928 (overridden on cmd)
Total bytes of delta: 711 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          81 : 59860.dasm (3.06 % of base)
          53 : 68344.dasm (2.39 % of base)
          45 : 2412.dasm (1.58 % of base)
          45 : 32565.dasm (1.58 % of base)
          39 : 54025.dasm (1.50 % of base)
          30 : 11682.dasm (9.90 % of base)
          30 : 23144.dasm (9.90 % of base)
          30 : 63032.dasm (9.90 % of base)
          27 : 1532.dasm (8.26 % of base)
          27 : 31091.dasm (8.26 % of base)
          25 : 45578.dasm (7.76 % of base)
          25 : 81233.dasm (7.76 % of base)
          25 : 85363.dasm (7.76 % of base)
          25 : 71339.dasm (7.76 % of base)
          24 : 72446.dasm (2.92 % of base)
          24 : 10807.dasm (2.92 % of base)
          23 : 18703.dasm (7.59 % of base)
          23 : 24496.dasm (7.59 % of base)
          23 : 76857.dasm (7.59 % of base)
          23 : 52729.dasm (7.59 % of base)

Top file improvements (bytes):
         -68 : 63120.dasm (-4.56 % of base)
         -28 : 12675.dasm (-4.43 % of base)
         -25 : 18602.dasm (-1.15 % of base)
         -25 : 50695.dasm (-1.15 % of base)
         -23 : 54023.dasm (-2.13 % of base)
         -19 : 81026.dasm (-1.66 % of base)
         -18 : 46525.dasm (-1.38 % of base)
         -14 : 29005.dasm (-4.36 % of base)
         -12 : 50715.dasm (-0.31 % of base)
         -12 : 18629.dasm (-0.31 % of base)
         -11 : 38457.dasm (-3.53 % of base)
         -11 : 50728.dasm (-0.88 % of base)
         -11 : 5246.dasm (-3.53 % of base)
         -11 : 73919.dasm (-3.53 % of base)
         -11 : 79654.dasm (-0.61 % of base)
         -11 : 13315.dasm (-3.53 % of base)
          -8 : 16701.dasm (-0.99 % of base)
          -8 : 81959.dasm (-1.66 % of base)
          -7 : 27752.dasm (-2.37 % of base)
          -7 : 11873.dasm (-0.53 % of base)

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

Top method regressions (bytes):
          81 (3.06 % of base) : 59860.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)
          53 (2.39 % of base) : 68344.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier0-FullOpts)
          45 (1.58 % of base) : 2412.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          45 (1.58 % of base) : 32565.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          39 (1.50 % of base) : 54025.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)
          30 (9.90 % of base) : 11682.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          30 (9.90 % of base) : 23144.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          30 (9.90 % of base) : 63032.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          27 (8.26 % of base) : 1532.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          27 (8.26 % of base) : 31091.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          25 (7.76 % of base) : 45578.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 81233.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 85363.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 71339.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          24 (2.92 % of base) : 72446.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          24 (2.92 % of base) : 10807.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          23 (7.59 % of base) : 18703.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 24496.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 76857.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 52729.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)

Top method improvements (bytes):
         -68 (-4.56 % of base) : 63120.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -28 (-4.43 % of base) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
         -25 (-1.15 % of base) : 18602.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -25 (-1.15 % of base) : 50695.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -23 (-2.13 % of base) : 54023.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
         -19 (-1.66 % of base) : 81026.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -18 (-1.38 % of base) : 46525.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -14 (-4.36 % of base) : 29005.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -12 (-0.31 % of base) : 50715.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
         -12 (-0.31 % of base) : 18629.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
         -11 (-0.61 % of base) : 79654.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
         -11 (-3.53 % of base) : 38457.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 5246.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 73919.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 13315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-0.88 % of base) : 50728.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
          -8 (-1.66 % of base) : 81959.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
          -8 (-0.99 % of base) : 16701.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier0-FullOpts)
          -7 (-2.37 % of base) : 27752.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
          -7 (-2.37 % of base) : 52756.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)

Top method regressions (percentages):
          30 (9.90 % of base) : 11682.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          30 (9.90 % of base) : 23144.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          30 (9.90 % of base) : 63032.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          27 (8.26 % of base) : 1532.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          27 (8.26 % of base) : 31091.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          25 (7.76 % of base) : 45578.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 81233.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 85363.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          25 (7.76 % of base) : 71339.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 18703.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 24496.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 76857.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          23 (7.59 % of base) : 52729.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          15 (6.94 % of base) : 50175.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          15 (6.94 % of base) : 70973.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          21 (6.54 % of base) : 58514.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          12 (3.47 % of base) : 61378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (Tier0-FullOpts)
          11 (3.43 % of base) : 65351.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          11 (3.42 % of base) : 77186.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          10 (3.30 % of base) : 58619.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)

Top method improvements (percentages):
         -68 (-4.56 % of base) : 63120.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -28 (-4.43 % of base) : 12675.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
         -14 (-4.36 % of base) : 29005.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 38457.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 5246.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 73919.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -11 (-3.53 % of base) : 13315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          -7 (-2.37 % of base) : 27752.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
          -7 (-2.37 % of base) : 52756.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
         -23 (-2.13 % of base) : 54023.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
          -5 (-1.98 % of base) : 42920.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
          -8 (-1.66 % of base) : 81959.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
         -19 (-1.66 % of base) : 81026.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
          -5 (-1.61 % of base) : 40315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          -5 (-1.61 % of base) : 48762.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          -5 (-1.61 % of base) : 52072.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
          -5 (-1.61 % of base) : 78701.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this (Tier1)
         -18 (-1.38 % of base) : 46525.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -25 (-1.15 % of base) : 18602.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -25 (-1.15 % of base) : 50695.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)


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: 13978666 (overridden on cmd)
Total bytes of diff: 13978800 (overridden on cmd)
Total bytes of delta: 134 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          82 : 67371.dasm (3.15 % of base)
          82 : 64891.dasm (3.16 % of base)
          45 : 26108.dasm (1.58 % of base)
          45 : 9082.dasm (1.58 % of base)
          45 : 58922.dasm (1.70 % of base)
          39 : 53305.dasm (1.50 % of base)
          31 : 17454.dasm (4.72 % of base)
          31 : 95.dasm (4.72 % of base)
          27 : 18713.dasm (8.79 % of base)
          27 : 1363.dasm (8.79 % of base)
          24 : 13701.dasm (2.99 % of base)
          24 : 33200.dasm (2.99 % of base)
          16 : 23473.dasm (1.45 % of base)
          16 : 59264.dasm (2.64 % of base)
          16 : 9197.dasm (1.46 % of base)
          15 : 68211.dasm (1.56 % of base)
          15 : 7513.dasm (6.94 % of base)
          15 : 25227.dasm (6.94 % of base)
          14 : 73258.dasm (2.66 % of base)
          12 : 58233.dasm (3.47 % of base)

Top file improvements (bytes):
         -68 : 64377.dasm (-4.56 % of base)
         -65 : 46224.dasm (-4.25 % of base)
         -46 : 21985.dasm (-1.15 % of base)
         -46 : 68937.dasm (-1.19 % of base)
         -46 : 70824.dasm (-1.19 % of base)
         -46 : 68694.dasm (-1.15 % of base)
         -38 : 59850.dasm (-0.85 % of base)
         -35 : 34629.dasm (-1.62 % of base)
         -35 : 50744.dasm (-1.62 % of base)
         -31 : 100.dasm (-1.83 % of base)
         -31 : 17459.dasm (-1.83 % of base)
         -23 : 53302.dasm (-2.13 % of base)
         -19 : 72402.dasm (-1.66 % of base)
         -18 : 30053.dasm (-1.38 % of base)
         -18 : 5306.dasm (-1.38 % of base)
         -17 : 36066.dasm (-4.75 % of base)
         -14 : 51373.dasm (-1.47 % of base)
         -14 : 46580.dasm (-1.47 % of base)
          -9 : 71817.dasm (-0.53 % of base)
          -8 : 38576.dasm (-0.99 % of base)

58 total files with Code Size differences (31 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          82 (3.15 % of base) : 67371.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)
          82 (3.16 % of base) : 64891.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)
          45 (1.70 % of base) : 58922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
          45 (1.58 % of base) : 26108.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          45 (1.58 % of base) : 9082.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          39 (1.50 % of base) : 53305.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)
          31 (4.72 % of base) : 17454.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          31 (4.72 % of base) : 95.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          27 (8.79 % of base) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          27 (8.79 % of base) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          24 (2.99 % of base) : 13701.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          24 (2.99 % of base) : 33200.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          16 (2.64 % of base) : 59264.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
          16 (1.45 % of base) : 23473.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
          16 (1.46 % of base) : 9197.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
          15 (1.56 % of base) : 68211.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
          15 (6.94 % of base) : 7513.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          15 (6.94 % of base) : 25227.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          14 (2.66 % of base) : 73258.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (Tier0-FullOpts)
          12 (0.87 % of base) : 64359.dasm - (dynamicClass):ReadArrayOfdateTimeFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,System.Runtime.Serialization.DataContracts.CollectionDataContract):System.Object (FullOpts)

Top method improvements (bytes):
         -68 (-4.56 % of base) : 64377.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -65 (-4.25 % of base) : 46224.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -46 (-1.15 % of base) : 21985.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -46 (-1.19 % of base) : 68937.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -46 (-1.19 % of base) : 70824.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -46 (-1.15 % of base) : 68694.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-0.85 % of base) : 59850.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
         -35 (-1.62 % of base) : 34629.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -35 (-1.62 % of base) : 50744.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -31 (-1.83 % of base) : 100.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
         -31 (-1.83 % of base) : 17459.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
         -23 (-2.13 % of base) : 53302.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
         -19 (-1.66 % of base) : 72402.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -18 (-1.38 % of base) : 30053.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -18 (-1.38 % of base) : 5306.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -17 (-4.75 % of base) : 36066.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
         -14 (-1.47 % of base) : 51373.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
         -14 (-1.47 % of base) : 46580.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
          -9 (-0.53 % of base) : 71817.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
          -8 (-1.66 % of base) : 72662.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)

Top method regressions (percentages):
          27 (8.79 % of base) : 18713.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          27 (8.79 % of base) : 1363.dasm - System.String:TrimHelper(uint,int,int):System.String:this (Tier0-FullOpts)
          15 (6.94 % of base) : 7513.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          15 (6.94 % of base) : 25227.dasm - Sigil.Impl.LinqAlternative:_Order[int,int](System.Collections.Generic.IEnumerable`1[int],Sigil.Impl.SigilFunc`2[int,int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[int] (Tier0-FullOpts)
          31 (4.72 % of base) : 17454.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          31 (4.72 % of base) : 95.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          12 (3.47 % of base) : 58233.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (Tier0-FullOpts)
          82 (3.16 % of base) : 64891.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)
          82 (3.15 % of base) : 67371.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)
          24 (2.99 % of base) : 13701.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          24 (2.99 % of base) : 33200.dasm - System.Number:NegativeInt64ToDecStr(long,int,System.String):System.String (Tier0-FullOpts)
          14 (2.66 % of base) : 73258.dasm - BenchmarksGame.ReverseComplement_1:Reverse(System.IO.Stream,int,int,System.Collections.Generic.List`1[ubyte[]]) (Tier0-FullOpts)
          16 (2.64 % of base) : 59264.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
           6 (1.99 % of base) : 21513.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier0-FullOpts)
           6 (1.99 % of base) : 6885.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier0-FullOpts)
          45 (1.70 % of base) : 58922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
          45 (1.58 % of base) : 26108.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          45 (1.58 % of base) : 9082.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          15 (1.56 % of base) : 68211.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier0-FullOpts)
          39 (1.50 % of base) : 53305.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier0-FullOpts)

Top method improvements (percentages):
         -17 (-4.75 % of base) : 36066.dasm - ProtoBuf.Internal.DynamicStub:<SlowGet>g__ResolveProxies|9_1(System.Type):System.Type (Tier0-FullOpts)
         -68 (-4.56 % of base) : 64377.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -65 (-4.25 % of base) : 46224.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
          -7 (-2.37 % of base) : 24359.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
          -7 (-2.37 % of base) : 49392.dasm - Newtonsoft.Json.DefaultJsonNameTable:Get(ushort[],int,int):System.String:this (Tier0-FullOpts)
         -23 (-2.13 % of base) : 53302.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier0-FullOpts)
          -5 (-1.98 % of base) : 12571.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
          -5 (-1.98 % of base) : 30901.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
         -31 (-1.83 % of base) : 100.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
         -31 (-1.83 % of base) : 17459.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
          -8 (-1.66 % of base) : 72662.dasm - Benchstone.MDBenchI.MDMidpoint:Test():ubyte:this (Tier0-FullOpts)
         -19 (-1.66 % of base) : 72402.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -35 (-1.62 % of base) : 34629.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -35 (-1.62 % of base) : 50744.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -14 (-1.47 % of base) : 51373.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
         -14 (-1.47 % of base) : 46580.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:CreateInstance(System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions):System.Object (Tier0-FullOpts)
         -18 (-1.38 % of base) : 30053.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -18 (-1.38 % of base) : 5306.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
          -6 (-1.20 % of base) : 47106.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (Tier0-FullOpts)
          -6 (-1.20 % of base) : 66923.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (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: 215097885 (overridden on cmd)
Total bytes of diff: 215107028 (overridden on cmd)
Total bytes of delta: 9143 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         278 : 336487.dasm (17.15 % of base)
         278 : 335133.dasm (17.15 % of base)
         276 : 132464.dasm (17.01 % of base)
         276 : 133592.dasm (17.01 % of base)
          97 : 160634.dasm (7.69 % of base)
          97 : 160618.dasm (7.69 % of base)
          83 : 115053.dasm (7.28 % of base)
          83 : 113819.dasm (7.28 % of base)
          83 : 113804.dasm (7.28 % of base)
          83 : 115067.dasm (7.28 % of base)
          79 : 120647.dasm (6.85 % of base)
          77 : 340553.dasm (5.98 % of base)
          77 : 306146.dasm (10.68 % of base)
          77 : 334586.dasm (6.64 % of base)
          77 : 403682.dasm (10.68 % of base)
          77 : 334567.dasm (6.64 % of base)
          76 : 334658.dasm (7.41 % of base)
          76 : 334677.dasm (7.39 % of base)
          76 : 334640.dasm (7.41 % of base)
          76 : 340514.dasm (5.88 % of base)

Top file improvements (bytes):
        -269 : 169423.dasm (-3.33 % of base)
        -269 : 207407.dasm (-3.33 % of base)
        -136 : 70911.dasm (-7.78 % of base)
        -136 : 70996.dasm (-7.77 % of base)
        -119 : 161558.dasm (-8.96 % of base)
        -119 : 161527.dasm (-8.96 % of base)
        -119 : 164057.dasm (-9.29 % of base)
        -119 : 164009.dasm (-9.29 % of base)
        -104 : 125219.dasm (-6.86 % of base)
        -104 : 122060.dasm (-6.86 % of base)
        -104 : 125134.dasm (-6.86 % of base)
        -104 : 128007.dasm (-6.86 % of base)
        -104 : 122145.dasm (-6.86 % of base)
        -104 : 127922.dasm (-6.86 % of base)
        -103 : 121271.dasm (-6.90 % of base)
        -103 : 121223.dasm (-6.90 % of base)
         -96 : 63239.dasm (-4.06 % of base)
         -96 : 63246.dasm (-4.06 % of base)
         -96 : 63253.dasm (-4.06 % of base)
         -96 : 63386.dasm (-4.06 % of base)

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

Top method regressions (bytes):
         278 (17.15 % of base) : 335133.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         278 (17.15 % of base) : 336487.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         276 (17.01 % of base) : 132464.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         276 (17.01 % of base) : 133592.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          97 (7.69 % of base) : 160618.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble0:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          97 (7.69 % of base) : 160634.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble1:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          83 (7.28 % of base) : 113804.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
          83 (7.28 % of base) : 113819.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
          83 (7.28 % of base) : 115053.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
          83 (7.28 % of base) : 115067.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
          79 (6.85 % of base) : 120647.dasm - JIT.HardwareIntrinsics.X86._Avx512F.SimpleBinaryOpTest__ScaleScalarDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          77 (6.64 % of base) : 334567.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleUnaryOpTest__DuplicateEvenIndexedSingle:ValidateResult(float[],float[],System.String):this (Tier0-FullOpts)
          77 (6.64 % of base) : 334586.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleUnaryOpTest__DuplicateOddIndexedSingle:ValidateResult(float[],float[],System.String):this (Tier0-FullOpts)
          77 (5.98 % of base) : 340553.dasm - JIT.HardwareIntrinsics.X86._Sse2.SimpleBinaryOpTest__CompareScalarUnorderedDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
          77 (10.68 % of base) : 306146.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          77 (10.68 % of base) : 403682.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          76 (7.41 % of base) : 334640.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Byte1:ValidateResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
          76 (7.39 % of base) : 334677.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int161:ValidateResult(short[],short[],System.String):this (Tier0-FullOpts)
          76 (7.41 % of base) : 334658.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128SByte1:ValidateResult(byte[],byte[],System.String):this (Tier0-FullOpts)
          76 (7.39 % of base) : 334695.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt161:ValidateResult(ushort[],ushort[],System.String):this (Tier0-FullOpts)

Top method improvements (bytes):
        -269 (-3.33 % of base) : 169423.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        -269 (-3.33 % of base) : 207407.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        -136 (-7.78 % of base) : 70911.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -136 (-7.77 % of base) : 70996.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -119 (-8.96 % of base) : 161527.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalAddSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
        -119 (-8.96 % of base) : 161558.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalSubtractSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
        -119 (-9.29 % of base) : 164009.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalAddInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
        -119 (-9.29 % of base) : 164057.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalSubtractInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 122060.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 122145.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 125134.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 125219.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 127922.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 128007.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -103 (-6.90 % of base) : 121223.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -103 (-6.90 % of base) : 121271.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         -96 (-4.06 % of base) : 63239.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt640:RunReflectionScenario(int,ubyte):this (FullOpts)
         -96 (-4.06 % of base) : 63246.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt641:RunReflectionScenario(int,ubyte):this (FullOpts)
         -96 (-4.06 % of base) : 63253.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementInt643:RunReflectionScenario(int,ubyte):this (FullOpts)
         -96 (-4.06 % of base) : 63386.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementUInt643:RunReflectionScenario(int,ubyte):this (FullOpts)

Top method regressions (percentages):
          54 (43.20 % of base) : 169587.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          54 (43.20 % of base) : 207717.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
         278 (17.15 % of base) : 335133.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         278 (17.15 % of base) : 336487.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         276 (17.01 % of base) : 132464.dasm - JIT.HardwareIntrinsics.X86._Avx1.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         276 (17.01 % of base) : 133592.dasm - JIT.HardwareIntrinsics.X86._Avx1_Vector128.StoreBinaryOpTest__MaskStoreDouble:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          30 (10.95 % of base) : 240294.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          77 (10.68 % of base) : 306146.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          77 (10.68 % of base) : 403682.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
          97 (7.69 % of base) : 160618.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble0:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          97 (7.69 % of base) : 160634.dasm - JIT.HardwareIntrinsics.X86._Sse2.ImmBinaryOpTest__ShuffleDouble1:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          76 (7.41 % of base) : 334640.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Byte1:ValidateResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
          76 (7.41 % of base) : 334658.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128SByte1:ValidateResult(byte[],byte[],System.String):this (Tier0-FullOpts)
          76 (7.39 % of base) : 334677.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int161:ValidateResult(short[],short[],System.String):this (Tier0-FullOpts)
          76 (7.39 % of base) : 334695.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt161:ValidateResult(ushort[],ushort[],System.String):this (Tier0-FullOpts)
          75 (7.33 % of base) : 334715.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128Int321:ValidateResult(int[],int[],System.String):this (Tier0-FullOpts)
          75 (7.33 % of base) : 334733.dasm - JIT.HardwareIntrinsics.X86._Avx1.ImmUnaryOpTest__ExtractVector128UInt321:ValidateResult(uint[],uint[],System.String):this (Tier0-FullOpts)
          83 (7.28 % of base) : 113804.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512Int64:ValidateResult(long[],float[],System.String):this (FullOpts)
          83 (7.28 % of base) : 113819.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ.SimpleUnaryOpConvTest__ConvertToVector256SingleVector512UInt64:ValidateResult(ulong[],float[],System.String):this (FullOpts)
          83 (7.28 % of base) : 115053.dasm - JIT.HardwareIntrinsics.X86._Avx512DQ_VL_Vector256.SimpleUnaryOpConvTest__ConvertToVector128SingleVector256Int64:ValidateResult(long[],float[],System.String):this (FullOpts)

Top method improvements (percentages):
        -119 (-9.29 % of base) : 164009.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalAddInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
        -119 (-9.29 % of base) : 164057.dasm - JIT.HardwareIntrinsics.X86._Ssse3.HorizontalBinaryOpTest__HorizontalSubtractInt32:ValidateResult(int[],int[],int[],System.String):this (FullOpts)
        -119 (-8.96 % of base) : 161527.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalAddSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
        -119 (-8.96 % of base) : 161558.dasm - JIT.HardwareIntrinsics.X86._Sse3.HorizontalBinaryOpTest__HorizontalSubtractSingle:ValidateResult(float[],float[],float[],System.String):this (FullOpts)
        -136 (-7.78 % of base) : 70911.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -136 (-7.77 % of base) : 70996.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorTernaryOpTest__ConditionalSelectUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -103 (-6.90 % of base) : 121223.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
        -103 (-6.90 % of base) : 121271.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         -38 (-6.86 % of base) : 229877.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
         -38 (-6.86 % of base) : 236395.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (FullOpts)
         -38 (-6.86 % of base) : 365160.dasm - JitTest_lcsmixed_lcs_cs.LCS:buildLCS(int[,][,][,][,],ushort[],int[]):System.String (Tier0-FullOpts)
        -104 (-6.86 % of base) : 122060.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 122145.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 125134.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 125219.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 127922.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt6430:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
        -104 (-6.86 % of base) : 128007.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt6430:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
         -69 (-5.22 % of base) : 121383.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
         -69 (-5.22 % of base) : 124458.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector128.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
         -69 (-5.22 % of base) : 127246.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicByte30:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],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: 35715688 (overridden on cmd)
Total bytes of diff: 35716404 (overridden on cmd)
Total bytes of delta: 716 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         239 : 2226.dasm (3.05 % of base)
         124 : 151268.dasm (13.93 % of base)
          90 : 169517.dasm (7.85 % of base)
          64 : 152903.dasm (3.79 % of base)
          54 : 246621.dasm (42.86 % of base)
          54 : 37089.dasm (1.76 % of base)
          51 : 59978.dasm (12.32 % of base)
          48 : 176171.dasm (3.50 % of base)
          39 : 113285.dasm (11.96 % of base)
          33 : 172870.dasm (5.02 % of base)
          33 : 67122.dasm (2.60 % of base)
          31 : 173542.dasm (1.80 % of base)
          30 : 70787.dasm (2.25 % of base)
          30 : 67272.dasm (4.34 % of base)
          27 : 154247.dasm (3.31 % of base)
          27 : 63363.dasm (4.71 % of base)
          27 : 67201.dasm (2.13 % of base)
          27 : 100357.dasm (4.71 % of base)
          27 : 15633.dasm (8.77 % of base)
          26 : 169510.dasm (4.26 % of base)

Top file improvements (bytes):
         -83 : 172532.dasm (-3.80 % of base)
         -52 : 149867.dasm (-3.79 % of base)
         -52 : 70441.dasm (-6.68 % of base)
         -42 : 15714.dasm (-7.46 % of base)
         -40 : 65250.dasm (-0.91 % of base)
         -39 : 169530.dasm (-2.79 % of base)
         -39 : 176330.dasm (-3.18 % of base)
         -39 : 213369.dasm (-5.30 % of base)
         -38 : 37064.dasm (-5.92 % of base)
         -38 : 77715.dasm (-5.92 % of base)
         -32 : 173539.dasm (-1.87 % of base)
         -32 : 71525.dasm (-2.24 % of base)
         -31 : 16965.dasm (-1.77 % of base)
         -28 : 31841.dasm (-3.46 % of base)
         -28 : 73023.dasm (-3.46 % of base)
         -27 : 216580.dasm (-2.55 % of base)
         -27 : 70516.dasm (-0.99 % of base)
         -27 : 70826.dasm (-2.19 % of base)
         -27 : 228214.dasm (-1.47 % of base)
         -26 : 168717.dasm (-1.83 % of base)

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

Top method regressions (bytes):
         239 (3.05 % of base) : 2226.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         124 (13.93 % of base) : 151268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
          90 (7.85 % of base) : 169517.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:BuildParameterToArgumentMap(byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],byref,byref) (FullOpts)
          64 (3.79 % of base) : 152903.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:ReportErrorsOnPartialMethodImplementation(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          54 (1.76 % of base) : 37089.dasm - Microsoft.CodeAnalysis.CSharp.MethodBodySynthesizer:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBlock (FullOpts)
          54 (42.86 % of base) : 246621.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          51 (12.32 % of base) : 59978.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:IsOrClosedOverATypeFromAssemblies(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte (FullOpts)
          48 (3.50 % of base) : 176171.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (FullOpts)
          39 (11.96 % of base) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
          33 (5.02 % of base) : 172870.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:RetargetModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
          33 (2.60 % of base) : 67122.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          31 (1.80 % of base) : 173542.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
          30 (4.34 % of base) : 67272.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
          30 (2.25 % of base) : 70787.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
          27 (4.71 % of base) : 63363.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
          27 (4.71 % of base) : 100357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
          27 (3.31 % of base) : 154247.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:Create(Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
          27 (2.13 % of base) : 67201.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
          27 (8.77 % of base) : 15633.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          26 (4.26 % of base) : 169510.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CandidatesAreEquallyApplicableToArguments(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)

Top method improvements (bytes):
         -83 (-3.80 % of base) : 172532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -52 (-3.79 % of base) : 149867.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
         -52 (-6.68 % of base) : 70441.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
         -42 (-7.46 % of base) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
         -40 (-0.91 % of base) : 65250.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
         -39 (-2.79 % of base) : 169530.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnGenericity(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
         -39 (-5.30 % of base) : 213369.dasm - System.Reflection.Emit.TypeBuilderImpl:GetInterfaceMap(System.Type):System.Reflection.InterfaceMapping:this (FullOpts)
         -39 (-3.18 % of base) : 176330.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)
         -38 (-5.92 % of base) : 37064.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -38 (-5.92 % of base) : 77715.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -32 (-1.87 % of base) : 173539.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:CreateAndSetSourceAssemblyFullBind(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation):ubyte:this (FullOpts)
         -32 (-2.24 % of base) : 71525.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
         -31 (-1.77 % of base) : 16965.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -28 (-3.46 % of base) : 31841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -28 (-3.46 % of base) : 73023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -27 (-2.19 % of base) : 70826.dasm - System.Data.ForeignKeyConstraint:CascadeDelete(System.Data.DataRow):this (FullOpts)
         -27 (-0.99 % of base) : 70516.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
         -27 (-2.55 % of base) : 216580.dasm - System.Net.Http.Headers.AltSvcHeaderParser:GetParsedValueLength(System.String,int,System.Object,byref):int:this (FullOpts)
         -27 (-1.47 % of base) : 228214.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)
         -26 (-1.83 % of base) : 168717.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)

Top method regressions (percentages):
          54 (42.86 % of base) : 246621.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
         124 (13.93 % of base) : 151268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKindForPotentialOperatorOrConversion(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo,int,System.String,ubyte):int:this (FullOpts)
          51 (12.32 % of base) : 59978.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:IsOrClosedOverATypeFromAssemblies(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte (FullOpts)
          39 (11.96 % of base) : 113285.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
          13 (11.50 % of base) : 70150.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
          20 (9.01 % of base) : 268671.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          27 (8.77 % of base) : 15633.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          20 (8.16 % of base) : 268672.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
          90 (7.85 % of base) : 169517.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:BuildParameterToArgumentMap(byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],byref,byref) (FullOpts)
          10 (6.29 % of base) : 205846.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
          10 (6.29 % of base) : 70390.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
          25 (6.23 % of base) : 268504.dasm - System.Xml.XmlBufferReader:Equals2(int,int,System.String):ubyte:this (FullOpts)
          15 (5.95 % of base) : 174485.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+CapturedArrayAccessExpression:Materialize(Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          33 (5.02 % of base) : 172870.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:RetargetModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
          19 (4.74 % of base) : 33792.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
          19 (4.74 % of base) : 74814.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
          27 (4.71 % of base) : 63363.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
          27 (4.71 % of base) : 100357.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:CreateMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
          30 (4.34 % of base) : 67272.dasm - System.Data.UniqueConstraint:Clone(System.Data.DataSet,ubyte):System.Data.Constraint:this (FullOpts)
          26 (4.26 % of base) : 169510.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CandidatesAreEquallyApplicableToArguments(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)

Top method improvements (percentages):
         -22 (-8.91 % of base) : 153759.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
         -22 (-8.63 % of base) : 153757.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
         -42 (-7.46 % of base) : 15714.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
         -52 (-6.68 % of base) : 70441.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
         -38 (-5.92 % of base) : 37064.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -38 (-5.92 % of base) : 77715.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -26 (-5.49 % of base) : 269091.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
         -39 (-5.30 % of base) : 213369.dasm - System.Reflection.Emit.TypeBuilderImpl:GetInterfaceMap(System.Type):System.Reflection.InterfaceMapping:this (FullOpts)
         -23 (-5.10 % of base) : 66828.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
         -23 (-5.05 % of base) : 269092.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
         -18 (-4.16 % of base) : 237607.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][],System.Linq.Parallel.HashJoinOutputKeyBuilder`3[int,int,int],System.Collections.Generic.IComparer`1[int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
         -83 (-3.80 % of base) : 172532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -52 (-3.79 % of base) : 149867.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
         -19 (-3.72 % of base) : 206367.dasm - System.Data.OleDb.RowBinding:SetBindings(System.Data.OleDb.OleDbDataReader,System.Data.OleDb.Bindings,int,int,System.Data.OleDb.OleDbParameter[],System.Data.OleDb.tagDBBINDING[],ubyte):System.Data.OleDb.ColumnBinding[]:this (FullOpts)
         -28 (-3.46 % of base) : 31841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -28 (-3.46 % of base) : 73023.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -24 (-3.30 % of base) : 23284.dasm - System.Buffers.TeddyBucketizer:Bucketize(System.ReadOnlySpan`1[System.String],int,int):System.String[][] (FullOpts)
         -39 (-3.18 % of base) : 176330.dasm - System.Text.ISO2022Encoding:GetCharsCP50225KR(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Decoder):int:this (FullOpts)
         -39 (-2.79 % of base) : 169530.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnGenericity(Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder):ubyte (FullOpts)
         -26 (-2.77 % of base) : 70431.dasm - System.Data.Common.DbCommandBuilder:BuildCache(ubyte,ubyte):this (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: 50205777 (overridden on cmd)
Total bytes of diff: 50206719 (overridden on cmd)
Total bytes of delta: 942 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         122 : 30081.dasm (4.55 % of base)
         115 : 68932.dasm (0.47 % of base)
         110 : 81577.dasm (3.35 % of base)
          95 : 81016.dasm (1.59 % of base)
          95 : 72656.dasm (7.35 % of base)
          74 : 305466.dasm (3.03 % of base)
          71 : 177767.dasm (8.53 % of base)
          69 : 76962.dasm (0.55 % of base)
          68 : 76594.dasm (2.22 % of base)
          59 : 38549.dasm (3.62 % of base)
          58 : 180188.dasm (2.84 % of base)
          57 : 167541.dasm (16.81 % of base)
          55 : 64521.dasm (3.90 % of base)
          55 : 103684.dasm (1.42 % of base)
          55 : 70688.dasm (1.95 % of base)
          54 : 221772.dasm (4.49 % of base)
          54 : 185702.dasm (43.20 % of base)
          51 : 70872.dasm (3.81 % of base)
          50 : 99805.dasm (1.49 % of base)
          50 : 100442.dasm (7.91 % of base)

Top file improvements (bytes):
        -269 : 186428.dasm (-3.33 % of base)
         -75 : 77000.dasm (-1.83 % of base)
         -72 : 66468.dasm (-2.88 % of base)
         -72 : 100611.dasm (-3.52 % of base)
         -65 : 177368.dasm (-2.88 % of base)
         -58 : 60096.dasm (-1.14 % of base)
         -53 : 77215.dasm (-1.68 % of base)
         -52 : 75426.dasm (-6.61 % of base)
         -47 : 99664.dasm (-2.12 % of base)
         -43 : 38545.dasm (-3.53 % of base)
         -43 : 185315.dasm (-3.70 % of base)
         -42 : 76941.dasm (-5.13 % of base)
         -42 : 84308.dasm (-1.00 % of base)
         -40 : 283288.dasm (-2.14 % of base)
         -39 : 260162.dasm (-2.45 % of base)
         -38 : 35443.dasm (-5.53 % of base)
         -38 : 176037.dasm (-1.65 % of base)
         -34 : 30067.dasm (-0.51 % of base)
         -31 : 81827.dasm (-0.59 % of base)
         -31 : 30073.dasm (-2.05 % of base)

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

Top method regressions (bytes):
         122 (4.55 % of base) : 30081.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         115 (0.47 % of base) : 68932.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)
         110 (3.35 % of base) : 81577.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:AddGroupClassMembersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          95 (1.59 % of base) : 81016.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol:ComputeType(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
          95 (7.35 % of base) : 72656.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          74 (3.03 % of base) : 305466.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
          71 (8.53 % of base) : 177767.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
          69 (0.55 % of base) : 76962.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
          68 (2.22 % of base) : 76594.dasm - Microsoft.CodeAnalysis.VisualBasic.InitializerRewriter:BuildConstructorBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Binder+ProcessedFieldOrPropertyInitializers,Microsoft.CodeAnalysis.VisualBasic.BoundBlock):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
          59 (3.62 % of base) : 38549.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.CSharpCompilation):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
          58 (2.84 % of base) : 180188.dasm - ILCompiler.ReadyToRunStandaloneMethodMetadata:Compute(Internal.TypeSystem.Ecma.EcmaMethod):ILCompiler.ReadyToRunStandaloneMethodMetadata (FullOpts)
          57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          55 (3.90 % of base) : 64521.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
          55 (1.42 % of base) : 103684.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          55 (1.95 % of base) : 70688.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
          54 (43.20 % of base) : 185702.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          54 (4.49 % of base) : 221772.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
          51 (3.81 % of base) : 70872.dasm - System.Data.XSDSchema:HandleRelation(System.Xml.XmlElement,ubyte):this (FullOpts)
          50 (7.91 % of base) : 100442.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
          50 (1.49 % of base) : 99805.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeSetArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)

Top method improvements (bytes):
        -269 (-3.33 % of base) : 186428.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
         -75 (-1.83 % of base) : 77000.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
         -72 (-2.88 % of base) : 66468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -72 (-3.52 % of base) : 100611.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
         -65 (-2.88 % of base) : 177368.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
         -58 (-1.14 % of base) : 60096.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
         -53 (-1.68 % of base) : 77215.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
         -52 (-6.61 % of base) : 75426.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
         -47 (-2.12 % of base) : 99664.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         -43 (-3.70 % of base) : 185315.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
         -43 (-3.53 % of base) : 38545.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)
         -42 (-5.13 % of base) : 76941.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:GetCommonExpressionTypeForErrorRecovery(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.ConstantFieldsInProgress):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -42 (-1.00 % of base) : 84308.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
         -40 (-2.14 % of base) : 283288.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -39 (-2.45 % of base) : 260162.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
         -38 (-5.53 % of base) : 35443.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -38 (-1.65 % of base) : 176037.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -34 (-0.51 % of base) : 30067.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -31 (-2.05 % of base) : 30073.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -31 (-0.59 % of base) : 81827.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedEventAccessorSymbol:ConstructFieldLikeEventAccessorBody_Regular(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceEventSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)

Top method regressions (percentages):
          54 (43.20 % of base) : 185702.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          57 (16.81 % of base) : 167541.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          13 (11.40 % of base) : 71233.dasm - System.Data.DataColumnCollection:RemoveColumnsImplementingIChangeTrackingList(System.Data.DataColumn):this (FullOpts)
          33 (9.76 % of base) : 173460.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
          71 (8.53 % of base) : 177767.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
          50 (7.91 % of base) : 100442.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
          10 (7.35 % of base) : 38550.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
          95 (7.35 % of base) : 72656.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          30 (7.32 % of base) : 174267.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
          29 (6.73 % of base) : 99280.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:AdjustCallForLiftedOperator_DoNotCallDirectly(Microsoft.CodeAnalysis.VisualBasic.BoundCall,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          48 (6.68 % of base) : 32046.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
          10 (6.29 % of base) : 228499.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
          10 (6.29 % of base) : 74617.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
          17 (6.20 % of base) : 264611.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
          44 (6.19 % of base) : 82833.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
          47 (5.20 % of base) : 173596.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
          16 (4.89 % of base) : 293891.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (FullOpts)
          19 (4.75 % of base) : 32088.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
          14 (4.73 % of base) : 260688.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (FullOpts)
          18 (4.65 % of base) : 31006.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<GetBaseInterfaces>g__addAllInterfaces|652_0(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]) (FullOpts)

Top method improvements (percentages):
         -15 (-9.93 % of base) : 23249.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:Filter[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,ubyte],ubyte[]):ubyte[] (FullOpts)
          -6 (-9.38 % of base) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-9.38 % of base) : 310876.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-8.33 % of base) : 310864.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -6 (-8.33 % of base) : 2849.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
         -29 (-7.46 % of base) : 100144.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
         -52 (-6.61 % of base) : 75426.dasm - System.Data.Common.DbDataAdapter:UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs,System.Data.Common.DbDataAdapter+BatchCommandInfo[],int):int:this (FullOpts)
         -29 (-5.61 % of base) : 99607.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:InsertXmlLiteralsPreamble(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.LocalRewriter+XmlLiteralFixupData+LocalWithInitialization]):Microsoft.CodeAnalysis.VisualBasic.BoundBlock (FullOpts)
         -38 (-5.53 % of base) : 35443.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -23 (-5.53 % of base) : 72102.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
         -26 (-5.37 % of base) : 260144.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
         -42 (-5.13 % of base) : 76941.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:GetCommonExpressionTypeForErrorRecovery(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.ConstantFieldsInProgress):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -26 (-4.60 % of base) : 79647.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingAssemblySymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,ubyte):this (FullOpts)
         -14 (-4.27 % of base) : 82112.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeAcyclicInterfaces(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
         -14 (-4.13 % of base) : 82110.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:MakeDeclaredInterfaces(Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]:this (FullOpts)
         -19 (-4.08 % of base) : 260145.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
         -12 (-4.01 % of base) : 297101.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ReflectionFactoryServiceOnlySpan(System.Reflection.ConstructorInvoker,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[],System.Type,System.IServiceProvider):System.Object (FullOpts)
          -5 (-4.00 % of base) : 221759.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:Reorder[ubyte](ubyte[],int[]):ubyte[] (FullOpts)
         -43 (-3.70 % of base) : 185315.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
         -16 (-3.64 % of base) : 245604.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte],ubyte):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: 14786707 (overridden on cmd)
Total bytes of diff: 14787149 (overridden on cmd)
Total bytes of delta: 442 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         249 : 20424.dasm (3.91 % of base)
          57 : 43285.dasm (16.81 % of base)
          57 : 36026.dasm (2.00 % of base)
          47 : 19209.dasm (2.03 % of base)
          45 : 16812.dasm (1.57 % of base)
          31 : 26483.dasm (1.21 % of base)
          21 : 20451.dasm (0.80 % of base)
          19 : 1135.dasm (2.54 % of base)
          19 : 36326.dasm (1.93 % of base)
          19 : 4651.dasm (2.54 % of base)
          17 : 49275.dasm (6.20 % of base)
          17 : 24123.dasm (2.06 % of base)
          17 : 38546.dasm (1.32 % of base)
          16 : 42322.dasm (0.61 % of base)
          16 : 14413.dasm (4.89 % of base)
          16 : 6583.dasm (1.46 % of base)
          16 : 2667.dasm (4.89 % of base)
          16 : 39017.dasm (0.65 % of base)
          14 : 17283.dasm (4.73 % of base)
          13 : 36876.dasm (3.08 % of base)

Top file improvements (bytes):
         -69 : 31320.dasm (-1.78 % of base)
         -28 : 10624.dasm (-1.07 % of base)
         -26 : 17806.dasm (-5.37 % of base)
         -25 : 5300.dasm (-0.96 % of base)
         -25 : 40944.dasm (-0.96 % of base)
         -25 : 37829.dasm (-0.96 % of base)
         -25 : 18132.dasm (-0.96 % of base)
         -25 : 22745.dasm (-0.96 % of base)
         -25 : 24021.dasm (-0.96 % of base)
         -25 : 39561.dasm (-0.96 % of base)
         -25 : 8095.dasm (-0.96 % of base)
         -21 : 4392.dasm (-5.16 % of base)
         -20 : 27834.dasm (-0.78 % of base)
         -19 : 10948.dasm (-2.39 % of base)
         -15 : 43419.dasm (-1.54 % of base)
         -12 : 13478.dasm (-2.39 % of base)
         -10 : 6912.dasm (-2.00 % of base)
         -10 : 27783.dasm (-2.24 % of base)
          -8 : 27435.dasm (-0.83 % of base)
          -8 : 3839.dasm (-1.61 % of base)

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

Top method regressions (bytes):
         249 (3.91 % of base) : 20424.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
          57 (2.00 % of base) : 36026.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (Tier0-FullOpts)
          57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
          47 (2.03 % of base) : 19209.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
          45 (1.57 % of base) : 16812.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (Tier0-FullOpts)
          31 (1.21 % of base) : 26483.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
          21 (0.80 % of base) : 20451.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
          19 (2.54 % of base) : 1135.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
          19 (2.54 % of base) : 4651.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
          19 (1.93 % of base) : 36326.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectMap:.ctor(System.String,System.String[],int[],System.Object[],int[],System.Runtime.Serialization.Formatters.Binary.ObjectReader,int,System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo,System.Runtime.Serialization.Formatters.Binary.SizedArray):this (Tier0-FullOpts)
          17 (1.32 % of base) : 38546.dasm - Moq.MatcherFactory:CreateMatcher(System.Linq.Expressions.Expression,System.Reflection.ParameterInfo):Moq.Pair`2[Moq.IMatcher,System.Linq.Expressions.Expression] (Tier0-FullOpts)
          17 (2.06 % of base) : 24123.dasm - System.IO.Tests.BinaryWriter_WriteByteCharTests:BinaryWriter_WriteBArrayTest2():this (Tier0-FullOpts)
          17 (6.20 % of base) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
          16 (0.65 % of base) : 39017.dasm - Castle.DynamicProxy.Generators.InvocationTypeGenerator:ImplementInvokeMethodOnTarget(Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter,System.Reflection.ParameterInfo[],Castle.DynamicProxy.Generators.Emitters.MethodEmitter,Castle.DynamicProxy.Generators.Emitters.SimpleAST.Reference):this (Tier0-FullOpts)
          16 (1.46 % of base) : 6583.dasm - Newtonsoft.Json.Utilities.EnumUtils:InitializeValuesAndNames(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,Newtonsoft.Json.Serialization.NamingStrategy]):Newtonsoft.Json.Utilities.EnumInfo (Tier0-FullOpts)
          16 (0.61 % of base) : 42322.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
          16 (4.89 % of base) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
          16 (4.89 % of base) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
          14 (4.73 % of base) : 17283.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
          13 (3.08 % of base) : 36876.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)

Top method improvements (bytes):
         -69 (-1.78 % of base) : 31320.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
         -28 (-1.07 % of base) : 10624.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -25 (-0.96 % of base) : 5300.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 40944.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 37829.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 18132.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 22745.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 24021.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 39561.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -25 (-0.96 % of base) : 8095.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -21 (-5.16 % of base) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
         -20 (-0.78 % of base) : 27834.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(uint,int,uint,int,byref,byref):int (Tier1)
         -19 (-2.39 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -15 (-1.54 % of base) : 43419.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (Tier0-FullOpts)
         -12 (-2.39 % of base) : 13478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -10 (-2.24 % of base) : 27783.dasm - System.Linq.Parallel.SortHelper`2[double,int]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[int],System.Collections.Generic.List`1[double],ubyte):this (Tier0-FullOpts)
         -10 (-2.00 % of base) : 6912.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          -8 (-0.83 % of base) : 27435.dasm - System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask`2[int,int]:SpoolingWork():this (Tier0-FullOpts)
          -8 (-1.61 % of base) : 3839.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method regressions (percentages):
          57 (16.81 % of base) : 43285.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (Tier0-FullOpts)
          17 (6.20 % of base) : 49275.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (Tier0-FullOpts)
          16 (4.89 % of base) : 14413.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
          16 (4.89 % of base) : 2667.dasm - Xunit.Sdk.XunitTestCaseRunner:.ctor(Xunit.Sdk.IXunitTestCase,System.String,System.String,System.Object[],System.Object[],Xunit.Sdk.IMessageBus,Xunit.Sdk.ExceptionAggregator,System.Threading.CancellationTokenSource):this (Tier0-FullOpts)
          14 (4.73 % of base) : 17283.dasm - System.Runtime.Serialization.CodeGenerator:BeginMethod(System.String,System.Type,ubyte):this (Tier0-FullOpts)
           4 (4.08 % of base) : 38105.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 41041.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 42748.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 44043.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 48396.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 16577.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 19466.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 19689.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
           4 (4.08 % of base) : 21680.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(uint,System.Object):System.Object (Tier1)
         249 (3.91 % of base) : 20424.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
          13 (3.08 % of base) : 36876.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
          13 (3.07 % of base) : 23565.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
          19 (2.54 % of base) : 1135.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
          19 (2.54 % of base) : 4651.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
           2 (2.13 % of base) : 11034.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(uint,System.Object):System.Object (Tier1)

Top method improvements (percentages):
         -26 (-5.37 % of base) : 17806.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
         -21 (-5.16 % of base) : 4392.dasm - System.Text.Ascii:WidenAsciiToUtf16(uint,uint,uint):uint (Tier1)
          -6 (-3.51 % of base) : 22150.dasm - System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
          -6 (-2.96 % of base) : 14622.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
          -6 (-2.96 % of base) : 43053.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
         -19 (-2.39 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
         -12 (-2.39 % of base) : 13478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -10 (-2.24 % of base) : 27783.dasm - System.Linq.Parallel.SortHelper`2[double,int]:QuickSortIndicesInPlace(System.Linq.Parallel.GrowingArray`1[int],System.Collections.Generic.List`1[double],ubyte):this (Tier0-FullOpts)
         -10 (-2.00 % of base) : 6912.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          -2 (-1.98 % of base) : 48332.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          -2 (-1.98 % of base) : 6037.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          -2 (-1.98 % of base) : 18386.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          -2 (-1.98 % of base) : 23735.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          -2 (-1.98 % of base) : 2811.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
          -2 (-1.98 % of base) : 34438.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(uint,System.Object):System.Object (Tier1)
         -69 (-1.78 % of base) : 31320.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
          -8 (-1.61 % of base) : 3839.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -15 (-1.54 % of base) : 43419.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (Tier0-FullOpts)
          -2 (-1.47 % of base) : 3982.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
          -2 (-1.47 % of base) : 544.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented 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: 107805173 (overridden on cmd)
Total bytes of diff: 107806514 (overridden on cmd)
Total bytes of delta: 1341 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         249 : 145746.dasm (3.91 % of base)
         181 : 12804.dasm (3.90 % of base)
         181 : 35532.dasm (3.90 % of base)
         117 : 62705.dasm (2.92 % of base)
         112 : 77423.dasm (0.46 % of base)
         100 : 119684.dasm (3.79 % of base)
          87 : 311700.dasm (2.48 % of base)
          82 : 116173.dasm (6.67 % of base)
          74 : 315460.dasm (2.36 % of base)
          71 : 196781.dasm (8.53 % of base)
          71 : 209442.dasm (3.25 % of base)
          63 : 95671.dasm (4.31 % of base)
          57 : 114730.dasm (16.81 % of base)
          57 : 218178.dasm (2.00 % of base)
          57 : 80209.dasm (16.81 % of base)
          55 : 315462.dasm (3.39 % of base)
          54 : 102191.dasm (4.49 % of base)
          54 : 101169.dasm (4.55 % of base)
          54 : 40274.dasm (43.20 % of base)
          53 : 315384.dasm (3.50 % of base)

Top file improvements (bytes):
        -269 : 191227.dasm (-3.33 % of base)
        -269 : 39877.dasm (-3.33 % of base)
        -114 : 314357.dasm (-2.67 % of base)
        -113 : 315548.dasm (-4.18 % of base)
        -110 : 315640.dasm (-3.79 % of base)
        -104 : 315609.dasm (-6.55 % of base)
        -101 : 37839.dasm (-1.50 % of base)
        -100 : 325030.dasm (-2.77 % of base)
         -90 : 73400.dasm (-3.73 % of base)
         -81 : 315459.dasm (-2.60 % of base)
         -78 : 315468.dasm (-3.38 % of base)
         -73 : 315471.dasm (-3.27 % of base)
         -72 : 325355.dasm (-4.89 % of base)
         -71 : 117000.dasm (-6.67 % of base)
         -69 : 24850.dasm (-1.38 % of base)
         -69 : 213116.dasm (-1.78 % of base)
         -66 : 29197.dasm (-1.30 % of base)
         -66 : 315604.dasm (-4.87 % of base)
         -66 : 14154.dasm (-1.30 % of base)
         -61 : 329278.dasm (-3.44 % of base)

75 total files with Code Size differences (37 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         249 (3.91 % of base) : 145746.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         181 (3.90 % of base) : 12804.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         181 (3.90 % of base) : 35532.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         117 (2.92 % of base) : 62705.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedExplicitImplementationForwardingMethod]:this (FullOpts)
         112 (0.46 % of base) : 77423.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)
         100 (3.79 % of base) : 119684.dasm - System.Data.XmlDataLoader:LoadTable(System.Data.DataTable,ubyte):this (FullOpts)
          87 (2.48 % of base) : 311700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex888_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          82 (6.67 % of base) : 116173.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          74 (2.36 % of base) : 315460.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2439_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          71 (3.25 % of base) : 209442.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
          71 (8.53 % of base) : 196781.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
          63 (4.31 % of base) : 95671.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
          57 (2.00 % of base) : 218178.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
          57 (16.81 % of base) : 114730.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          57 (16.81 % of base) : 80209.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          55 (3.39 % of base) : 315462.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3916_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          54 (43.20 % of base) : 40274.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          54 (4.49 % of base) : 102191.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
          54 (4.55 % of base) : 101169.dasm - System.ComponentModel.Composition.ReflectionModel.GenericSpecializationPartCreationInfo:BuildMembersTable(System.Collections.Generic.List`1[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo]):System.Collections.Generic.Dictionary`2[System.ComponentModel.Composition.ReflectionModel.LazyMemberInfo,System.Reflection.MemberInfo[]]:this (FullOpts)
          53 (3.50 % of base) : 315384.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3828_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -269 (-3.33 % of base) : 191227.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        -269 (-3.33 % of base) : 39877.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
        -114 (-2.67 % of base) : 314357.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -113 (-4.18 % of base) : 315548.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2574_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -110 (-3.79 % of base) : 315640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2706_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -104 (-6.55 % of base) : 315609.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2664_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -101 (-1.50 % of base) : 37839.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression:this (FullOpts)
        -100 (-2.77 % of base) : 325030.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30735_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -90 (-3.73 % of base) : 73400.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|231_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
         -81 (-2.60 % of base) : 315459.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2438_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -78 (-3.38 % of base) : 315468.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3919_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -73 (-3.27 % of base) : 315471.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2455_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -72 (-4.89 % of base) : 325355.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -71 (-6.67 % of base) : 117000.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -69 (-1.38 % of base) : 24850.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
         -69 (-1.78 % of base) : 213116.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
         -66 (-1.30 % of base) : 29197.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
         -66 (-1.30 % of base) : 14154.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
         -66 (-4.87 % of base) : 315604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2658_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -61 (-3.44 % of base) : 329278.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32794_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method regressions (percentages):
          54 (43.20 % of base) : 40274.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:CompareArgInfos(System.Type[],System.Type[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[],Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[]):ubyte (FullOpts)
          57 (16.81 % of base) : 114730.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          57 (16.81 % of base) : 80209.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          19 (11.18 % of base) : 101265.dasm - System.UnitTesting.CompositionAssert:ThrowsErrors(int[],int,System.Action) (FullOpts)
          24 (10.13 % of base) : 174193.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesEightByteSize(int) (FullOpts)
          33 (9.76 % of base) : 200462.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
          71 (8.53 % of base) : 196781.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:FindChoiceEnumValue(System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.EnumMapping,byref):System.String (FullOpts)
          20 (7.72 % of base) : 173741.dasm - System.SpanTests.SpanTests:ReverseValueTypeWithoutReferencesFourBytesSize(int) (FullOpts)
          47 (7.57 % of base) : 265272.dasm - System.ServiceModel.Syndication.Tests.CompareHelper:IsAllowableFailure(System.Xml.XmlNode):ubyte:this (FullOpts)
          30 (7.32 % of base) : 201920.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
          45 (6.86 % of base) : 10424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
          82 (6.67 % of base) : 116173.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          45 (6.66 % of base) : 24212.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
          10 (6.29 % of base) : 115392.dasm - System.Data.ProviderBase.FieldNameLookup:.ctor(System.Data.IDataRecord,int):this (FullOpts)
          12 (6.25 % of base) : 51722.dasm - Stashbox.Expressions.Compile.Emitters.Emitter:BuildLocals(Stashbox.Utils.Data.ExpandableArray`1[System.Linq.Expressions.Expression],System.Reflection.Emit.ILGenerator):System.Reflection.Emit.LocalBuilder[] (FullOpts)
          17 (6.20 % of base) : 196548.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
          17 (6.20 % of base) : 154647.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
          32 (5.36 % of base) : 160388.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],int,int][],System.Linq.Parallel.HashJoinOutputKeyBuilder`3[int,int,int],System.Collections.Generic.IComparer`1[int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
          47 (5.20 % of base) : 200634.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
          30 (5.05 % of base) : 61797.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForBadNonTrailingNamedArgument(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Nullable`1[int] (FullOpts)

Top method improvements (percentages):
         -43 (-12.91 % of base) : 215942.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
         -43 (-12.91 % of base) : 216028.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
         -14 (-8.09 % of base) : 200557.dasm - System.Xml.XmlDiff.XmlDiffDocument:CompareText(System.String,System.String):int:this (FullOpts)
         -71 (-6.67 % of base) : 117000.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
        -104 (-6.55 % of base) : 315609.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2664_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -38 (-5.53 % of base) : 38837.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -23 (-5.53 % of base) : 117610.dasm - System.Data.DataSet:Load(System.Data.IDataReader,int,System.String[]):this (FullOpts)
         -26 (-5.37 % of base) : 126653.dasm - System.Xml.XmlConverter:TryParseSingle(ubyte[],int,int,byref):ubyte (FullOpts)
         -72 (-4.89 % of base) : 325355.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -66 (-4.87 % of base) : 315604.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2658_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -113 (-4.18 % of base) : 315548.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2574_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -19 (-4.08 % of base) : 229539.dasm - System.Xml.XmlConverter:TryParseDouble(ubyte[],int,int,byref):ubyte (FullOpts)
         -12 (-4.01 % of base) : 53877.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ReflectionFactoryServiceOnlySpan(System.Reflection.ConstructorInvoker,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+FactoryParameterContext[],System.Type,System.IServiceProvider):System.Object (FullOpts)
         -18 (-3.85 % of base) : 119918.dasm - System.Data.OleDb.RowBinding:SetBindings(System.Data.OleDb.OleDbDataReader,System.Data.OleDb.Bindings,int,int,System.Data.OleDb.OleDbParameter[],System.Data.OleDb.tagDBBINDING[],ubyte):System.Data.OleDb.ColumnBinding[]:this (FullOpts)
        -110 (-3.79 % of base) : 315640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2706_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -90 (-3.73 % of base) : 73400.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|231_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
         -16 (-3.60 % of base) : 140758.dasm - Microsoft.FSharp.Reflection.Impl:mkTupleTypeNetStandard(System.Type[],System.Type[]):System.Type (FullOpts)
         -14 (-3.60 % of base) : 70204.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
         -14 (-3.60 % of base) : 64169.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
         -43 (-3.49 % of base) : 29731.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:MakeArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (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: 11475105 (overridden on cmd)
Total bytes of diff: 11475324 (overridden on cmd)
Total bytes of delta: 219 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         144 : 15701.dasm (10.60 % of base)
         122 : 29554.dasm (4.63 % of base)
          78 : 11668.dasm (2.66 % of base)
          60 : 17597.dasm (0.81 % of base)
          45 : 26846.dasm (6.90 % of base)
          45 : 18145.dasm (1.58 % of base)
          45 : 23888.dasm (1.70 % of base)
          44 : 33392.dasm (1.01 % of base)
          42 : 16714.dasm (3.22 % of base)
          39 : 13643.dasm (2.24 % of base)
          39 : 29254.dasm (0.94 % of base)
          31 : 1629.dasm (4.72 % of base)
          31 : 43.dasm (4.72 % of base)
          29 : 24641.dasm (0.55 % of base)
          27 : 3281.dasm (9.22 % of base)
          27 : 525.dasm (8.79 % of base)
          25 : 6605.dasm (3.62 % of base)
          19 : 25424.dasm (4.75 % of base)
          16 : 23912.dasm (2.64 % of base)
          16 : 27283.dasm (2.64 % of base)

Top file improvements (bytes):
        -276 : 9819.dasm (-2.90 % of base)
        -141 : 7388.dasm (-0.20 % of base)
         -72 : 32173.dasm (-2.93 % of base)
         -53 : 26172.dasm (-1.06 % of base)
         -41 : 24459.dasm (-0.92 % of base)
         -31 : 1633.dasm (-1.83 % of base)
         -31 : 28969.dasm (-2.09 % of base)
         -31 : 47.dasm (-1.83 % of base)
         -27 : 17876.dasm (-0.96 % of base)
         -22 : 9038.dasm (-0.33 % of base)
         -21 : 35560.dasm (-7.61 % of base)
         -20 : 31319.dasm (-3.02 % of base)
         -19 : 7612.dasm (-1.66 % of base)
         -19 : 12218.dasm (-6.03 % of base)
         -19 : 35552.dasm (-1.66 % of base)
         -16 : 17327.dasm (-0.23 % of base)
         -15 : 31582.dasm (-2.09 % of base)
         -12 : 18029.dasm (-1.25 % of base)
         -10 : 23684.dasm (-1.38 % of base)
          -9 : 17152.dasm (-2.85 % of base)

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

Top method regressions (bytes):
         144 (10.60 % of base) : 15701.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
         122 (4.63 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          78 (2.66 % of base) : 11668.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
          60 (0.81 % of base) : 17597.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          45 (6.90 % of base) : 26846.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
          45 (1.70 % of base) : 23888.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          45 (1.58 % of base) : 18145.dasm - System.Uri:CheckAuthorityHelper(uint,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
          44 (1.01 % of base) : 33392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          42 (3.22 % of base) : 16714.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          39 (2.24 % of base) : 13643.dasm - FSharp.Compiler.CheckExpressions:checkAndRewrite@3647(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
          39 (0.94 % of base) : 29254.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
          31 (4.72 % of base) : 1629.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          29 (0.55 % of base) : 24641.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
          27 (9.22 % of base) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          27 (8.79 % of base) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          25 (3.62 % of base) : 6605.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
          19 (4.75 % of base) : 25424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
          16 (3.14 % of base) : 8034.dasm - <StartupCode$FSharp-Compiler-Service>.$IncrementalBuild+TryCreateIncrementalBuilderForProjectOptions@1627-9:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder]):FSharp.Compiler.BuildGraph+NodeCode`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder],FSharp.Compiler.Diagnostics.FSharpDiagnostic[]]]:this (FullOpts)
          16 (4.36 % of base) : 23689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:ConstructMapping(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.SmallDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations] (FullOpts)

Top method improvements (bytes):
        -276 (-2.90 % of base) : 9819.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
        -141 (-0.20 % of base) : 7388.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
         -72 (-2.93 % of base) : 32173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -53 (-1.06 % of base) : 26172.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
         -41 (-0.92 % of base) : 24459.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -31 (-2.09 % of base) : 28969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -31 (-1.83 % of base) : 1633.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -27 (-0.96 % of base) : 17876.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
         -22 (-0.33 % of base) : 9038.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeEqualsType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -21 (-7.61 % of base) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
         -20 (-3.02 % of base) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -19 (-6.03 % of base) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
         -19 (-1.66 % of base) : 7612.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -19 (-1.66 % of base) : 35552.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -16 (-0.23 % of base) : 17327.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)
         -15 (-2.09 % of base) : 31582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:AccessTupleFields(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -12 (-1.25 % of base) : 18029.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
         -10 (-1.38 % of base) : 23684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
          -9 (-2.85 % of base) : 17152.dasm - Microsoft.ML.Data.RowToRowMapperTransform:GetRowCursorSet(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],int,System.Random):Microsoft.ML.DataViewRowCursor[]:this (FullOpts)

Top method regressions (percentages):
         144 (10.60 % of base) : 15701.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
          27 (9.22 % of base) : 3281.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          27 (8.79 % of base) : 525.dasm - System.String:TrimHelper(uint,int,int):System.String:this (FullOpts)
          10 (7.35 % of base) : 31264.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:IsBeginningOfParamArray(int,int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[int],byref):ubyte (FullOpts)
          45 (6.90 % of base) : 26846.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:FailsConstraintChecks(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):ubyte:this (FullOpts)
          19 (4.75 % of base) : 25424.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
          31 (4.72 % of base) : 1629.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          31 (4.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         122 (4.63 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          16 (4.36 % of base) : 23689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:ConstructMapping(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.SmallDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations] (FullOpts)
          25 (3.62 % of base) : 6605.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
          12 (3.47 % of base) : 22311.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNameParser:TryParseFileTypeName(System.String,byref,byref,byref):ubyte (FullOpts)
          42 (3.22 % of base) : 16714.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          16 (3.14 % of base) : 8034.dasm - <StartupCode$FSharp-Compiler-Service>.$IncrementalBuild+TryCreateIncrementalBuilderForProjectOptions@1627-9:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder]):FSharp.Compiler.BuildGraph+NodeCode`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuilder],FSharp.Compiler.Diagnostics.FSharpDiagnostic[]]]:this (FullOpts)
          12 (3.12 % of base) : 12747.dasm - Microsoft.FSharp.Core.PrintfImpl+FormatString:findNextFormatSpecifier(System.String,byref):System.String (FullOpts)
          78 (2.66 % of base) : 11668.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
          16 (2.64 % of base) : 23912.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          16 (2.64 % of base) : 27283.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          39 (2.24 % of base) : 13643.dasm - FSharp.Compiler.CheckExpressions:checkAndRewrite@3647(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
           6 (1.99 % of base) : 14719.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)

Top method improvements (percentages):
         -21 (-7.61 % of base) : 35560.dasm - System.Management.Automation.ScriptBlock+SuspiciousContentChecker:Match(System.String):System.String (FullOpts)
         -19 (-6.03 % of base) : 12218.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckDecisionTreeTargets(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+DecisionTreeTarget[],FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
         -20 (-3.02 % of base) : 31319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -72 (-2.93 % of base) : 32173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
        -276 (-2.90 % of base) : 9819.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
          -9 (-2.85 % of base) : 17152.dasm - Microsoft.ML.Data.RowToRowMapperTransform:GetRowCursorSet(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],int,System.Random):Microsoft.ML.DataViewRowCursor[]:this (FullOpts)
          -7 (-2.55 % of base) : 25418.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForBadNonTrailingNamedArgument(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap):System.Nullable`1[int] (FullOpts)
          -9 (-2.26 % of base) : 15298.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgb24](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgb24][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
         -15 (-2.09 % of base) : 31582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:AccessTupleFields(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -31 (-2.09 % of base) : 28969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -31 (-1.83 % of base) : 1633.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -31 (-1.83 % of base) : 47.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (FullOpts)
         -19 (-1.66 % of base) : 7612.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -19 (-1.66 % of base) : 35552.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
          -8 (-1.57 % of base) : 9503.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
         -10 (-1.38 % of base) : 23684.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-1.25 % of base) : 18029.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
         -53 (-1.06 % of base) : 26172.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
         -27 (-0.96 % of base) : 17876.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
         -41 (-0.92 % of base) : 24459.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)