Assembly Diffs

linux arm

Diffs are based on 2,239,382 contexts (829,328 MinOpts, 1,410,054 FullOpts).

MISSED contexts: base: 71,273 (3.08%), diff: 71,282 (3.08%)

Overall (-12,784 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,290,340 -314
benchmarks.run_pgo.linux.arm.checked.mch 63,958,726 +404
benchmarks.run_tiered.linux.arm.checked.mch 21,546,378 -312
coreclr_tests.run.linux.arm.checked.mch 321,753,452 -1,118
libraries.crossgen2.linux.arm.checked.mch 34,522,594 -862
libraries.pmi.linux.arm.checked.mch 49,852,844 -1,144
libraries_tests.run.linux.arm.Release.mch 243,854,234 -6,772
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,520,720 -2,552
realworld.run.linux.arm.checked.mch 13,606,688 -114

FullOpts (-12,784 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,901,138 -314
benchmarks.run_pgo.linux.arm.checked.mch 52,758,760 +404
benchmarks.run_tiered.linux.arm.checked.mch 12,893,378 -312
coreclr_tests.run.linux.arm.checked.mch 109,275,864 -1,118
libraries.crossgen2.linux.arm.checked.mch 34,521,364 -862
libraries.pmi.linux.arm.checked.mch 49,746,620 -1,144
libraries_tests.run.linux.arm.Release.mch 122,885,102 -6,772
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,449,984 -2,552
realworld.run.linux.arm.checked.mch 13,171,388 -114

Example diffs

benchmarks.run.linux.arm.checked.mch

-18 (-13.85%) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-16 (-8.42%) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> r0 -; V01 arg1 [V01,T06] ( 5, 18 ) int -> r4 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> r7 -; V04 loc1 [V04,T01] ( 14,104 ) int -> r1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> r0 +; V01 arg1 [V01,T07] ( 5, 18 ) int -> r4 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> r7 +; V04 loc1 [V04,T01] ( 11, 98 ) int -> r1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> lr
-; V06 loc3 [V06,T10] ( 4, 8 ) int -> r12
+; V06 loc3 [V06,T11] ( 4, 8 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> r0 "arg temp" -; V10 cse0 [V10,T02] ( 11, 51 ) byref -> r6 hoist "CSE - aggressive" -; V11 cse1 [V11,T03] ( 7, 46 ) int -> r2 "CSE - aggressive" -; V12 cse2 [V12,T12] ( 3, 6 ) int -> r1 "CSE - aggressive" -; V13 cse3 [V13,T09] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V08 tmp1 [V08,T12] ( 2, 8 ) int -> r12 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> r0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> r12 "CSE - aggressive" +; V11 cse1 [V11,T02] ( 10, 49 ) byref -> r6 hoist "CSE - aggressive" +; V12 cse2 [V12,T03] ( 6, 44 ) int -> r2 "CSE - aggressive" +; V13 cse3 [V13,T13] ( 3, 6 ) int -> r1 "CSE - aggressive" +; V14 cse4 [V14,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -70,7 +71,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by ;; size=2 bbWeight=8 PerfScore 8.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r1, r7
- ble SHORT G_M36260_IG10
+ ble SHORT G_M36260_IG11
cmp r1, r2 bhs SHORT G_M36260_IG15 lsl r12, r1, 2 @@ -79,21 +80,15 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, b bge SHORT G_M36260_IG08 ;; size=20 bbWeight=16 PerfScore 128.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
- cmp r7, r1 - bge SHORT G_M36260_IG11
cmp r7, r2 bhs SHORT G_M36260_IG15
- lsl r12, r7, 2 - ldr r12, [r6+r12] - cmp r1, r2 - bhs SHORT G_M36260_IG15 - lsl r8, r1, 2
+ lsl r8, r7, 2
ldr r8, [r6+r8] lsl r9, r7, 2
- str r8, [r6+r9] - lsl r8, r1, 2 - str r12, [r6+r8] - ;; size=44 bbWeight=2 PerfScore 28.00
+ str r12, [r6+r9] + lsl r12, r1, 2 + str r8, [r6+r12] + ;; size=28 bbWeight=2 PerfScore 16.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r7, r1 blt SHORT G_M36260_IG06 @@ -104,9 +99,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by cmp r7, r2 bhs SHORT G_M36260_IG15 lsls r1, r7, 2
- ldr r12, [r6+r1]
+ ldr r8, [r6+r1]
str lr, [r6+r1]
- str r12, [r6+r3]
+ str r8, [r6+r3]
;; size=18 bbWeight=2 PerfScore 12.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz subs r1, r7, 1 @@ -134,7 +129,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 12, PerfScore 418.00, instruction count 71, allocated bytes for code 190 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 174, prolog size 12, PerfScore 406.00, instruction count 65, allocated bytes for code 174 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-6.12%) : 15956.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)

@@ -7,19 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> -; V01 arg1 [V01,T07] ( 5, 4 ) int -> r1 single-def -; V02 arg2 [V02,T05] ( 6, 4.50) int -> r4 single-def -; V03 loc0 [V03,T00] ( 17, 25.50) int -> r6 -; V04 loc1 [V04,T01] ( 14, 24 ) int -> r2
+; V00 arg0 [V00,T07] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> +; V01 arg1 [V01,T08] ( 5, 4 ) int -> r1 single-def +; V02 arg2 [V02,T06] ( 6, 4.50) int -> r4 single-def +; V03 loc0 [V03,T00] ( 16, 25 ) int -> r6 +; V04 loc1 [V04,T01] ( 11, 22.50) int -> r2
; V05 loc2 [V05,T04] ( 4, 9 ) int -> r12 single-def
-; V06 loc3 [V06,T08] ( 4, 2 ) int -> r7
+; V06 loc3 [V06,T09] ( 4, 2 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 2 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T03] ( 7, 10.50) int -> r0 "CSE - aggressive" -; V10 cse1 [V10,T02] ( 11, 12.50) byref -> r3 "CSE - aggressive" -; V11 cse2 [V11,T10] ( 3, 1.50) int -> r2 "CSE - moderate" -; V12 cse3 [V12,T11] ( 3, 1.50) int -> lr "CSE - moderate"
+; V08 tmp1 [V08,T10] ( 2, 2 ) int -> r7 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r7 "CSE - aggressive" +; V10 cse1 [V10,T03] ( 6, 10 ) int -> r0 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 10, 12 ) byref -> r3 "CSE - aggressive" +; V12 cse3 [V12,T11] ( 3, 1.50) int -> r2 "CSE - moderate" +; V13 cse4 [V13,T12] ( 3, 1.50) int -> lr "CSE - moderate"
; ; Lcl frame size = 0 @@ -72,7 +73,7 @@ G_M63260_IG08: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r2, r6
- ble SHORT G_M63260_IG10
+ ble SHORT G_M63260_IG11
cmp r2, r0 bhs SHORT G_M63260_IG14 lsls r7, r2, 2 @@ -81,21 +82,15 @@ G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by bge SHORT G_M63260_IG08 ;; size=16 bbWeight=4 PerfScore 32.00 G_M63260_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz
- cmp r6, r2 - bge SHORT G_M63260_IG11
cmp r6, r0 bhs SHORT G_M63260_IG14
- lsls r7, r6, 2 - ldr r7, [r3+r7] - cmp r2, r0 - bhs SHORT G_M63260_IG14 - lsl r8, r2, 2
+ lsl r8, r6, 2
ldr r8, [r3+r8] lsl r9, r6, 2
- str r8, [r3+r9] - lsl r8, r2, 2 - str r7, [r3+r8] - ;; size=40 bbWeight=0.50 PerfScore 7.00
+ str r7, [r3+r9] + lsls r7, r2, 2 + str r8, [r3+r7] + ;; size=26 bbWeight=0.50 PerfScore 4.00
G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r6, r2 blt SHORT G_M63260_IG06 @@ -104,10 +99,10 @@ G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, cmp r6, r0 bhs SHORT G_M63260_IG14 lsls r2, r6, 2
- ldr r7, [r3+r2]
+ ldr r8, [r3+r2]
str r12, [r3+r2]
- str r7, [r3+lr] - ;; size=24 bbWeight=0.50 PerfScore 5.00
+ str r8, [r3+lr] + ;; size=26 bbWeight=0.50 PerfScore 5.00
G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; byrRegs -[r3] subs r2, r6, 1 @@ -141,7 +136,7 @@ G_M63260_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 99.00, instruction count 77, allocated bytes for code 196 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
+; Total bytes of code 184, prolog size 12, PerfScore 96.00, instruction count 71, allocated bytes for code 184 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+1.40%) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)

@@ -9,123 +9,124 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 13, 9.50) ref -> r5 class-hnd single-def <System.String>
-; V01 arg1 [V01,T27] ( 3, 2.50) ubyte -> r7 single-def -; V02 arg2 [V02,T10] ( 5, 8.50) ubyte -> r6 single-def
+; V01 arg1 [V01,T28] ( 3, 2.50) ubyte -> r7 single-def +; V02 arg2 [V02,T14] ( 4, 6.50) ubyte -> r6 single-def
; V03 loc0 [V03,T01] ( 27, 33 ) ref -> r9 class-hnd <System.Text.StringBuilder> ; V04 loc1 [V04,T08] ( 9, 11 ) int -> r10
-; V05 loc2 [V05,T07] ( 11, 11.50) int -> [sp+0x24] -; V06 loc3 [V06,T00] ( 23, 44.50) int -> [sp+0x20] -; V07 loc4 [V07,T48] ( 3, 1.50) int -> [sp+0x1C] spill-single-def -; V08 loc5 [V08,T44] ( 3, 1.50) ref -> [sp+0x08] class-hnd spill-single-def <System.Text.RegularExpressions.MatchCollection> -; V09 loc6 [V09,T17] ( 9, 7.50) ref -> [sp+0x04] class-hnd <System.Collections.IEnumerator> -; V10 loc7 [V10,T14] ( 8, 8.50) int -> [sp+0x18]
+; V05 loc2 [V05,T07] ( 11, 11.50) int -> [sp+0x2C] +; V06 loc3 [V06,T00] ( 18, 34.50) int -> [sp+0x28] +; V07 loc4 [V07,T49] ( 3, 1.50) int -> [sp+0x24] spill-single-def +; V08 loc5 [V08,T45] ( 3, 1.50) ref -> [sp+0x0C] class-hnd spill-single-def <System.Text.RegularExpressions.MatchCollection> +; V09 loc6 [V09,T18] ( 9, 7.50) ref -> [sp+0x08] class-hnd <System.Collections.IEnumerator> +; V10 loc7 [V10,T13] ( 8, 8.50) int -> [sp+0x20]
;* V11 loc8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V12 loc9 [V12,T58] ( 2, 1 ) int -> r1
+; V12 loc9 [V12,T59] ( 2, 1 ) int -> r1
;* V13 loc10 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 loc11 [V14,T59] ( 2, 1 ) int -> r1
+; V14 loc11 [V14,T60] ( 2, 1 ) int -> r1
;* V15 loc12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.StringBuilder>
-; V16 loc13 [V16 ] ( 16, 20 ) struct (12) [sp+0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.StringBuilder+AppendInterpolatedStringHandler>
+; V16 loc13 [V16 ] ( 16, 20 ) struct (12) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.StringBuilder+AppendInterpolatedStringHandler>
;* V17 loc14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V18 loc15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V19 loc16 [V19,T31] ( 2, 4 ) int -> r1
+; V19 loc16 [V19,T32] ( 2, 4 ) int -> r1
;* V20 loc17 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 loc18 [V21,T32] ( 2, 4 ) int -> r1
+; V21 loc18 [V21,T33] ( 2, 4 ) int -> r1
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T13] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1" -; V24 tmp2 [V24,T26] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
+; V23 tmp1 [V23,T12] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1" +; V24 tmp2 [V24,T27] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
; V25 tmp3 [V25,T02] ( 5, 15 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> ; V26 tmp4 [V26,T04] ( 3, 12 ) ref -> r9 class-hnd exact "NewObj constructor temp" <System.Text.StringBuilder>
-; V27 tmp5 [V27,T39] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" -; V28 tmp6 [V28,T55] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" -; V29 tmp7 [V29,T34] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> -; V30 tmp8 [V30,T36] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder> -; V31 tmp9 [V31,T40] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" -; V32 tmp10 [V32,T56] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" -; V33 tmp11 [V33,T35] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> -;* V34 tmp12 [V34,T61] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V27 tmp5 [V27,T40] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" +; V28 tmp6 [V28,T56] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" +; V29 tmp7 [V29,T35] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> +; V30 tmp8 [V30,T37] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder> +; V31 tmp9 [V31,T41] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" +; V32 tmp10 [V32,T57] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" +; V33 tmp11 [V33,T36] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> +;* V34 tmp12 [V34,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V36 tmp14 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp15 [V37,T28] ( 4, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCollection+Enumerator> -;* V38 tmp16 [V38,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V39 tmp17 [V39,T37] ( 3, 3 ) ushort -> r2 "Inlining Arg"
+; V37 tmp15 [V37,T29] ( 4, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCollection+Enumerator> +;* V38 tmp16 [V38,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V39 tmp17 [V39,T38] ( 3, 3 ) ushort -> r2 "Inlining Arg"
;* V40 tmp18 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V41 tmp19 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V42 tmp20 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V43 tmp21 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V44 tmp22 [V44,T45] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V45 tmp23 [V45,T49] ( 3, 1.50) int -> r2 "Inline stloc first use temp" -; V46 tmp24 [V46,T41] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" -; V47 tmp25 [V47,T46] ( 3, 1.50) byref -> r0 single-def "Inline stloc first use temp"
+; V44 tmp22 [V44,T46] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V45 tmp23 [V45,T50] ( 3, 1.50) int -> r2 "Inline stloc first use temp" +; V46 tmp24 [V46,T42] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +; V47 tmp25 [V47,T47] ( 3, 1.50) byref -> r0 single-def "Inline stloc first use temp"
;* V48 tmp26 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V49 tmp27 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V51 tmp29 [V51,T50] ( 3, 1.50) int -> r1 "Inline stloc first use temp" -; V52 tmp30 [V52,T47] ( 3, 1.50) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V53 tmp31 [V53,T16] ( 2, 8 ) ushort -> r0 "Inlining Arg"
+; V51 tmp29 [V51,T51] ( 3, 1.50) int -> r1 "Inline stloc first use temp" +; V52 tmp30 [V52,T48] ( 3, 1.50) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp31 [V53,T17] ( 2, 8 ) ushort -> r0 "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V55 tmp33 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V56 tmp34 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V57 tmp35 [V57,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V57 tmp35 [V57,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V58 tmp36 [V58,T05] ( 3, 12 ) ushort -> r0 "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V60 tmp38 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V61 tmp39 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V62 tmp40 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V63 tmp41 [V63,T18] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V64 tmp42 [V64,T21] ( 3, 6 ) int -> r2 "Inline stloc first use temp" -; V65 tmp43 [V65,T15] ( 2, 8 ) byref -> r1 "Inlining Arg" -; V66 tmp44 [V66,T19] ( 3, 6 ) byref -> r0 "Inline stloc first use temp"
+; V63 tmp41 [V63,T19] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V64 tmp42 [V64,T22] ( 3, 6 ) int -> r2 "Inline stloc first use temp" +; V65 tmp43 [V65,T16] ( 2, 8 ) byref -> r1 "Inlining Arg" +; V66 tmp44 [V66,T20] ( 3, 6 ) byref -> r0 "Inline stloc first use temp"
;* V67 tmp45 [V67 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V70 tmp48 [V70,T22] ( 3, 6 ) int -> r1 "Inline stloc first use temp" -; V71 tmp49 [V71,T20] ( 3, 6 ) ref -> r3 class-hnd "Inline stloc first use temp" <<unknown class>> -; V72 tmp50 [V72 ] ( 8, 10 ) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V16._stringBuilder (fldOffset=0x0)" P-DEP -; V73 tmp51 [V73 ] ( 8, 10 ) ref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V16._provider (fldOffset=0x4)" P-DEP -; V74 tmp52 [V74 ] ( 8, 10 ) ubyte -> [sp+0x14] do-not-enreg[X] addr-exposed "field V16._hasCustomFormatter (fldOffset=0x8)" P-DEP
+; V70 tmp48 [V70,T23] ( 3, 6 ) int -> r1 "Inline stloc first use temp" +; V71 tmp49 [V71,T21] ( 3, 6 ) ref -> r3 class-hnd "Inline stloc first use temp" <<unknown class>> +; V72 tmp50 [V72 ] ( 8, 10 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V16._stringBuilder (fldOffset=0x0)" P-DEP +; V73 tmp51 [V73 ] ( 8, 10 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V16._provider (fldOffset=0x4)" P-DEP +; V74 tmp52 [V74 ] ( 8, 10 ) ubyte -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V16._hasCustomFormatter (fldOffset=0x8)" P-DEP
;* V75 tmp53 [V75 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP ;* V76 tmp54 [V76 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
-; V77 tmp55 [V77,T57] ( 2, 1 ) byref -> r1 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+; V77 tmp55 [V77,T58] ( 2, 1 ) byref -> r1 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp56 [V78 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP ;* V79 tmp57 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp58 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP ;* V81 tmp59 [V81 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V82 tmp60 [V82 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
-; V83 tmp61 [V83,T29] ( 2, 4 ) byref -> r1 "field V55._reference (fldOffset=0x0)" P-INDEP
+; V83 tmp61 [V83,T30] ( 2, 4 ) byref -> r12 "field V55._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp62 [V84 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x4)" P-INDEP ;* V85 tmp63 [V85 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp64 [V86 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP ;* V87 tmp65 [V87 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V88 tmp66 [V88 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP
-; V89 tmp67 [V89,T30] ( 2, 4 ) byref -> r1 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T31] ( 2, 4 ) byref -> r12 "field V60._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp68 [V90 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x4)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP
-; V93 tmp71 [V93,T42] ( 2, 2 ) ref -> r0 single-def "argument with side effect" -; V94 cse0 [V94,T23] ( 3, 6 ) int -> r0 "CSE - moderate" -; V95 cse1 [V95,T11] ( 5, 10 ) int -> r1 multi-def "CSE - aggressive" -; V96 cse2 [V96,T51] ( 3, 1.50) int -> r0 "CSE - conservative" -; V97 cse3 [V97,T52] ( 3, 1.50) int -> r0 "CSE - conservative" -; V98 cse4 [V98,T38] ( 5, 2.50) int -> r1 multi-def "CSE - conservative" -; V99 cse5 [V99,T53] ( 3, 1.50) int -> lr "CSE - conservative" -; V100 cse6 [V100,T60] ( 2, 1 ) int -> r2 "CSE - conservative" -; V101 cse7 [V101,T24] ( 3, 6 ) int -> r0 "CSE - moderate" -; V102 cse8 [V102,T54] ( 3, 1.50) int -> r0 "CSE - conservative" -; V103 cse9 [V103,T03] ( 9, 12 ) int -> r8 "CSE - aggressive" -; V104 cse10 [V104,T09] ( 7, 11 ) byref -> [sp+0x00] spill-single-def "CSE - aggressive" -; V105 cse11 [V105,T12] ( 5, 10 ) int -> r4 "CSE - moderate" -; V106 cse12 [V106,T25] ( 3, 6 ) int -> lr "CSE - moderate" -; V107 cse13 [V107,T33] ( 2, 4 ) int -> r2 "CSE - moderate"
+; V93 tmp71 [V93,T43] ( 2, 2 ) ref -> r0 single-def "argument with side effect" +; V94 cse0 [V94,T24] ( 3, 6 ) int -> r0 "CSE - moderate" +; V95 cse1 [V95,T10] ( 5, 10 ) int -> r1 multi-def "CSE - aggressive" +; V96 cse2 [V96,T52] ( 3, 1.50) int -> r0 "CSE - conservative" +; V97 cse3 [V97,T53] ( 3, 1.50) int -> r0 "CSE - conservative" +; V98 cse4 [V98,T39] ( 5, 2.50) int -> r1 multi-def "CSE - conservative" +; V99 cse5 [V99,T54] ( 3, 1.50) int -> lr "CSE - conservative" +; V100 cse6 [V100,T61] ( 2, 1 ) int -> r2 "CSE - conservative" +; V101 cse7 [V101,T25] ( 3, 6 ) int -> r0 "CSE - moderate" +; V102 cse8 [V102,T55] ( 3, 1.50) int -> r0 "CSE - conservative" +; V103 cse9 [V103,T15] ( 7, 8 ) int -> r8 "CSE - aggressive" +; V104 cse10 [V104,T09] ( 7, 11 ) byref -> [sp+0x04] spill-single-def "CSE - aggressive" +; V105 cse11 [V105,T03] ( 7, 14 ) int -> [sp+0x10] multi-def "CSE - aggressive" +; V106 cse12 [V106,T11] ( 5, 10 ) int -> r4 "CSE - moderate" +; V107 cse13 [V107,T26] ( 3, 6 ) int -> lr "CSE - moderate" +; V108 cse14 [V108,T34] ( 2, 4 ) int -> r2 "CSE - moderate"
;
-; Lcl frame size = 44
+; Lcl frame size = 52
G_M19720_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 44 - add r11, sp, 72
+ sub sp, 52 + add r11, sp, 80
movs r3, 0
- str r3, [sp+0x0C] // [V16 loc13] - str r3, [sp+0x10] // [V16 loc13+0x04]
+ str r3, [sp+0x14] // [V16 loc13] + str r3, [sp+0x18] // [V16 loc13+0x04]
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 @@ -142,12 +143,12 @@ G_M19720_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b mov r9, 0 mov r10, r8 movs r4, 0
- str r4, [sp+0x24] // [V05 loc2]
+ str r4, [sp+0x2C] // [V05 loc2]
movs r3, 0
- str r3, [sp+0x20] // [V06 loc3]
+ str r3, [sp+0x28] // [V06 loc3]
add lr, r5, 8 ; byrRegs +[lr]
- str lr, [sp] // [V104 cse10]
+ str lr, [sp+0x04] // [V104 cse10]
; GC ptr vars +{V104} mov r0, lr ; byrRegs +[r0] @@ -161,7 +162,7 @@ G_M19720_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ; byrRegs -[r0 lr] ; gcr arg pop 0 mov r3, r0
- str r3, [sp+0x1C] // [V07 loc4]
+ str r3, [sp+0x24] // [V07 loc4]
mov lr, 0 cmp r3, 0 blt SHORT G_M19720_IG08 @@ -174,7 +175,7 @@ G_M19720_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M19720_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 44
+ add sp, 52
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00 G_M19720_IG06: ; bbWeight=0.50, gcVars=0000000000000200 {V104}, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, gcvars, byref, isz @@ -185,7 +186,7 @@ G_M19720_IG06: ; bbWeight=0.50, gcVars=0000000000000200 {V104}, gcrefRegs ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M19720_IG58
+ bne G_M19720_IG59
;; size=20 bbWeight=0.50 PerfScore 3.00 G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref movw r0, 0xd1ff @@ -204,7 +205,7 @@ G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x08] // [V08 loc5]
+ str r3, [sp+0x0C] // [V08 loc5]
; GC ptr vars +{V08} ldrsb r0, [r3] ; gcrRegs -[r0] @@ -221,7 +222,7 @@ G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} adds r0, r2, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x08] // [V08 loc5]
+ ldr r1, [sp+0x0C] // [V08 loc5]
; gcrRegs +[r1] ...

+14 (+1.62%) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,16 +11,16 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> r5 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct ( 8) [r11-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 44,151.58) int -> r7
+; V03 loc2 [V03,T00] ( 46,185.58) int -> r7
; V04 loc3 [V04,T21] ( 4, 2 ) int -> r0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> r6
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r7 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r6 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T24] ( 2, 2 ) int -> r3 "Inlining Arg" ; V11 tmp4 [V11,T23] ( 2, 2 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T03] ( 6, 32 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T04] ( 6, 32 ) ref -> r7 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> r0 "impAppendStmt" ; V15 tmp8 [V15,T25] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -40,9 +40,9 @@ ; V29 cse2 [V29,T29] ( 2, 1 ) int -> r3 "CSE - moderate" ; V30 cse3 [V30,T11] ( 3, 12 ) int -> r0 "CSE - aggressive" ; V31 cse4 [V31,T10] ( 3, 12 ) ref -> r3 "CSE - aggressive"
-; V32 cse5 [V32,T04] ( 15, 30.54) int -> r6 "CSE - aggressive" -; V33 cse6 [V33,T02] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" -; V34 cse7 [V34,T01] ( 3, 48 ) int -> r3 "CSE - aggressive"
+; V32 cse5 [V32,T01] ( 17, 64.54) int -> r6 "CSE - aggressive" +; V33 cse6 [V33,T03] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" +; V34 cse7 [V34,T02] ( 3, 48 ) int -> r3 "CSE - aggressive"
; V35 cse8 [V35,T16] ( 4, 8 ) int -> r10 "CSE - aggressive" ; V36 cse9 [V36,T12] ( 3, 12 ) int -> r3 "CSE - aggressive" ; V37 cse10 [V37,T18] ( 2, 8 ) int -> r1 "CSE - aggressive" @@ -66,7 +66,7 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28069_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] cmp r0, 0
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=8 bbWeight=1 PerfScore 3.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x04] @@ -74,18 +74,18 @@ G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movs r3, 0 ldr r2, [r0+0x04] cmp r3, r2
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r5, [r0+0x08] ; gcrRegs +[r5] ldr r6, [r5+0x04] cmp r6, 100
- bgt G_M28069_IG31
+ bgt G_M28069_IG30
adds r0, r6, 2 ; gcrRegs -[r0] movs r3, 2 umull r3, r2, r0, r3 cmp r2, 0
- bne G_M28069_IG33
+ bne G_M28069_IG32
tst r3, r3 beq SHORT G_M28069_IG06 adds r3, 7 @@ -108,12 +108,12 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, 0
- blt G_M28069_IG35
+ blt G_M28069_IG34
str r3, [r9+0x08] // [V17 tmp10] str r0, [r9+0x0C] // [V18 tmp11] movs r7, 0 cmp r6, 0
- ble SHORT G_M28069_IG15
+ ble SHORT G_M28069_IG14
add r8, r5, 8 ; byrRegs +[r8] ;; size=24 bbWeight=0.50 PerfScore 4.00 @@ -121,107 +121,105 @@ G_M28069_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, lsls r0, r7, 1 ldrh r0, [r8+r0] cmp r0, 39
- bne SHORT G_M28069_IG11
+ bne SHORT G_M28069_IG10
;; size=10 bbWeight=4 PerfScore 16.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG33
ldrh r2, [r8+r3] strh r2, [r0+r3] adds r7, r7, 1 cmp r6, r7
- ble SHORT G_M28069_IG09
+ ble G_M28069_IG30 + cmp r7, r6 + bhs G_M28069_IG33
lsls r0, r7, 1 ; byrRegs -[r0] ldrh r0, [r8+r0] cmp r0, 39 bne SHORT G_M28069_IG08
- ;; size=38 bbWeight=16 PerfScore 224.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - cmp r6, r7 - bgt SHORT G_M28069_IG12 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4-r5] - ; byrRegs -[r8] - b SHORT G_M28069_IG31 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs +[r4-r5] - ; byrRegs +[r8]
+ ;; size=52 bbWeight=16 PerfScore 288.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + b SHORT G_M28069_IG11 + ;; size=2 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 121
- beq SHORT G_M28069_IG14
+ beq SHORT G_M28069_IG13
;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG33
ldrh r2, [r8+r3] strh r2, [r0+r3] adds r7, r7, 1 cmp r6, r7 bgt SHORT G_M28069_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0 r8]
- b SHORT G_M28069_IG15
+ b SHORT G_M28069_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 movs r2, 121 strh r2, [r0+r3] ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] subs r0, r6, 1 cmp r0, r7
- ble G_M28069_IG31
+ ble G_M28069_IG30
adds r0, r7, 1 cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
add r8, r5, 8 ; byrRegs +[r8] lsls r0, r7, 1 add r10, r0, 2 ldrh r0, [r8+r10] cmp r0, 121
- bne G_M28069_IG31
+ bne G_M28069_IG30
adds r0, r7, 2 cmp r6, r0
- ble SHORT G_M28069_IG16
+ ble SHORT G_M28069_IG15
adds r0, r7, 2 cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
lsls r0, r7, 1 adds r0, r0, 4 ldrh r0, [r8+r0] cmp r0, 121
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=64 bbWeight=0.50 PerfScore 11.50
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 3 ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- blt SHORT G_M28069_IG17
+ blt SHORT G_M28069_IG16
movs r0, 0
- b SHORT G_M28069_IG18
+ b SHORT G_M28069_IG17
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -230,7 +228,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r adds r0, r7, 1 ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] movs r3, 121 @@ -239,7 +237,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ; byrRegs -[r0] ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 @@ -250,7 +248,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ; byrRegs -[r0] ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 @@ -258,16 +256,16 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ...

+34 (+3.23%) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)

@@ -10,14 +10,14 @@ ; ; V00 this [V00,T00] ( 27, 55.50) byref -> r4 this single-def ; V01 arg1 [V01,T19] ( 4, 3.50) byref -> r5 single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> r8
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> r8
; V03 loc1 [V03 ] ( 36, 70.50) struct (16) [r11-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [r11-0x34]
+; V04 loc2 [V04,T09] ( 6, 8 ) ushort -> [r11-0x34]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T07] ( 5, 14.50) ushort -> r7 "Inline stloc first use temp"
+; V09 tmp2 [V09,T06] ( 5, 14.50) ushort -> r7 "Inline stloc first use temp"
; V10 tmp3 [V10,T10] ( 4, 8 ) int -> r0 "Inline stloc first use temp" ;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V12 tmp5 [V12,T32] ( 2, 2 ) int -> r0 "Inlining Arg" @@ -37,14 +37,14 @@ ;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V27 tmp20 [V27,T16] ( 4, 8 ) int -> r0 "Inline stloc first use temp" ;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V29 tmp22 [V29,T09] ( 4, 10 ) ushort -> r8 "Inline stloc first use temp"
+; V29 tmp22 [V29,T08] ( 4, 10 ) ushort -> r8 "Inline stloc first use temp"
; V30 tmp23 [V30,T17] ( 4, 8 ) int -> r0 "Inline stloc first use temp" ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V32 tmp25 [V32,T05] ( 4, 16 ) int -> r4 "Inlining Arg"
+; V32 tmp25 [V32,T04] ( 4, 16 ) int -> r4 "Inlining Arg"
;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp28 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r4 "Inlining Arg"
+; V36 tmp29 [V36,T03] ( 4, 32 ) int -> r8 "Inlining Arg"
;* V37 tmp30 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP @@ -63,8 +63,8 @@ ; V52 GsCookie [V52 ] ( 1, 1 ) int -> [r11-0x38] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V53 cse0 [V53,T18] ( 5, 7 ) int -> r7 multi-def "CSE - moderate" ; V54 cse1 [V54,T33] ( 3, 1.50) int -> r0 "CSE - conservative"
-; V55 cse2 [V55,T06] ( 4, 16 ) int -> r0 "CSE - aggressive" -; V56 cse3 [V56,T08] ( 8, 14 ) ref -> r6 "CSE - aggressive"
+; V55 cse2 [V55,T05] ( 4, 16 ) int -> r0 "CSE - aggressive" +; V56 cse3 [V56,T07] ( 8, 14 ) ref -> r6 "CSE - aggressive"
; TEMP_01 ref -> [r11-0x3C] ; ; Lcl frame size = 36 @@ -106,7 +106,7 @@ G_M25128_IG03: ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, ldr r0, [r4+0x08] ldr r3, [r4+0x04] cmp r0, r3
- bge G_M25128_IG24
+ bge G_M25128_IG20
;; size=10 bbWeight=8 PerfScore 32.00 G_M25128_IG04: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz ldr r0, [r4+0x08] @@ -114,25 +114,25 @@ G_M25128_IG04: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, str r3, [r4+0x08] ldr r3, [r4+0x04] cmp r0, r3
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r3, [r4] ; byrRegs +[r3] lsls r0, r0, 1 ldrh r7, [r3+r0] cmp r7, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=26 bbWeight=2 PerfScore 22.00 G_M25128_IG05: ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz ; byrRegs -[r3] mov r8, r7 cmp r8, 0
- beq G_M25128_IG29
+ beq G_M25128_IG25
;; size=10 bbWeight=8 PerfScore 24.00 G_M25128_IG06: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz cmp r8, 44
- beq G_M25128_IG25
+ beq G_M25128_IG21
cmp r8, 61
- beq G_M25128_IG27
+ beq G_M25128_IG23
mov r0, r8 movw r3, 0xd1ff movt r3, 0xd1ff @@ -167,132 +167,144 @@ G_M25128_IG10: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r ldr r0, [r4+0x08] ldr r1, [r4+0x04] cmp r0, r1
- bge G_M25128_IG31
+ bge G_M25128_IG27
adds r1, r0, 1 str r1, [r4+0x08] ldr r1, [r4+0x04] cmp r0, r1
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r1, [r4] ; byrRegs +[r1] lsls r0, r0, 1 ldrh r8, [r1+r0] cmp r8, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=40 bbWeight=0.50 PerfScore 7.50 G_M25128_IG11: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz ; byrRegs -[r1] cmp r8, 0
- beq G_M25128_IG46
+ beq G_M25128_IG44
cmp r3, 0
- beq SHORT G_M25128_IG13 - ;; size=12 bbWeight=4 PerfScore 16.00
+ beq G_M25128_IG28 + ;; size=14 bbWeight=4 PerfScore 16.00
G_M25128_IG12: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz cmp r8, r3
- beq G_M25128_IG47
+ beq G_M25128_IG45
;; size=6 bbWeight=2 PerfScore 4.00 G_M25128_IG13: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
- cmp r3, 0 - bne SHORT G_M25128_IG15 - ;; size=4 bbWeight=4 PerfScore 8.00 -G_M25128_IG14: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz - cmp r8, 44 - beq G_M25128_IG53 - cmp r8, 61 - beq G_M25128_IG53 - ;; size=16 bbWeight=2 PerfScore 8.00 -G_M25128_IG15: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz - str r3, [r9+0x0C] - cmp r3, 0 - bne SHORT G_M25128_IG17 - ;; size=8 bbWeight=4 PerfScore 12.00 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz - cmp r8, 39 - beq G_M25128_IG58 - cmp r8, 34 - beq G_M25128_IG58 - ;; size=16 bbWeight=2 PerfScore 8.00 -G_M25128_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r8, 92
- bne G_M25128_IG43
+ bne G_M25128_IG41
;; size=8 bbWeight=4 PerfScore 8.00
-G_M25128_IG18: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG14: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r7, [r4+0x08] ldr r0, [r4+0x04] cmp r7, r0
- bge SHORT G_M25128_IG32
+ bge G_M25128_IG30
adds r0, r7, 1 str r0, [r4+0x08] ldr r0, [r4+0x04] cmp r7, r0
- bhs G_M25128_IG57
+ bhs G_M25128_IG55
ldr r0, [r4] ; byrRegs +[r0] lsls r1, r7, 1 ldrh r1, [r0+r1] cmp r1, 0
- beq G_M25128_IG58 - ;; size=32 bbWeight=2 PerfScore 28.00 -G_M25128_IG19: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ beq G_M25128_IG56 + ;; size=34 bbWeight=2 PerfScore 28.00 +G_M25128_IG15: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r0] cmp r1, 61
- bhi SHORT G_M25128_IG34
+ bhi SHORT G_M25128_IG32
cmp r1, 39
- bhi SHORT G_M25128_IG33
+ bhi SHORT G_M25128_IG31
cmp r1, 34
- beq SHORT G_M25128_IG20
+ beq SHORT G_M25128_IG16
cmp r1, 39
- bne G_M25128_IG58
+ bne G_M25128_IG56
;; size=18 bbWeight=2 PerfScore 16.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r9+0x14] ldr r2, [r9+0x18] ; byrRegs +[r2] ldr lr, [r9+0x1C] cmp r0, lr
- bhs SHORT G_M25128_IG36
+ bhs SHORT G_M25128_IG34
lsl lr, r0, 1 strh r1, [r2+lr] adds r0, r0, 1 str r0, [r9+0x14] ;; size=30 bbWeight=2 PerfScore 18.00
-G_M25128_IG21: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r2] ldr r0, [r4+0x08]
- ldr r1, [r4+0x04] - cmp r0, r1 - bge G_M25128_IG45
+ ldr r2, [r4+0x04] + cmp r0, r2 + bge G_M25128_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M25128_IG22: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M25128_IG18: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r4+0x08]
- adds r1, r0, 1 - str r1, [r4+0x08] - ldr r1, [r4+0x04] - cmp r0, r1 - bhs G_M25128_IG57 - ldr r1, [r4] - ; byrRegs +[r1]
+ adds r2, r0, 1 + str r2, [r4+0x08] + ldr r2, [r4+0x04] + cmp r0, r2 + bhs G_M25128_IG55 + ldr r2, [r4] + ; byrRegs +[r2]
lsls r0, r0, 1
- ldrh r8, [r1+r0]
+ ldrh r8, [r2+r0]
cmp r8, 0
- beq G_M25128_IG58
+ beq G_M25128_IG56
;; size=30 bbWeight=2 PerfScore 22.00
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz - ; byrRegs -[r1] - ldr r3, [r9+0x0C] // [V04 loc2]
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz + ; byrRegs -[r2]
b SHORT G_M25128_IG11
- ;; size=6 bbWeight=4 PerfScore 8.00 -G_M25128_IG24: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+ ;; size=2 bbWeight=4 PerfScore 4.00 +G_M25128_IG20: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
movs r7, 0 b SHORT G_M25128_IG05 ;; size=4 bbWeight=2 PerfScore 4.00
-G_M25128_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
...

benchmarks.run_pgo.linux.arm.checked.mch

-18 (-13.85%) : 122258.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-16 (-8.42%) : 114375.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> r0 -; V01 arg1 [V01,T06] ( 5, 18 ) int -> r4 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> r7 -; V04 loc1 [V04,T01] ( 14,104 ) int -> r1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> r0 +; V01 arg1 [V01,T07] ( 5, 18 ) int -> r4 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> r7 +; V04 loc1 [V04,T01] ( 11, 98 ) int -> r1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> lr
-; V06 loc3 [V06,T10] ( 4, 8 ) int -> r12
+; V06 loc3 [V06,T11] ( 4, 8 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> r0 "arg temp" -; V10 cse0 [V10,T02] ( 11, 51 ) byref -> r6 hoist "CSE - aggressive" -; V11 cse1 [V11,T03] ( 7, 46 ) int -> r2 "CSE - aggressive" -; V12 cse2 [V12,T12] ( 3, 6 ) int -> r1 "CSE - aggressive" -; V13 cse3 [V13,T09] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V08 tmp1 [V08,T12] ( 2, 8 ) int -> r12 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> r0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> r12 "CSE - aggressive" +; V11 cse1 [V11,T02] ( 10, 49 ) byref -> r6 hoist "CSE - aggressive" +; V12 cse2 [V12,T03] ( 6, 44 ) int -> r2 "CSE - aggressive" +; V13 cse3 [V13,T13] ( 3, 6 ) int -> r1 "CSE - aggressive" +; V14 cse4 [V14,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -70,7 +71,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by ;; size=2 bbWeight=8 PerfScore 8.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r1, r7
- ble SHORT G_M36260_IG10
+ ble SHORT G_M36260_IG11
cmp r1, r2 bhs SHORT G_M36260_IG15 lsl r12, r1, 2 @@ -79,21 +80,15 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, b bge SHORT G_M36260_IG08 ;; size=20 bbWeight=16 PerfScore 128.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
- cmp r7, r1 - bge SHORT G_M36260_IG11
cmp r7, r2 bhs SHORT G_M36260_IG15
- lsl r12, r7, 2 - ldr r12, [r6+r12] - cmp r1, r2 - bhs SHORT G_M36260_IG15 - lsl r8, r1, 2
+ lsl r8, r7, 2
ldr r8, [r6+r8] lsl r9, r7, 2
- str r8, [r6+r9] - lsl r8, r1, 2 - str r12, [r6+r8] - ;; size=44 bbWeight=2 PerfScore 28.00
+ str r12, [r6+r9] + lsl r12, r1, 2 + str r8, [r6+r12] + ;; size=28 bbWeight=2 PerfScore 16.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r7, r1 blt SHORT G_M36260_IG06 @@ -104,9 +99,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by cmp r7, r2 bhs SHORT G_M36260_IG15 lsls r1, r7, 2
- ldr r12, [r6+r1]
+ ldr r8, [r6+r1]
str lr, [r6+r1]
- str r12, [r6+r3]
+ str r8, [r6+r3]
;; size=18 bbWeight=2 PerfScore 12.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz subs r1, r7, 1 @@ -134,7 +129,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 12, PerfScore 418.00, instruction count 71, allocated bytes for code 190 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
+; Total bytes of code 174, prolog size 12, PerfScore 406.00, instruction count 65, allocated bytes for code 174 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-6.12%) : 53483.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)

@@ -7,19 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> -; V01 arg1 [V01,T07] ( 5, 4 ) int -> r1 single-def -; V02 arg2 [V02,T05] ( 6, 4.50) int -> r4 single-def -; V03 loc0 [V03,T00] ( 17, 25.50) int -> r6 -; V04 loc1 [V04,T01] ( 14, 24 ) int -> r2
+; V00 arg0 [V00,T07] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> +; V01 arg1 [V01,T08] ( 5, 4 ) int -> r1 single-def +; V02 arg2 [V02,T06] ( 6, 4.50) int -> r4 single-def +; V03 loc0 [V03,T00] ( 16, 25 ) int -> r6 +; V04 loc1 [V04,T01] ( 11, 22.50) int -> r2
; V05 loc2 [V05,T04] ( 4, 9 ) int -> r12 single-def
-; V06 loc3 [V06,T08] ( 4, 2 ) int -> r7
+; V06 loc3 [V06,T09] ( 4, 2 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 2 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T03] ( 7, 10.50) int -> r0 "CSE - aggressive" -; V10 cse1 [V10,T02] ( 11, 12.50) byref -> r3 "CSE - aggressive" -; V11 cse2 [V11,T10] ( 3, 1.50) int -> r2 "CSE - moderate" -; V12 cse3 [V12,T11] ( 3, 1.50) int -> lr "CSE - moderate"
+; V08 tmp1 [V08,T10] ( 2, 2 ) int -> r7 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r7 "CSE - aggressive" +; V10 cse1 [V10,T03] ( 6, 10 ) int -> r0 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 10, 12 ) byref -> r3 "CSE - aggressive" +; V12 cse3 [V12,T11] ( 3, 1.50) int -> r2 "CSE - moderate" +; V13 cse4 [V13,T12] ( 3, 1.50) int -> lr "CSE - moderate"
; ; Lcl frame size = 0 @@ -72,7 +73,7 @@ G_M63260_IG08: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r2, r6
- ble SHORT G_M63260_IG10
+ ble SHORT G_M63260_IG11
cmp r2, r0 bhs SHORT G_M63260_IG14 lsls r7, r2, 2 @@ -81,21 +82,15 @@ G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by bge SHORT G_M63260_IG08 ;; size=16 bbWeight=4 PerfScore 32.00 G_M63260_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz
- cmp r6, r2 - bge SHORT G_M63260_IG11
cmp r6, r0 bhs SHORT G_M63260_IG14
- lsls r7, r6, 2 - ldr r7, [r3+r7] - cmp r2, r0 - bhs SHORT G_M63260_IG14 - lsl r8, r2, 2
+ lsl r8, r6, 2
ldr r8, [r3+r8] lsl r9, r6, 2
- str r8, [r3+r9] - lsl r8, r2, 2 - str r7, [r3+r8] - ;; size=40 bbWeight=0.50 PerfScore 7.00
+ str r7, [r3+r9] + lsls r7, r2, 2 + str r8, [r3+r7] + ;; size=26 bbWeight=0.50 PerfScore 4.00
G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r6, r2 blt SHORT G_M63260_IG06 @@ -104,10 +99,10 @@ G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, cmp r6, r0 bhs SHORT G_M63260_IG14 lsls r2, r6, 2
- ldr r7, [r3+r2]
+ ldr r8, [r3+r2]
str r12, [r3+r2]
- str r7, [r3+lr] - ;; size=24 bbWeight=0.50 PerfScore 5.00
+ str r8, [r3+lr] + ;; size=26 bbWeight=0.50 PerfScore 5.00
G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; byrRegs -[r3] subs r2, r6, 1 @@ -141,7 +136,7 @@ G_M63260_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 99.00, instruction count 77, allocated bytes for code 196 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
+; Total bytes of code 184, prolog size 12, PerfScore 96.00, instruction count 71, allocated bytes for code 184 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+8.33%) : 149669.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 255
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 255
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> r5 single-def ; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> r2 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T03] ( 4, 3 ) int -> r6
+; V06 tmp3 [V06,T03] ( 5, 3 ) int -> r6
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -38,38 +38,20 @@ G_M37303_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 G_M37303_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- uxtb r0, r2 - cmp r0, 0 - bne SHORT G_M37303_IG07
+ uxtb r1, r2 + cmp r1, 0 + bne SHORT G_M37303_IG06
movs r6, 0
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
cmp r4, 0
- bne SHORT G_M37303_IG04 - 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> - 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> - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ beq SHORT G_M37303_IG07 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
mvn r1, 7 ands r1, r6 cmp r1, 0 bne SHORT G_M37303_IG08 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
mov r0, r5 ; byrRegs +[r0] mov r1, r4 @@ -81,14 +63,37 @@ G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ; byrRegs -[r0] str r6, [r5+0x04] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M37303_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M37303_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37303_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M37303_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r4] movs r6, 1
- b SHORT G_M37303_IG03 - ;; size=4 bbWeight=0 PerfScore 0.00
+ cmp r4, 0 + bne SHORT G_M37303_IG03 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M37303_IG07: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + 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> + 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> + mvn r0, 7 + ands r0, r6 + cmp r0, 0 + beq SHORT G_M37303_IG04 + ;; size=66 bbWeight=0 PerfScore 0.00
G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -98,10 +103,10 @@ G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M37303_IG05
+ b SHORT G_M37303_IG04
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 8, PerfScore 37.00, instruction count 48, allocated bytes for code 144 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 21.00, instruction count 53, allocated bytes for code 156 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
; ============================================================ Unwind Info: @@ -113,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+8.33%) : 67354.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> r5 single-def ; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> r2 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T03] ( 4, 3 ) int -> r6
+; V06 tmp3 [V06,T03] ( 5, 3 ) int -> r6
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -38,38 +38,20 @@ G_M37303_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 G_M37303_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- uxtb r0, r2 - cmp r0, 0 - bne SHORT G_M37303_IG07
+ uxtb r1, r2 + cmp r1, 0 + bne SHORT G_M37303_IG06
movs r6, 0
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
cmp r4, 0
- bne SHORT G_M37303_IG04 - 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> - 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> - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ beq SHORT G_M37303_IG07 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
mvn r1, 7 ands r1, r6 cmp r1, 0 bne SHORT G_M37303_IG08 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
mov r0, r5 ; byrRegs +[r0] mov r1, r4 @@ -81,14 +63,37 @@ G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ; byrRegs -[r0] str r6, [r5+0x04] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M37303_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M37303_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37303_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M37303_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r4] movs r6, 1
- b SHORT G_M37303_IG03 - ;; size=4 bbWeight=0 PerfScore 0.00
+ cmp r4, 0 + bne SHORT G_M37303_IG03 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M37303_IG07: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + 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> + 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> + mvn r0, 7 + ands r0, r6 + cmp r0, 0 + beq SHORT G_M37303_IG04 + ;; size=66 bbWeight=0 PerfScore 0.00
G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -98,10 +103,10 @@ G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M37303_IG05
+ b SHORT G_M37303_IG04
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 8, PerfScore 37.00, instruction count 48, allocated bytes for code 144 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 21.00, instruction count 53, allocated bytes for code 156 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
; ============================================================ Unwind Info: @@ -113,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+8.33%) : 121874.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 256
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 256
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> r5 single-def ; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> r2 single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T03] ( 4, 3 ) int -> r6
+; V06 tmp3 [V06,T03] ( 5, 3 ) int -> r6
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable> ;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -38,38 +38,20 @@ G_M37303_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 G_M37303_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- uxtb r0, r2 - cmp r0, 0 - bne SHORT G_M37303_IG07
+ uxtb r1, r2 + cmp r1, 0 + bne SHORT G_M37303_IG06
movs r6, 0
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
cmp r4, 0
- bne SHORT G_M37303_IG04 - 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> - 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> - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ beq SHORT G_M37303_IG07 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M37303_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
mvn r1, 7 ands r1, r6 cmp r1, 0 bne SHORT G_M37303_IG08 ;; size=10 bbWeight=1 PerfScore 4.00
-G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M37303_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
mov r0, r5 ; byrRegs +[r0] mov r1, r4 @@ -81,14 +63,37 @@ G_M37303_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ; byrRegs -[r0] str r6, [r5+0x04] ;; size=16 bbWeight=1 PerfScore 6.00
-G_M37303_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M37303_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37303_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M37303_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r4] movs r6, 1
- b SHORT G_M37303_IG03 - ;; size=4 bbWeight=0 PerfScore 0.00
+ cmp r4, 0 + bne SHORT G_M37303_IG03 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M37303_IG07: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz + 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> + 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> + mvn r0, 7 + ands r0, r6 + cmp r0, 0 + beq SHORT G_M37303_IG04 + ;; size=66 bbWeight=0 PerfScore 0.00
G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -98,10 +103,10 @@ G_M37303_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M37303_IG05
+ b SHORT G_M37303_IG04
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 144, prolog size 8, PerfScore 37.00, instruction count 48, allocated bytes for code 144 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 21.00, instruction count 53, allocated bytes for code 156 (MethodHash=3dbe6e48) for method System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
; ============================================================ Unwind Info: @@ -113,7 +118,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm.checked.mch

-18 (-13.85%) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-16 (-8.42%) : 62633.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> r0 -; V01 arg1 [V01,T06] ( 5, 18 ) int -> r4 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> r7 -; V04 loc1 [V04,T01] ( 14,104 ) int -> r1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> r0 +; V01 arg1 [V01,T07] ( 5, 18 ) int -> r4 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> r7 +; V04 loc1 [V04,T01] ( 11, 98 ) int -> r1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> lr
-; V06 loc3 [V06,T10] ( 4, 8 ) int -> r12
+; V06 loc3 [V06,T11] ( 4, 8 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> r0 "arg temp" -; V10 cse0 [V10,T02] ( 11, 51 ) byref -> r6 hoist "CSE - aggressive" -; V11 cse1 [V11,T03] ( 7, 46 ) int -> r2 "CSE - aggressive" -; V12 cse2 [V12,T12] ( 3, 6 ) int -> r1 "CSE - aggressive" -; V13 cse3 [V13,T09] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V08 tmp1 [V08,T12] ( 2, 8 ) int -> r12 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> r0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> r12 "CSE - aggressive" +; V11 cse1 [V11,T02] ( 10, 49 ) byref -> r6 hoist "CSE - aggressive" +; V12 cse2 [V12,T03] ( 6, 44 ) int -> r2 "CSE - aggressive" +; V13 cse3 [V13,T13] ( 3, 6 ) int -> r1 "CSE - aggressive" +; V14 cse4 [V14,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -70,7 +71,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by ;; size=2 bbWeight=8 PerfScore 8.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r1, r7
- ble SHORT G_M36260_IG10
+ ble SHORT G_M36260_IG11
cmp r1, r2 bhs SHORT G_M36260_IG15 lsl r12, r1, 2 @@ -79,21 +80,15 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, b bge SHORT G_M36260_IG08 ;; size=20 bbWeight=16 PerfScore 128.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
- cmp r7, r1 - bge SHORT G_M36260_IG11
cmp r7, r2 bhs SHORT G_M36260_IG15
- lsl r12, r7, 2 - ldr r12, [r6+r12] - cmp r1, r2 - bhs SHORT G_M36260_IG15 - lsl r8, r1, 2
+ lsl r8, r7, 2
ldr r8, [r6+r8] lsl r9, r7, 2
- str r8, [r6+r9] - lsl r8, r1, 2 - str r12, [r6+r8] - ;; size=44 bbWeight=2 PerfScore 28.00
+ str r12, [r6+r9] + lsl r12, r1, 2 + str r8, [r6+r12] + ;; size=28 bbWeight=2 PerfScore 16.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r7, r1 blt SHORT G_M36260_IG06 @@ -104,9 +99,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by cmp r7, r2 bhs SHORT G_M36260_IG15 lsls r1, r7, 2
- ldr r12, [r6+r1]
+ ldr r8, [r6+r1]
str lr, [r6+r1]
- str r12, [r6+r3]
+ str r8, [r6+r3]
;; size=18 bbWeight=2 PerfScore 12.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz subs r1, r7, 1 @@ -134,7 +129,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 12, PerfScore 418.00, instruction count 71, allocated bytes for code 190 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
+; Total bytes of code 174, prolog size 12, PerfScore 406.00, instruction count 65, allocated bytes for code 174 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-6.12%) : 31836.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)

@@ -7,19 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> -; V01 arg1 [V01,T07] ( 5, 4 ) int -> r1 single-def -; V02 arg2 [V02,T05] ( 6, 4.50) int -> r4 single-def -; V03 loc0 [V03,T00] ( 17, 25.50) int -> r6 -; V04 loc1 [V04,T01] ( 14, 24 ) int -> r2
+; V00 arg0 [V00,T07] ( 6, 4 ) ref -> r5 class-hnd single-def <int[]> +; V01 arg1 [V01,T08] ( 5, 4 ) int -> r1 single-def +; V02 arg2 [V02,T06] ( 6, 4.50) int -> r4 single-def +; V03 loc0 [V03,T00] ( 16, 25 ) int -> r6 +; V04 loc1 [V04,T01] ( 11, 22.50) int -> r2
; V05 loc2 [V05,T04] ( 4, 9 ) int -> r12 single-def
-; V06 loc3 [V06,T08] ( 4, 2 ) int -> r7
+; V06 loc3 [V06,T09] ( 4, 2 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 2 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 cse0 [V09,T03] ( 7, 10.50) int -> r0 "CSE - aggressive" -; V10 cse1 [V10,T02] ( 11, 12.50) byref -> r3 "CSE - aggressive" -; V11 cse2 [V11,T10] ( 3, 1.50) int -> r2 "CSE - moderate" -; V12 cse3 [V12,T11] ( 3, 1.50) int -> lr "CSE - moderate"
+; V08 tmp1 [V08,T10] ( 2, 2 ) int -> r7 "Strict ordering of exceptions for Array store" +; V09 cse0 [V09,T05] ( 3, 8.50) int -> r7 "CSE - aggressive" +; V10 cse1 [V10,T03] ( 6, 10 ) int -> r0 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 10, 12 ) byref -> r3 "CSE - aggressive" +; V12 cse3 [V12,T11] ( 3, 1.50) int -> r2 "CSE - moderate" +; V13 cse4 [V13,T12] ( 3, 1.50) int -> lr "CSE - moderate"
; ; Lcl frame size = 0 @@ -72,7 +73,7 @@ G_M63260_IG08: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r2, r6
- ble SHORT G_M63260_IG10
+ ble SHORT G_M63260_IG11
cmp r2, r0 bhs SHORT G_M63260_IG14 lsls r7, r2, 2 @@ -81,21 +82,15 @@ G_M63260_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, by bge SHORT G_M63260_IG08 ;; size=16 bbWeight=4 PerfScore 32.00 G_M63260_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz
- cmp r6, r2 - bge SHORT G_M63260_IG11
cmp r6, r0 bhs SHORT G_M63260_IG14
- lsls r7, r6, 2 - ldr r7, [r3+r7] - cmp r2, r0 - bhs SHORT G_M63260_IG14 - lsl r8, r2, 2
+ lsl r8, r6, 2
ldr r8, [r3+r8] lsl r9, r6, 2
- str r8, [r3+r9] - lsl r8, r2, 2 - str r7, [r3+r8] - ;; size=40 bbWeight=0.50 PerfScore 7.00
+ str r7, [r3+r9] + lsls r7, r2, 2 + str r8, [r3+r7] + ;; size=26 bbWeight=0.50 PerfScore 4.00
G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, byref, isz cmp r6, r2 blt SHORT G_M63260_IG06 @@ -104,10 +99,10 @@ G_M63260_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0008 {r3}, cmp r6, r0 bhs SHORT G_M63260_IG14 lsls r2, r6, 2
- ldr r7, [r3+r2]
+ ldr r8, [r3+r2]
str r12, [r3+r2]
- str r7, [r3+lr] - ;; size=24 bbWeight=0.50 PerfScore 5.00
+ str r8, [r3+lr] + ;; size=26 bbWeight=0.50 PerfScore 5.00
G_M63260_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; byrRegs -[r3] subs r2, r6, 1 @@ -141,7 +136,7 @@ G_M63260_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 99.00, instruction count 77, allocated bytes for code 196 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
+; Total bytes of code 184, prolog size 12, PerfScore 96.00, instruction count 71, allocated bytes for code 184 (MethodHash=855f08e3) for method Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+1.40%) : 13516.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)

@@ -9,123 +9,124 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 13, 9.50) ref -> r5 class-hnd single-def <System.String>
-; V01 arg1 [V01,T27] ( 3, 2.50) ubyte -> r7 single-def -; V02 arg2 [V02,T10] ( 5, 8.50) ubyte -> r6 single-def
+; V01 arg1 [V01,T28] ( 3, 2.50) ubyte -> r7 single-def +; V02 arg2 [V02,T14] ( 4, 6.50) ubyte -> r6 single-def
; V03 loc0 [V03,T01] ( 27, 33 ) ref -> r9 class-hnd <System.Text.StringBuilder> ; V04 loc1 [V04,T08] ( 9, 11 ) int -> r10
-; V05 loc2 [V05,T07] ( 11, 11.50) int -> [sp+0x24] -; V06 loc3 [V06,T00] ( 23, 44.50) int -> [sp+0x20] -; V07 loc4 [V07,T48] ( 3, 1.50) int -> [sp+0x1C] spill-single-def -; V08 loc5 [V08,T44] ( 3, 1.50) ref -> [sp+0x08] class-hnd spill-single-def <System.Text.RegularExpressions.MatchCollection> -; V09 loc6 [V09,T17] ( 9, 7.50) ref -> [sp+0x04] class-hnd <System.Collections.IEnumerator> -; V10 loc7 [V10,T14] ( 8, 8.50) int -> [sp+0x18]
+; V05 loc2 [V05,T07] ( 11, 11.50) int -> [sp+0x2C] +; V06 loc3 [V06,T00] ( 18, 34.50) int -> [sp+0x28] +; V07 loc4 [V07,T49] ( 3, 1.50) int -> [sp+0x24] spill-single-def +; V08 loc5 [V08,T45] ( 3, 1.50) ref -> [sp+0x0C] class-hnd spill-single-def <System.Text.RegularExpressions.MatchCollection> +; V09 loc6 [V09,T18] ( 9, 7.50) ref -> [sp+0x08] class-hnd <System.Collections.IEnumerator> +; V10 loc7 [V10,T13] ( 8, 8.50) int -> [sp+0x20]
;* V11 loc8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V12 loc9 [V12,T58] ( 2, 1 ) int -> r1
+; V12 loc9 [V12,T59] ( 2, 1 ) int -> r1
;* V13 loc10 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 loc11 [V14,T59] ( 2, 1 ) int -> r1
+; V14 loc11 [V14,T60] ( 2, 1 ) int -> r1
;* V15 loc12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.StringBuilder>
-; V16 loc13 [V16 ] ( 16, 20 ) struct (12) [sp+0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.StringBuilder+AppendInterpolatedStringHandler>
+; V16 loc13 [V16 ] ( 16, 20 ) struct (12) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.StringBuilder+AppendInterpolatedStringHandler>
;* V17 loc14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V18 loc15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V19 loc16 [V19,T31] ( 2, 4 ) int -> r1
+; V19 loc16 [V19,T32] ( 2, 4 ) int -> r1
;* V20 loc17 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 loc18 [V21,T32] ( 2, 4 ) int -> r1
+; V21 loc18 [V21,T33] ( 2, 4 ) int -> r1
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T13] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1" -; V24 tmp2 [V24,T26] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
+; V23 tmp1 [V23,T12] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1" +; V24 tmp2 [V24,T27] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"
; V25 tmp3 [V25,T02] ( 5, 15 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> ; V26 tmp4 [V26,T04] ( 3, 12 ) ref -> r9 class-hnd exact "NewObj constructor temp" <System.Text.StringBuilder>
-; V27 tmp5 [V27,T39] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" -; V28 tmp6 [V28,T55] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" -; V29 tmp7 [V29,T34] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> -; V30 tmp8 [V30,T36] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder> -; V31 tmp9 [V31,T40] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" -; V32 tmp10 [V32,T56] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" -; V33 tmp11 [V33,T35] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> -;* V34 tmp12 [V34,T61] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V27 tmp5 [V27,T40] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" +; V28 tmp6 [V28,T56] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" +; V29 tmp7 [V29,T35] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> +; V30 tmp8 [V30,T37] ( 3, 3 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder> +; V31 tmp9 [V31,T41] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1" +; V32 tmp10 [V32,T57] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" +; V33 tmp11 [V33,T36] ( 5, 3.75) ref -> r3 class-hnd "spilling QMark2" <<unknown class>> +;* V34 tmp12 [V34,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp13 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V36 tmp14 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp15 [V37,T28] ( 4, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCollection+Enumerator> -;* V38 tmp16 [V38,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V39 tmp17 [V39,T37] ( 3, 3 ) ushort -> r2 "Inlining Arg"
+; V37 tmp15 [V37,T29] ( 4, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCollection+Enumerator> +;* V38 tmp16 [V38,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V39 tmp17 [V39,T38] ( 3, 3 ) ushort -> r2 "Inlining Arg"
;* V40 tmp18 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V41 tmp19 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V42 tmp20 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V43 tmp21 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V44 tmp22 [V44,T45] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V45 tmp23 [V45,T49] ( 3, 1.50) int -> r2 "Inline stloc first use temp" -; V46 tmp24 [V46,T41] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" -; V47 tmp25 [V47,T46] ( 3, 1.50) byref -> r0 single-def "Inline stloc first use temp"
+; V44 tmp22 [V44,T46] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V45 tmp23 [V45,T50] ( 3, 1.50) int -> r2 "Inline stloc first use temp" +; V46 tmp24 [V46,T42] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +; V47 tmp25 [V47,T47] ( 3, 1.50) byref -> r0 single-def "Inline stloc first use temp"
;* V48 tmp26 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V49 tmp27 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V51 tmp29 [V51,T50] ( 3, 1.50) int -> r1 "Inline stloc first use temp" -; V52 tmp30 [V52,T47] ( 3, 1.50) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V53 tmp31 [V53,T16] ( 2, 8 ) ushort -> r0 "Inlining Arg"
+; V51 tmp29 [V51,T51] ( 3, 1.50) int -> r1 "Inline stloc first use temp" +; V52 tmp30 [V52,T48] ( 3, 1.50) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp31 [V53,T17] ( 2, 8 ) ushort -> r0 "Inlining Arg"
;* V54 tmp32 [V54 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V55 tmp33 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V56 tmp34 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V57 tmp35 [V57,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V57 tmp35 [V57,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V58 tmp36 [V58,T05] ( 3, 12 ) ushort -> r0 "Inlining Arg" ;* V59 tmp37 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V60 tmp38 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V61 tmp39 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V62 tmp40 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V63 tmp41 [V63,T18] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> -; V64 tmp42 [V64,T21] ( 3, 6 ) int -> r2 "Inline stloc first use temp" -; V65 tmp43 [V65,T15] ( 2, 8 ) byref -> r1 "Inlining Arg" -; V66 tmp44 [V66,T19] ( 3, 6 ) byref -> r0 "Inline stloc first use temp"
+; V63 tmp41 [V63,T19] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> +; V64 tmp42 [V64,T22] ( 3, 6 ) int -> r2 "Inline stloc first use temp" +; V65 tmp43 [V65,T16] ( 2, 8 ) byref -> r1 "Inlining Arg" +; V66 tmp44 [V66,T20] ( 3, 6 ) byref -> r0 "Inline stloc first use temp"
;* V67 tmp45 [V67 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V68 tmp46 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp47 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V70 tmp48 [V70,T22] ( 3, 6 ) int -> r1 "Inline stloc first use temp" -; V71 tmp49 [V71,T20] ( 3, 6 ) ref -> r3 class-hnd "Inline stloc first use temp" <<unknown class>> -; V72 tmp50 [V72 ] ( 8, 10 ) ref -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V16._stringBuilder (fldOffset=0x0)" P-DEP -; V73 tmp51 [V73 ] ( 8, 10 ) ref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V16._provider (fldOffset=0x4)" P-DEP -; V74 tmp52 [V74 ] ( 8, 10 ) ubyte -> [sp+0x14] do-not-enreg[X] addr-exposed "field V16._hasCustomFormatter (fldOffset=0x8)" P-DEP
+; V70 tmp48 [V70,T23] ( 3, 6 ) int -> r1 "Inline stloc first use temp" +; V71 tmp49 [V71,T21] ( 3, 6 ) ref -> r3 class-hnd "Inline stloc first use temp" <<unknown class>> +; V72 tmp50 [V72 ] ( 8, 10 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V16._stringBuilder (fldOffset=0x0)" P-DEP +; V73 tmp51 [V73 ] ( 8, 10 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V16._provider (fldOffset=0x4)" P-DEP +; V74 tmp52 [V74 ] ( 8, 10 ) ubyte -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V16._hasCustomFormatter (fldOffset=0x8)" P-DEP
;* V75 tmp53 [V75 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP ;* V76 tmp54 [V76 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
-; V77 tmp55 [V77,T57] ( 2, 1 ) byref -> r1 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+; V77 tmp55 [V77,T58] ( 2, 1 ) byref -> r1 single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp56 [V78 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP ;* V79 tmp57 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp58 [V80 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP ;* V81 tmp59 [V81 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP ;* V82 tmp60 [V82 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
-; V83 tmp61 [V83,T29] ( 2, 4 ) byref -> r1 "field V55._reference (fldOffset=0x0)" P-INDEP
+; V83 tmp61 [V83,T30] ( 2, 4 ) byref -> r12 "field V55._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp62 [V84 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x4)" P-INDEP ;* V85 tmp63 [V85 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp64 [V86 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x4)" P-INDEP ;* V87 tmp65 [V87 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V88 tmp66 [V88 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP
-; V89 tmp67 [V89,T30] ( 2, 4 ) byref -> r1 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp67 [V89,T31] ( 2, 4 ) byref -> r12 "field V60._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp68 [V90 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x4)" P-INDEP ;* V91 tmp69 [V91 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp70 [V92 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP
-; V93 tmp71 [V93,T42] ( 2, 2 ) ref -> r0 single-def "argument with side effect" -; V94 cse0 [V94,T23] ( 3, 6 ) int -> r0 "CSE - moderate" -; V95 cse1 [V95,T11] ( 5, 10 ) int -> r1 multi-def "CSE - aggressive" -; V96 cse2 [V96,T51] ( 3, 1.50) int -> r0 "CSE - conservative" -; V97 cse3 [V97,T52] ( 3, 1.50) int -> r0 "CSE - conservative" -; V98 cse4 [V98,T38] ( 5, 2.50) int -> r1 multi-def "CSE - conservative" -; V99 cse5 [V99,T53] ( 3, 1.50) int -> lr "CSE - conservative" -; V100 cse6 [V100,T60] ( 2, 1 ) int -> r2 "CSE - conservative" -; V101 cse7 [V101,T24] ( 3, 6 ) int -> r0 "CSE - moderate" -; V102 cse8 [V102,T54] ( 3, 1.50) int -> r0 "CSE - conservative" -; V103 cse9 [V103,T03] ( 9, 12 ) int -> r8 "CSE - aggressive" -; V104 cse10 [V104,T09] ( 7, 11 ) byref -> [sp+0x00] spill-single-def "CSE - aggressive" -; V105 cse11 [V105,T12] ( 5, 10 ) int -> r4 "CSE - moderate" -; V106 cse12 [V106,T25] ( 3, 6 ) int -> lr "CSE - moderate" -; V107 cse13 [V107,T33] ( 2, 4 ) int -> r2 "CSE - moderate"
+; V93 tmp71 [V93,T43] ( 2, 2 ) ref -> r0 single-def "argument with side effect" +; V94 cse0 [V94,T24] ( 3, 6 ) int -> r0 "CSE - moderate" +; V95 cse1 [V95,T10] ( 5, 10 ) int -> r1 multi-def "CSE - aggressive" +; V96 cse2 [V96,T52] ( 3, 1.50) int -> r0 "CSE - conservative" +; V97 cse3 [V97,T53] ( 3, 1.50) int -> r0 "CSE - conservative" +; V98 cse4 [V98,T39] ( 5, 2.50) int -> r1 multi-def "CSE - conservative" +; V99 cse5 [V99,T54] ( 3, 1.50) int -> lr "CSE - conservative" +; V100 cse6 [V100,T61] ( 2, 1 ) int -> r2 "CSE - conservative" +; V101 cse7 [V101,T25] ( 3, 6 ) int -> r0 "CSE - moderate" +; V102 cse8 [V102,T55] ( 3, 1.50) int -> r0 "CSE - conservative" +; V103 cse9 [V103,T15] ( 7, 8 ) int -> r8 "CSE - aggressive" +; V104 cse10 [V104,T09] ( 7, 11 ) byref -> [sp+0x04] spill-single-def "CSE - aggressive" +; V105 cse11 [V105,T03] ( 7, 14 ) int -> [sp+0x10] multi-def "CSE - aggressive" +; V106 cse12 [V106,T11] ( 5, 10 ) int -> r4 "CSE - moderate" +; V107 cse13 [V107,T26] ( 3, 6 ) int -> lr "CSE - moderate" +; V108 cse14 [V108,T34] ( 2, 4 ) int -> r2 "CSE - moderate"
;
-; Lcl frame size = 44
+; Lcl frame size = 52
G_M19720_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 44 - add r11, sp, 72
+ sub sp, 52 + add r11, sp, 80
movs r3, 0
- str r3, [sp+0x0C] // [V16 loc13] - str r3, [sp+0x10] // [V16 loc13+0x04]
+ str r3, [sp+0x14] // [V16 loc13] + str r3, [sp+0x18] // [V16 loc13+0x04]
mov r5, r0 ; gcrRegs +[r5] mov r7, r1 @@ -142,12 +143,12 @@ G_M19720_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b mov r9, 0 mov r10, r8 movs r4, 0
- str r4, [sp+0x24] // [V05 loc2]
+ str r4, [sp+0x2C] // [V05 loc2]
movs r3, 0
- str r3, [sp+0x20] // [V06 loc3]
+ str r3, [sp+0x28] // [V06 loc3]
add lr, r5, 8 ; byrRegs +[lr]
- str lr, [sp] // [V104 cse10]
+ str lr, [sp+0x04] // [V104 cse10]
; GC ptr vars +{V104} mov r0, lr ; byrRegs +[r0] @@ -161,7 +162,7 @@ G_M19720_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ; byrRegs -[r0 lr] ; gcr arg pop 0 mov r3, r0
- str r3, [sp+0x1C] // [V07 loc4]
+ str r3, [sp+0x24] // [V07 loc4]
mov lr, 0 cmp r3, 0 blt SHORT G_M19720_IG08 @@ -174,7 +175,7 @@ G_M19720_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M19720_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 44
+ add sp, 52
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00 G_M19720_IG06: ; bbWeight=0.50, gcVars=0000000000000200 {V104}, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, gcvars, byref, isz @@ -185,7 +186,7 @@ G_M19720_IG06: ; bbWeight=0.50, gcVars=0000000000000200 {V104}, gcrefRegs ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M19720_IG58
+ bne G_M19720_IG59
;; size=20 bbWeight=0.50 PerfScore 3.00 G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref movw r0, 0xd1ff @@ -204,7 +205,7 @@ G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x08] // [V08 loc5]
+ str r3, [sp+0x0C] // [V08 loc5]
; GC ptr vars +{V08} ldrsb r0, [r3] ; gcrRegs -[r0] @@ -221,7 +222,7 @@ G_M19720_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {} adds r0, r2, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x08] // [V08 loc5]
+ ldr r1, [sp+0x0C] // [V08 loc5]
; gcrRegs +[r1] ...

+22 (+2.71%) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)

@@ -11,10 +11,10 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> r5 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct ( 8) [r11-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 38,148.58) int -> r7
+; V03 loc2 [V03,T00] ( 40,182.58) int -> r7
; V04 loc3 [V04,T23] ( 4, 2 ) int -> r0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> r6
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> r0 class-hnd exact "impAppendStmt" <System.String> @@ -46,9 +46,9 @@ ; V35 cse2 [V35,T32] ( 2, 1 ) int -> r3 "CSE - moderate" ; V36 cse3 [V36,T11] ( 3, 12 ) int -> r2 "CSE - aggressive" ; V37 cse4 [V37,T10] ( 3, 12 ) ref -> r1 "CSE - aggressive"
-; V38 cse5 [V38,T03] ( 15, 30.54) int -> r6 "CSE - aggressive" -; V39 cse6 [V39,T02] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" -; V40 cse7 [V40,T01] ( 3, 48 ) int -> r1 "CSE - aggressive"
+; V38 cse5 [V38,T01] ( 17, 64.54) int -> r6 "CSE - aggressive" +; V39 cse6 [V39,T03] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" +; V40 cse7 [V40,T02] ( 3, 48 ) int -> r1 "CSE - aggressive"
; V41 cse8 [V41,T12] ( 3, 12 ) int -> r1 "CSE - aggressive" ; V42 cse9 [V42,T17] ( 2, 8 ) int -> r3 "CSE - aggressive" ; V43 cse10 [V43,T13] ( 3, 11.88) int -> r3 "CSE - aggressive" @@ -75,7 +75,7 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28069_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] cmp r0, 0
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=8 bbWeight=1 PerfScore 3.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x04] @@ -83,18 +83,18 @@ G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movs r1, 0 ldr r3, [r0+0x04] cmp r1, r3
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r5, [r0+0x08] ; gcrRegs +[r5] ldr r6, [r5+0x04] cmp r6, 100
- bgt G_M28069_IG28
+ bgt G_M28069_IG27
adds r0, r6, 2 ; gcrRegs -[r0] movs r1, 2 umull r1, r3, r0, r1 cmp r3, 0
- bne G_M28069_IG30
+ bne G_M28069_IG29
tst r1, r1 beq SHORT G_M28069_IG06 adds r1, 7 @@ -117,12 +117,12 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, 0
- blt G_M28069_IG32
+ blt G_M28069_IG31
str r1, [r9+0x10] // [V23 tmp16] str r0, [r9+0x14] // [V24 tmp17] movs r7, 0 cmp r6, 0
- ble SHORT G_M28069_IG15
+ ble SHORT G_M28069_IG14
add r8, r5, 8 ; byrRegs +[r8] ;; size=24 bbWeight=0.50 PerfScore 4.00 @@ -130,76 +130,74 @@ G_M28069_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, lsls r0, r7, 1 ldrh r0, [r8+r0] cmp r0, 39
- bne SHORT G_M28069_IG11
+ bne SHORT G_M28069_IG10
;; size=10 bbWeight=4 PerfScore 16.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz ldr r0, [r9+0x14] // [V24 tmp17] cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] lsls r1, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG30
ldrh r3, [r8+r1] strh r3, [r0+r1] adds r7, r7, 1 cmp r6, r7
- ble SHORT G_M28069_IG09
+ ble G_M28069_IG27 + cmp r7, r6 + bhs G_M28069_IG30
lsls r0, r7, 1 ; byrRegs -[r0] ldrh r0, [r8+r0] cmp r0, 39 bne SHORT G_M28069_IG08
- ;; size=38 bbWeight=16 PerfScore 224.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - cmp r6, r7 - bgt SHORT G_M28069_IG12 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4-r5] - ; byrRegs -[r8] - b SHORT G_M28069_IG28 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs +[r4-r5] - ; byrRegs +[r8]
+ ;; size=52 bbWeight=16 PerfScore 288.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + b SHORT G_M28069_IG11 + ;; size=2 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 121
- beq SHORT G_M28069_IG14
+ beq SHORT G_M28069_IG13
;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x14] // [V24 tmp17] cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] lsls r1, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG30
ldrh r3, [r8+r1] strh r3, [r0+r1] adds r7, r7, 1 cmp r6, r7 bgt SHORT G_M28069_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0 r8]
- b SHORT G_M28069_IG15
+ b SHORT G_M28069_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x14] // [V24 tmp17] cmp r7, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] lsls r1, r7, 1 movs r3, 121 strh r3, [r0+r1] ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] subs r0, r6, 1 cmp r0, r7
- ble G_M28069_IG28
+ ble G_M28069_IG27
adds r0, r7, 1 cmp r0, r6
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
add r8, r5, 8 ; byrRegs +[r8] lsls r3, r7, 1 @@ -208,25 +206,25 @@ G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} str r2, [r9+0x0C] // [V34 cse1] ldrh r0, [r8+r2] cmp r0, 121
- bne G_M28069_IG28
+ bne G_M28069_IG27
add lr, r7, 2 str lr, [r9+0x04] // [V46 cse13] cmp r6, lr
- ble SHORT G_M28069_IG16
+ ble SHORT G_M28069_IG15
cmp lr, r6
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
adds r0, r3, 4 ldrh r0, [r8+r0] cmp r0, 121 ldr r3, [r9+0x08] // [V44 cse11] ldr lr, [r9+0x04] // [V46 cse13]
- beq G_M28069_IG28
+ beq G_M28069_IG27
;; size=80 bbWeight=0.50 PerfScore 13.00
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 3 ldr r1, [r9+0x14] // [V24 tmp17] cmp r0, r1
- blt SHORT G_M28069_IG17
+ blt SHORT G_M28069_IG16
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -240,11 +238,11 @@ G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ldr r3, [r9+0x08] // [V44 cse11] ldr lr, [r9+0x04] // [V46 cse13] ;; size=42 bbWeight=0.50 PerfScore 6.50
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 1 ldr r1, [r9+0x14] // [V24 tmp17] cmp r0, r1
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] movs r1, 121 @@ -253,7 +251,7 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ldr r0, [r9+0x14] // [V24 tmp17] ; byrRegs -[r0] cmp lr, r0
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] adds r2, r3, 4 @@ -262,23 +260,23 @@ G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ; byrRegs -[r0] ldr r2, [r9+0x14] // [V24 tmp17] cmp r0, r2
- bhs G_M28069_IG31
+ bhs G_M28069_IG30
ldr r0, [r9+0x10] // [V23 tmp16] ; byrRegs +[r0] adds r3, r3, 6 strh r1, [r0+r3] mov r7, lr cmp r6, r7
- ble SHORT G_M28069_IG21
+ ble SHORT G_M28069_IG20
cmp r7, 0
- blt SHORT G_M28069_IG20
+ blt SHORT G_M28069_IG19
;; size=72 bbWeight=0.50 PerfScore 13.00
-G_M28069_IG18: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG17: ; bbWeight=3.96, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[r0] ...

+20 (+2.87%) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)

@@ -8,32 +8,32 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 7, 8.50) ref -> r4 class-hnd single-def <System.String> -; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r7 single-def -; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r5 single-def -; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r6 single-def -; V04 loc0 [V04,T00] ( 26, 36 ) int -> r8 -; V05 loc1 [V05,T10] ( 6, 3 ) int -> [sp+0x14]
+; V00 arg0 [V00,T07] ( 6, 8 ) ref -> r4 class-hnd single-def <System.String> +; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r7 single-def +; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r5 single-def +; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r6 single-def +; V04 loc0 [V04,T00] ( 20, 32.50) int -> r8 +; V05 loc1 [V05,T11] ( 6, 3 ) int -> [sp+0x1C]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r1
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r1
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r1
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r1
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r3
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> lr
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref
-; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r3
+; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> lr
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r1
+; V15 tmp1 [V15,T23] ( 3, 2 ) int -> r1
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp3 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref ;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T33] ( 3, 1.50) int -> r3
+; V20 tmp6 [V20,T33] ( 3, 1.50) int -> lr
;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp10 [V24,T18] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg" -; V25 tmp11 [V25,T23] ( 2, 2 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
+; V24 tmp10 [V24,T19] ( 3, 3 ) int -> [sp+0x18] spill-single-def "Inlining Arg" +; V25 tmp11 [V25,T24] ( 2, 2 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp14 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -48,18 +48,18 @@ ;* V37 tmp23 [V37 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V38 tmp24 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp25 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T24] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V40 tmp26 [V40,T25] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V41 tmp27 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp29 [V43,T19] ( 3, 3 ) int -> r8 "Single return block return value"
+; V43 tmp29 [V43,T20] ( 3, 3 ) int -> r8 "Single return block return value"
;* V44 tmp30 [V44 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp31 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP ;* V46 tmp32 [V46 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp33 [V47 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP ; V48 tmp34 [V48,T36] ( 2, 1 ) byref -> r0 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp35 [V49,T40] ( 2, 1 ) int -> r2 "field V21._length (fldOffset=0x4)" P-INDEP
+; V49 tmp35 [V49,T40] ( 2, 1 ) int -> lr "field V21._length (fldOffset=0x4)" P-INDEP
; V50 tmp36 [V50,T37] ( 2, 1 ) byref -> r0 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp37 [V51,T41] ( 2, 1 ) int -> r2 "field V22._length (fldOffset=0x4)" P-INDEP
+; V51 tmp37 [V51,T41] ( 2, 1 ) int -> lr "field V22._length (fldOffset=0x4)" P-INDEP
;* V52 tmp38 [V52 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP ;* V54 tmp40 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP @@ -74,35 +74,35 @@ ;* V63 tmp49 [V63,T44] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V64 tmp50 [V64 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V65 tmp51 [V65 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
-; V66 cse0 [V66,T21] ( 4, 2 ) int -> r3 "CSE - moderate" -; V67 cse1 [V67,T31] ( 3, 1.50) byref -> r4 "CSE - moderate" -; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - moderate" -; V69 cse3 [V69,T01] ( 10, 17 ) int -> r9 hoist "CSE - aggressive" -; V70 cse4 [V70,T02] ( 13, 15 ) byref -> r10 multi-def "CSE - aggressive" -; V71 cse5 [V71,T35] ( 3, 1.50) int -> [sp+0x08] spill-single-def "CSE - conservative" -; V72 cse6 [V72,T32] ( 3, 1.50) ref -> r1 "CSE - moderate" -; V73 rat0 [V73,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V74 rat1 [V74,T13] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable" -; V75 rat2 [V75,T25] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V76 rat3 [V76,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V77 rat4 [V77,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V78 rat5 [V78,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" -; V79 rat6 [V79,T27] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V80 rat7 [V80,T28] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V81 rat8 [V81,T16] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" -; V82 rat9 [V82,T17] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable" -; V83 rat10 [V83,T29] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" -; V84 rat11 [V84,T30] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; TEMP_01 ref -> [r11-0x38]
+; V66 cse0 [V66,T22] ( 4, 2 ) int -> lr "CSE - moderate" +; V67 cse1 [V67,T32] ( 3, 1.50) byref -> r4 "CSE - moderate" +; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x14] spill-single-def "CSE - moderate" +; V69 cse3 [V69,T01] ( 9, 16 ) int -> r9 hoist "CSE - aggressive" +; V70 cse4 [V70,T02] ( 12, 14.50) byref -> r10 multi-def "CSE - aggressive" +; V71 cse5 [V71,T05] ( 11, 12.50) int -> [sp+0x10] multi-def "CSE - aggressive" +; V72 cse6 [V72,T35] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - conservative" +; V73 rat0 [V73,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V74 rat1 [V74,T14] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable" +; V75 rat2 [V75,T26] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V76 rat3 [V76,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V77 rat4 [V77,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V78 rat5 [V78,T16] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" +; V79 rat6 [V79,T28] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V80 rat7 [V80,T29] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V81 rat8 [V81,T17] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" +; V82 rat9 [V82,T18] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable" +; V83 rat10 [V83,T30] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" +; V84 rat11 [V84,T31] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; TEMP_01 ref -> [r11-0x3C]
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28 - add r11, sp, 56
+ sub sp, 36 + add r11, sp, 64
movs r4, 0
- str r4, [sp] // [TEMP_01]
+ str r4, [sp+0x04] // [TEMP_01]
mov r4, r0 ; gcrRegs +[r4] mov r7, r1 @@ -122,96 +122,90 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r ;; size=4 bbWeight=2 PerfScore 2.00 G_M49978_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz cmp r9, r8
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00 G_M49978_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz add r10, r4, 8 ; byrRegs +[r10]
- lsl r0, r8, 1 - ldrh r0, [r10+r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.UriHelper:IsLWS(ushort):ubyte - ; byrRegs -[r10]
+ lsl r3, r8, 1 + str r3, [sp+0x10] + ldrh r0, [r10+r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0 cmp r0, 0 bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 36.00 -G_M49978_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - cmp r9, r8 - bls SHORT G_M49978_IG10 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - add r10, r4, 8 - ; byrRegs +[r10] - lsl r1, r8, 1 - ldrh r1, [r10+r1] - cmp r1, 47 - beq SHORT G_M49978_IG08
+ ;; size=30 bbWeight=4 PerfScore 40.00 +G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=04E0 {r5 r6 r7 r10}, byref, isz + ldr r2, [sp+0x10] // [V71 cse5] + ldrh r2, [r10+r2] + cmp r2, 47 + beq SHORT G_M49978_IG07
movs r1, 0
- b SHORT G_M49978_IG09 - ;; size=20 bbWeight=0.50 PerfScore 3.50 -G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+ b SHORT G_M49978_IG08 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
; byrRegs -[r10] movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz + b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
uxtb r1, r1 cmp r1, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r1, r8, 1 cmp r9, r1
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r1, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r1, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r10, r4, 8 ; byrRegs +[r10]
- lsl r1, r8, 1 - adds r1, r1, 2 - ldrh r2, [r10+r1] - cmp r2, 47 - beq SHORT G_M49978_IG15 - cmp r2, 92 - bne SHORT G_M49978_IG16
+ lsl r2, r8, 1 + adds r1, r2, 2 + ldrh r3, [r10+r1] + cmp r3, 47 + beq SHORT G_M49978_IG14 + cmp r3, 92 + bne SHORT G_M49978_IG15
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
; byrRegs -[r10]
- movs r3, 1 - b SHORT G_M49978_IG17 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref - movs r3, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - cmp r3, 0 - beq SHORT G_M49978_IG18
+ mov lr, 1
...

coreclr_tests.run.linux.arm.checked.mch

-18 (-13.85%) : 382899.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-18 (-13.85%) : 152988.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-16 (-8.42%) : 382917.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)

@@ -7,20 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 22 ) int -> r0 -; V01 arg1 [V01,T06] ( 5, 18 ) int -> r4 single-def -; V02 arg2 [V02,T08] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> -; V03 loc0 [V03,T00] ( 17,112 ) int -> r7 -; V04 loc1 [V04,T01] ( 14,104 ) int -> r1
+; V00 arg0 [V00,T06] ( 6, 22 ) int -> r0 +; V01 arg1 [V01,T07] ( 5, 18 ) int -> r4 single-def +; V02 arg2 [V02,T09] ( 5, 11 ) ref -> r5 class-hnd single-def <int[]> +; V03 loc0 [V03,T00] ( 16,110 ) int -> r7 +; V04 loc1 [V04,T01] ( 11, 98 ) int -> r1
; V05 loc2 [V05,T04] ( 4, 38 ) int -> lr
-; V06 loc3 [V06,T10] ( 4, 8 ) int -> r12
+; V06 loc3 [V06,T11] ( 4, 8 ) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T11] ( 2, 8 ) int -> r8 "Strict ordering of exceptions for Array store" -; V09 tmp2 [V09,T07] ( 2, 16 ) int -> r0 "arg temp" -; V10 cse0 [V10,T02] ( 11, 51 ) byref -> r6 hoist "CSE - aggressive" -; V11 cse1 [V11,T03] ( 7, 46 ) int -> r2 "CSE - aggressive" -; V12 cse2 [V12,T12] ( 3, 6 ) int -> r1 "CSE - aggressive" -; V13 cse3 [V13,T09] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V08 tmp1 [V08,T12] ( 2, 8 ) int -> r12 "Strict ordering of exceptions for Array store" +; V09 tmp2 [V09,T08] ( 2, 16 ) int -> r0 "arg temp" +; V10 cse0 [V10,T05] ( 3, 34 ) int -> r12 "CSE - aggressive" +; V11 cse1 [V11,T02] ( 10, 49 ) byref -> r6 hoist "CSE - aggressive" +; V12 cse2 [V12,T03] ( 6, 44 ) int -> r2 "CSE - aggressive" +; V13 cse3 [V13,T13] ( 3, 6 ) int -> r1 "CSE - aggressive" +; V14 cse4 [V14,T10] ( 3, 10 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -70,7 +71,7 @@ G_M36260_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by ;; size=2 bbWeight=8 PerfScore 8.00 G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r1, r7
- ble SHORT G_M36260_IG10
+ ble SHORT G_M36260_IG11
cmp r1, r2 bhs SHORT G_M36260_IG15 lsl r12, r1, 2 @@ -79,21 +80,15 @@ G_M36260_IG09: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, b bge SHORT G_M36260_IG08 ;; size=20 bbWeight=16 PerfScore 128.00 G_M36260_IG10: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz
- cmp r7, r1 - bge SHORT G_M36260_IG11
cmp r7, r2 bhs SHORT G_M36260_IG15
- lsl r12, r7, 2 - ldr r12, [r6+r12] - cmp r1, r2 - bhs SHORT G_M36260_IG15 - lsl r8, r1, 2
+ lsl r8, r7, 2
ldr r8, [r6+r8] lsl r9, r7, 2
- str r8, [r6+r9] - lsl r8, r1, 2 - str r12, [r6+r8] - ;; size=44 bbWeight=2 PerfScore 28.00
+ str r12, [r6+r9] + lsl r12, r1, 2 + str r8, [r6+r12] + ;; size=28 bbWeight=2 PerfScore 16.00
G_M36260_IG11: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz cmp r7, r1 blt SHORT G_M36260_IG06 @@ -104,9 +99,9 @@ G_M36260_IG12: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, by cmp r7, r2 bhs SHORT G_M36260_IG15 lsls r1, r7, 2
- ldr r12, [r6+r1]
+ ldr r8, [r6+r1]
str lr, [r6+r1]
- str r12, [r6+r3]
+ str r8, [r6+r3]
;; size=18 bbWeight=2 PerfScore 12.00 G_M36260_IG13: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, byref, isz subs r1, r7, 1 @@ -134,7 +129,7 @@ G_M36260_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 12, PerfScore 418.00, instruction count 71, allocated bytes for code 190 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
+; Total bytes of code 174, prolog size 12, PerfScore 406.00, instruction count 65, allocated bytes for code 174 (MethodHash=1870725b) for method Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +141,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+10 (+1.99%) : 136822.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)

@@ -18,19 +18,19 @@ ;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T22] ( 2, 2 ) int -> r12 "Inlining Arg" -; V11 tmp6 [V11,T20] ( 2, 2 ) byref -> lr single-def "Inlining Arg"
+; V10 tmp5 [V10,T21] ( 2, 2 ) int -> r12 "Inlining Arg" +; V11 tmp6 [V11,T19] ( 2, 2 ) byref -> lr single-def "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V15 tmp10 [V15,T23] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Type>
-; V16 tmp11 [V16,T16] ( 6, 3 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
+; V16 tmp11 [V16,T16] ( 7, 3 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName>
; V17 tmp12 [V17,T24] ( 5, 1.00) ref -> r5 class-hnd "Inline stloc first use temp" <System.String> ;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V19 tmp14 [V19,T25] ( 3, 1 ) ref -> r0 "guarded devirt return temp" ;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName> ;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V22 tmp17 [V22,T17] ( 4, 2.00) int -> r7 "Inline stloc first use temp"
+; V22 tmp17 [V22,T22] ( 4, 1.50) int -> r7 "Inline stloc first use temp"
; V23 tmp18 [V23,T31] ( 3, 0 ) int -> r0 "Span.get_Item index" ; V24 tmp19 [V24,T26] ( 3, 1.00) int -> r6 ;* V25 tmp20 [V25 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" @@ -55,11 +55,11 @@ ;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp40 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V46 tmp41 [V46 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
-; V47 tmp42 [V47,T21] ( 2, 2 ) ref -> r1 class-hnd exact single-def "impAppendStmt" <System.String>
+; V47 tmp42 [V47,T20] ( 2, 2 ) ref -> r1 class-hnd exact single-def "impAppendStmt" <System.String>
;* V48 tmp43 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
-; V50 tmp45 [V50,T18] ( 3, 2 ) byref -> lr "field V07._reference (fldOffset=0x0)" P-INDEP -; V51 tmp46 [V51,T19] ( 3, 2 ) int -> r12 "field V07._length (fldOffset=0x4)" P-INDEP
+; V50 tmp45 [V50,T17] ( 3, 2 ) byref -> lr "field V07._reference (fldOffset=0x0)" P-INDEP +; V51 tmp46 [V51,T18] ( 3, 2 ) int -> r12 "field V07._length (fldOffset=0x4)" P-INDEP
; V52 tmp47 [V52,T27] ( 2, 1 ) byref -> lr single-def "field V08._reference (fldOffset=0x0)" P-INDEP ; V53 tmp48 [V53,T29] ( 2, 1 ) int -> r12 "field V08._length (fldOffset=0x4)" P-INDEP ;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP @@ -178,8 +178,8 @@ G_M33298_IG15: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre mov r4, r0 ; gcrRegs +[r4] cmp r4, 0
- beq G_M33298_IG38 - ;; size=36 bbWeight=1 PerfScore 13.00
+ beq SHORT G_M33298_IG35 + ;; size=34 bbWeight=1 PerfScore 13.00
G_M33298_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r0] movs r5, 0 @@ -195,14 +195,14 @@ G_M33298_IG17: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ;; size=8 bbWeight=4 PerfScore 16.00 G_M33298_IG18: ; bbWeight=3.89, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, r3
- bhs G_M33298_IG37
+ bhs SHORT G_M33298_IG34
ldr r3, [sp+0x28] ; byrRegs +[r3] lsls r0, r0, 1 ldrh r0, [r3+r0] cmp r0, 256 blo SHORT G_M33298_IG21
- ;; size=18 bbWeight=3.89 PerfScore 27.25
+ ;; size=16 bbWeight=3.89 PerfScore 27.25
G_M33298_IG19: ; bbWeight=3.89, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r3] movw r3, 0xd1ff @@ -211,8 +211,8 @@ G_M33298_IG19: ; bbWeight=3.89, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- bne G_M33298_IG39 - ;; size=18 bbWeight=3.89 PerfScore 23.36
+ bne SHORT G_M33298_IG36 + ;; size=16 bbWeight=3.89 PerfScore 23.36
G_M33298_IG20: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz b SHORT G_M33298_IG22 ;; size=2 bbWeight=0.50 PerfScore 0.50 @@ -222,13 +222,13 @@ G_M33298_IG21: ; bbWeight=3.89, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- bne SHORT G_M33298_IG39
+ bne SHORT G_M33298_IG36
;; size=18 bbWeight=3.89 PerfScore 23.36 G_M33298_IG22: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x18] ldr r3, [sp+0x2C] cmp r0, r3
- blt SHORT G_M33298_IG40
+ blt SHORT G_M33298_IG37
movs r6, 0 ;; size=10 bbWeight=0.50 PerfScore 2.50 G_M33298_IG23: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz @@ -240,12 +240,12 @@ G_M33298_IG23: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcr arg pop 0 mov r7, r0 cmp r7, 0
- beq SHORT G_M33298_IG35
+ beq SHORT G_M33298_IG31
;; size=20 bbWeight=0.50 PerfScore 4.00 G_M33298_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] cmp r7, 7
- beq SHORT G_M33298_IG31
+ beq SHORT G_M33298_IG39
;; size=4 bbWeight=0.50 PerfScore 1.00 G_M33298_IG25: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x18] @@ -255,7 +255,7 @@ G_M33298_IG25: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=8 bbWeight=4 PerfScore 16.00 G_M33298_IG26: ; bbWeight=3.89, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r0, r3
- bhs SHORT G_M33298_IG37
+ bhs SHORT G_M33298_IG34
ldr r3, [sp+0x28] ; byrRegs +[r3] lsls r0, r0, 1 @@ -271,7 +271,7 @@ G_M33298_IG27: ; bbWeight=3.89, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M33298_IG41
+ bne SHORT G_M33298_IG38
;; size=16 bbWeight=3.89 PerfScore 23.36 G_M33298_IG28: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz b SHORT G_M33298_IG30 @@ -282,69 +282,27 @@ G_M33298_IG29: ; bbWeight=3.89, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- bne SHORT G_M33298_IG41
+ bne SHORT G_M33298_IG38
;; size=18 bbWeight=3.89 PerfScore 23.36 G_M33298_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x18] ldr r3, [sp+0x2C] cmp r2, r3
- bge SHORT G_M33298_IG31
+ bge SHORT G_M33298_IG39
ldr r2, [sp+0x18] adds r2, r2, 1 str r2, [sp+0x18]
- ;; size=14 bbWeight=0.50 PerfScore 3.50 -G_M33298_IG31: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r7, 3 - bne SHORT G_M33298_IG42 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M33298_IG32: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - add r0, sp, 8 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M33298_IG38 - add r0, sp, 8 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this - ; gcrRegs +[r0] - ; gcr arg pop 0 - mov r5, r0
+ b SHORT G_M33298_IG39 + ;; size=16 bbWeight=0.50 PerfScore 4.00 +G_M33298_IG31: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5]
- cmp r5, 0 - beq SHORT G_M33298_IG38 - add r0, sp, 8 - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:get_Peek():int:this - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M33298_IG33 - movs r0, 0 - b SHORT G_M33298_IG34 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M33298_IG33: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - movs r0, 1 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M33298_IG34: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - ; gcr arg pop 0 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M33298_IG35: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r2, [r4] movw r3, 0xd1ff movt r3, 0xd1ff cmp r2, r3 bne SHORT G_M33298_IG43
+ ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M33298_IG32: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
ldr r1, [r4+0x04] ; gcrRegs +[r1] movs r2, 0 @@ -358,41 +316,41 @@ G_M33298_IG35: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} blx lr // <unknown method> ; gcrRegs -[r1 r4-r5] +[r0] ; gcr arg pop 0
- ;; size=38 bbWeight=0.50 PerfScore 7.00 -G_M33298_IG36: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=24 bbWeight=0.50 PerfScore 4.50 +G_M33298_IG33: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 48 pop {r4,r5,r6,r7,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M33298_IG37: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33298_IG34: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M33298_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r0, 0
- b SHORT G_M33298_IG36
+ b SHORT G_M33298_IG33
;; size=4 bbWeight=0 PerfScore 0.00
-G_M33298_IG39: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG36: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5] ldr r0, [sp+0x18] adds r0, r0, 1 str r0, [sp+0x18] b SHORT G_M33298_IG17 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M33298_IG40: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M33298_IG37: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x18] ldr r3, [sp+0x2C] cmp r0, r3
- bhs SHORT G_M33298_IG37
+ bhs SHORT G_M33298_IG34
ldr r3, [sp+0x28] ; byrRegs +[r3] lsls r0, r0, 1 ldrh r6, [r3+r0] b SHORT G_M33298_IG23 ;; size=16 bbWeight=0 PerfScore 0.00 ...

+10 (+2.08%) : 116831.dasm - System.Type:GetType(System.String):System.Type (Tier1)

@@ -12,25 +12,25 @@ ; V01 loc0 [V01 ] ( 2, 2 ) int -> [sp+0x2C] do-not-enreg[X] addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 2, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeAssembly>
-; V04 tmp2 [V04,T09] ( 3, 2 ) ref -> r0 class-hnd "Inline return value spill temp" <System.Type> -; V05 tmp3 [V05 ] ( 39, 25 ) struct (40) [sp+0x04] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
+; V04 tmp2 [V04,T08] ( 3, 2 ) ref -> r0 class-hnd "Inline return value spill temp" <System.Type> +; V05 tmp3 [V05 ] ( 39, 24.50) struct (40) [sp+0x04] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp8 [V10,T11] ( 2, 2 ) int -> r2 "Inlining Arg" -; V11 tmp9 [V11,T10] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V10 tmp8 [V10,T10] ( 2, 2 ) int -> r2 "Inlining Arg" +; V11 tmp9 [V11,T09] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp12 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V15 tmp13 [V15,T13] ( 3, 1 ) ref -> r0 class-hnd "Inline return value spill temp" <System.Type>
-; V16 tmp14 [V16,T07] ( 6, 2 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> -; V17 tmp15 [V17,T12] ( 5, 1 ) ref -> r5 class-hnd "Inline stloc first use temp" <System.String>
+; V16 tmp14 [V16,T07] ( 7, 2 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> +; V17 tmp15 [V17,T11] ( 5, 1 ) ref -> r5 class-hnd "Inline stloc first use temp" <System.String>
;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V19 tmp17 [V19,T14] ( 3, 1 ) ref -> r0 "guarded devirt return temp" ;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NestedNamespaceTypeName> ;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V22 tmp20 [V22,T08] ( 4, 2 ) int -> r6 "Inline stloc first use temp"
+; V22 tmp20 [V22,T12] ( 4, 1 ) int -> r7 "Inline stloc first use temp"
; V23 tmp21 [V23,T20] ( 3, 0 ) int -> r0 "Span.get_Item index" ; V24 tmp22 [V24,T15] ( 3, 1 ) int -> r6 ;* V25 tmp23 [V25 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" @@ -54,11 +54,11 @@ ; V43 cse0 [V43,T02] ( 3, 12 ) int -> r0 "CSE - aggressive" ; V44 cse1 [V44,T03] ( 3, 12 ) int -> r3 "CSE - aggressive" ;
-; Lcl frame size = 52
+; Lcl frame size = 48
G_M11531_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr} - sub sp, 52
+ push {r4,r5,r6,r7,r11,lr} + sub sp, 48
add r11, sp, 64 sub r3, r11, 60 movs r4, 5 @@ -80,15 +80,15 @@ G_M11531_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // System.Reflection.Assembly:GetExecutingAssembly(byref):System.Reflection.RuntimeAssembly ; gcrRegs +[r0] cmp r4, 0
- beq G_M11531_IG33
+ beq SHORT G_M11531_IG29
ldr r3, [r4+0x04] cmp r3, 0 bne SHORT G_M11531_IG04
- ;; size=30 bbWeight=1 PerfScore 12.00
+ ;; size=28 bbWeight=1 PerfScore 12.00
G_M11531_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r4] movs r0, 0
- b SHORT G_M11531_IG31
+ b SHORT G_M11531_IG27
;; size=4 bbWeight=0.50 PerfScore 1.00 G_M11531_IG04: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref ; gcrRegs +[r0 r4] @@ -157,12 +157,12 @@ G_M11531_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b mov r4, r0 ; gcrRegs +[r4] cmp r4, 0
- beq G_M11531_IG34
+ beq SHORT G_M11531_IG30
movs r5, 0 ldr r0, [sp+0x14] // [V05 tmp3+0x10] ; gcrRegs -[r0] str r0, [sp+0x18] // [V05 tmp3+0x14]
- ;; size=34 bbWeight=0.50 PerfScore 6.50
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
G_M11531_IG20: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5] ldr r0, [sp+0x14] // [V05 tmp3+0x10] @@ -172,13 +172,13 @@ G_M11531_IG20: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ;; size=8 bbWeight=4 PerfScore 16.00 G_M11531_IG21: ; bbWeight=4.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, r3
- bhs SHORT G_M11531_IG32
+ bhs SHORT G_M11531_IG28
ldr r3, [sp+0x24] // [V05 tmp3+0x20] ; byrRegs +[r3] lsls r0, r0, 1 ldrh r0, [r3+r0] cmp r0, 256
- bhs SHORT G_M11531_IG36
+ bhs SHORT G_M11531_IG32
;; size=16 bbWeight=4.00 PerfScore 28.00 G_M11531_IG22: ; bbWeight=2.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref ; byrRegs -[r3] @@ -189,13 +189,13 @@ G_M11531_IG22: ; bbWeight=2.00, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ;; size=12 bbWeight=2.00 PerfScore 8.00 G_M11531_IG23: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, 0
- bne SHORT G_M11531_IG35
+ bne SHORT G_M11531_IG31
;; size=4 bbWeight=4 PerfScore 8.00 G_M11531_IG24: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x14] // [V05 tmp3+0x10] ldr r3, [sp+0x28] // [V05 tmp3+0x24] cmp r0, r3
- blt SHORT G_M11531_IG37
+ blt SHORT G_M11531_IG33
movs r6, 0 ;; size=10 bbWeight=0.50 PerfScore 2.50 G_M11531_IG25: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz @@ -204,66 +204,16 @@ G_M11531_IG25: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Reflection.TypeNameParser:CharToToken(ushort):int
- mov r6, r0 - cmp r6, 0 - beq SHORT G_M11531_IG30 - cmp r6, 7 - beq SHORT G_M11531_IG26 - add r0, sp, 4 // [V05 tmp3] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:Skip():this - ; gcrRegs -[r5] - ;; size=38 bbWeight=0.50 PerfScore 7.50 -G_M11531_IG26: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r6, 3 - bne SHORT G_M11531_IG38 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M11531_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - add r0, sp, 4 // [V05 tmp3] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this - cmp r0, 0 - beq SHORT G_M11531_IG34 - add r0, sp, 4 // [V05 tmp3] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this - ; gcrRegs +[r0] - mov r5, r0 - ; gcrRegs +[r5] - cmp r5, 0 - beq SHORT G_M11531_IG34 - add r0, sp, 4 // [V05 tmp3] - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:get_Peek():int:this - cmp r0, 0 - beq SHORT G_M11531_IG28 - movs r0, 0 - b SHORT G_M11531_IG29 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M11531_IG28: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - movs r0, 1 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M11531_IG29: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M11531_IG30: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ mov r7, r0 + cmp r7, 0 + bne SHORT G_M11531_IG34
ldr r1, [r4] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0 bne SHORT G_M11531_IG39
+ ;; size=34 bbWeight=0.50 PerfScore 6.50 +G_M11531_IG26: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
add r1, sp, 4 // [V05 tmp3] mov r0, r4 ; gcrRegs +[r0] @@ -274,18 +224,18 @@ G_M11531_IG30: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // System.Reflection.TypeNameParser+NestedNamespaceTypeName:ResolveType(byref,System.String):System.Type:this ; gcrRegs -[r2 r4-r5]
- ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M11531_IG31: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - add sp, 52 - pop {r4,r5,r6,r11,pc}
+ ;; size=18 bbWeight=0.50 PerfScore 3.50 +G_M11531_IG27: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + add sp, 48 + pop {r4,r5,r6,r7,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M11531_IG32: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11531_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ;; size=10 bbWeight=0 PerfScore 0.00
-G_M11531_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M11531_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -301,47 +251,102 @@ G_M11531_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0] bkpt ;; size=40 bbWeight=0 PerfScore 0.00
-G_M11531_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M11531_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r0, 0
- b SHORT G_M11531_IG31
+ b SHORT G_M11531_IG27
;; size=4 bbWeight=0 PerfScore 0.00
-G_M11531_IG35: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M11531_IG31: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5] ldr r0, [sp+0x14] // [V05 tmp3+0x10] adds r0, r0, 1 str r0, [sp+0x14] // [V05 tmp3+0x10] b SHORT G_M11531_IG20 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M11531_IG36: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M11531_IG32: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte b SHORT G_M11531_IG23 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M11531_IG37: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M11531_IG33: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x14] // [V05 tmp3+0x10] ldr r3, [sp+0x28] // [V05 tmp3+0x24] cmp r0, r3
- bhs SHORT G_M11531_IG32
+ bhs SHORT G_M11531_IG28
ldr r3, [sp+0x24] // [V05 tmp3+0x20] ; byrRegs +[r3] lsls r0, r0, 1 ldrh r6, [r3+r0] b SHORT G_M11531_IG25 ;; size=16 bbWeight=0 PerfScore 0.00 ...

+14 (+2.93%) : 136807.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)

@@ -15,7 +15,7 @@ ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.RuntimeAssembly> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07 ] ( 37, 32.89) struct (40) [sp+0x00] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
+; V07 tmp2 [V07 ] ( 37, 32.39) struct (40) [sp+0x00] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.TypeNameParser>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -25,14 +25,14 @@ ;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V17 tmp12 [V17,T18] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Type> -; V18 tmp13 [V18,T10] ( 6, 3 ) ref -> r5 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> -; V19 tmp14 [V19,T19] ( 5, 1.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.String>
+; V17 tmp12 [V17,T17] ( 3, 1.50) ref -> r0 class-hnd "Inline return value spill temp" <System.Type> +; V18 tmp13 [V18,T10] ( 7, 3 ) ref -> r5 class-hnd single-def "Inline stloc first use temp" <System.Reflection.TypeNameParser+TypeName> +; V19 tmp14 [V19,T18] ( 5, 1.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.String>
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V21 tmp16 [V21,T20] ( 3, 1 ) ref -> r0 "guarded devirt return temp" ;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.TypeNameParser+NamespaceTypeName> ;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V24 tmp19 [V24,T13] ( 4, 2.00) int -> r4 "Inline stloc first use temp"
+; V24 tmp19 [V24,T19] ( 4, 1.00) int -> r8 "Inline stloc first use temp"
; V25 tmp20 [V25,T23] ( 3, 0 ) int -> r0 "Span.get_Item index" ; V26 tmp21 [V26,T21] ( 3, 1.00) int -> r7 ;* V27 tmp22 [V27 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" @@ -48,10 +48,10 @@ ;* V37 tmp32 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V40 tmp35 [V40,T14] ( 2, 2 ) byref -> r1 "field V09._reference (fldOffset=0x0)" P-INDEP -; V41 tmp36 [V41,T16] ( 2, 2 ) int -> lr "field V09._length (fldOffset=0x4)" P-INDEP -; V42 tmp37 [V42,T15] ( 2, 2 ) byref -> r1 single-def "field V10._reference (fldOffset=0x0)" P-INDEP -; V43 tmp38 [V43,T17] ( 2, 2 ) int -> lr "field V10._length (fldOffset=0x4)" P-INDEP
+; V40 tmp35 [V40,T13] ( 2, 2 ) byref -> r1 "field V09._reference (fldOffset=0x0)" P-INDEP +; V41 tmp36 [V41,T15] ( 2, 2 ) int -> lr "field V09._length (fldOffset=0x4)" P-INDEP +; V42 tmp37 [V42,T14] ( 2, 2 ) byref -> r1 single-def "field V10._reference (fldOffset=0x0)" P-INDEP +; V43 tmp38 [V43,T16] ( 2, 2 ) int -> lr "field V10._length (fldOffset=0x4)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP ;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP @@ -70,13 +70,13 @@ ; V59 cse0 [V59,T02] ( 3, 11.89) int -> r0 "CSE - aggressive" ; V60 cse1 [V60,T03] ( 3, 11.89) int -> r3 "CSE - aggressive" ;
-; Lcl frame size = 40
+; Lcl frame size = 44
G_M21860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - sub sp, 40 - add r11, sp, 56 - sub r6, r11, 56
+ push {r4,r5,r6,r7,r8,r11,lr} + sub sp, 44 + add r11, sp, 64 + sub r6, r11, 64
movs r7, 5 movs r4, 0 movs r5, 0 @@ -89,13 +89,13 @@ G_M21860_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M21860_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r4, 0
- beq G_M21860_IG31 - ;; size=6 bbWeight=1 PerfScore 2.00
+ beq SHORT G_M21860_IG27 + ;; size=4 bbWeight=1 PerfScore 2.00
G_M21860_IG03: ; bbWeight=0.47, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz ldr r1, [r4+0x04] cmp r1, 0
- beq G_M21860_IG31 - ;; size=8 bbWeight=0.47 PerfScore 1.41
+ beq SHORT G_M21860_IG27 + ;; size=6 bbWeight=0.47 PerfScore 1.41
G_M21860_IG04: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref add r1, r4, 8 ; byrRegs +[r1] @@ -151,8 +151,8 @@ G_M21860_IG14: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre mov r5, r0 ; gcrRegs +[r5] cmp r5, 0
- beq G_M21860_IG32 - ;; size=38 bbWeight=1 PerfScore 13.00
+ beq SHORT G_M21860_IG28 + ;; size=36 bbWeight=1 PerfScore 13.00
G_M21860_IG15: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r0] movs r6, 0 @@ -168,7 +168,7 @@ G_M21860_IG16: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ;; size=8 bbWeight=4 PerfScore 16.00 G_M21860_IG17: ; bbWeight=3.89, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz cmp r0, r3
- bhs SHORT G_M21860_IG30
+ bhs SHORT G_M21860_IG26
ldr r3, [sp+0x20] ; byrRegs +[r3] lsls r0, r0, 1 @@ -184,7 +184,7 @@ G_M21860_IG18: ; bbWeight=3.89, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M21860_IG33
+ bne SHORT G_M21860_IG29
;; size=16 bbWeight=3.89 PerfScore 23.36 G_M21860_IG19: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz b SHORT G_M21860_IG21 @@ -195,13 +195,13 @@ G_M21860_IG20: ; bbWeight=3.89, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ldrb r0, [r3+r0] ands r0, r0, 128 cmp r0, 0
- bne SHORT G_M21860_IG33
+ bne SHORT G_M21860_IG29
;; size=18 bbWeight=3.89 PerfScore 23.36 G_M21860_IG21: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x10] ldr r3, [sp+0x24] cmp r0, r3
- blt SHORT G_M21860_IG34
+ blt SHORT G_M21860_IG30
movs r7, 0 ;; size=10 bbWeight=0.50 PerfScore 2.50 G_M21860_IG22: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz @@ -211,73 +211,18 @@ G_M21860_IG22: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // System.Reflection.TypeNameParser:CharToToken(ushort):int ; gcr arg pop 0
- mov r4, r0 - cmp r4, 0 - beq SHORT G_M21860_IG28 - ;; size=20 bbWeight=0.50 PerfScore 4.00 -G_M21860_IG23: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r6] - cmp r4, 7 - beq SHORT G_M21860_IG24 - add r0, sp, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:Skip():this - ; gcr arg pop 0 - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M21860_IG24: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - cmp r4, 3 - bne SHORT G_M21860_IG35 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M21860_IG25: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - add r0, sp, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:CheckTopLevelAssemblyQualifiedName():ubyte:this - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M21860_IG32 - add r0, sp, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:GetNextAssemblyName():System.String:this - ; gcrRegs +[r0] - ; gcr arg pop 0 - mov r6, r0 - ; gcrRegs +[r6] - cmp r6, 0 - beq SHORT G_M21860_IG32 - add r0, sp, 0 - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Reflection.TypeNameParser:get_Peek():int:this - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M21860_IG26 - movs r0, 0 - b SHORT G_M21860_IG27 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M21860_IG26: ; bbWeight=0, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref - movs r0, 1 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M21860_IG27: ; bbWeight=0, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.Diagnostics.Debug:Assert(ubyte) - ; gcr arg pop 0 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M21860_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ mov r8, r0 + cmp r8, 0 + bne SHORT G_M21860_IG31 + ;; size=22 bbWeight=0.50 PerfScore 4.00 +G_M21860_IG23: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r5] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0 bne SHORT G_M21860_IG36
+ ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M21860_IG24: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
add r1, sp, 0 mov r0, r5 ; gcrRegs +[r0] @@ -289,19 +234,19 @@ G_M21860_IG28: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} blx r3 // System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this ; gcrRegs -[r2 r5-r6] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M21860_IG29: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc - add sp, 40 - pop {r4,r5,r6,r7,r11,pc}
+ ;; size=18 bbWeight=0.50 PerfScore 3.50 +G_M21860_IG25: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + add sp, 44 + pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M21860_IG30: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M21860_IG26: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M21860_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M21860_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs +[r4] movw r0, 0xd1ff movw r1, 0xd1ff @@ -322,41 +267,101 @@ G_M21860_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcr arg pop 0 bkpt ;; size=40 bbWeight=0 PerfScore 0.00
-G_M21860_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21860_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r0, 0
- b SHORT G_M21860_IG29
+ b SHORT G_M21860_IG25
;; size=4 bbWeight=0 PerfScore 0.00
-G_M21860_IG33: ; bbWeight=0, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M21860_IG29: ; bbWeight=0, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5-r6] ldr r0, [sp+0x10] adds r0, r0, 1 str r0, [sp+0x10] b SHORT G_M21860_IG16 ;; size=8 bbWeight=0 PerfScore 0.00 ...

libraries.crossgen2.linux.arm.checked.mch

-32 (-25.81%) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,15 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def -; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def -; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def +; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def +; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive" +; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive" +; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -43,11 +45,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00 G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8 ; byrRegs +[r5] lsls r6, r4, 1 @@ -56,7 +58,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by adds r6, r2, r4 ldr r7, [r1+0x04] cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1 add r7, r1, 8 ; byrRegs +[r7] @@ -64,42 +66,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by cmp r5, r6 beq SHORT G_M6389_IG05 ;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12 - bge SHORT G_M6389_IG11 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz - cmp r4, lr - bhs SHORT G_M6389_IG13 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r4, 1 - ldrh r0, [r0+r3] - ; byrRegs -[r0] - adds r6, r2, r4 - ldr lr, [r1+0x04] - cmp r6, lr - bhs SHORT G_M6389_IG13 - lsls r3, r6, 1 - add r2, r1, 8 - ; byrRegs +[r2] - ldrh r3, [r2+r3] - subs r0, r0, r3 - ;; size=30 bbWeight=0.50 PerfScore 6.50 -G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r1] - ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E add r3, pc @@ -109,7 +90,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 92.50, instruction count 50, allocated bytes for code 124 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 84.50, instruction count 36, allocated bytes for code 92 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -121,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 62 (0x0003e) Actual length = 124 (0x00007c)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-18 (-13.43%) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -8,87 +8,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -96,7 +87,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -110,7 +101,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 10, PerfScore 74.50, instruction count 55, allocated bytes for code 134 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 116, prolog size 10, PerfScore 66.00, instruction count 45, allocated bytes for code 116 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -122,7 +113,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 67 (0x00043) Actual length = 134 (0x000086)
+ Function Length : 58 (0x0003a) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -137,11 +128,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-20 (-10.31%) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)

@@ -9,14 +9,15 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 21 ) ref -> r0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> r3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 24 ) int -> r1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> r1 "index expr" -; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V07 cse0 [V07,T00] ( 9, 31 ) int -> r5 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 5, 22 ) int -> r2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr" +; V05 tmp3 [V05,T07] ( 2, 0 ) ref -> r0 single-def "argument with side effect" +; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> r0 single-def "argument with side effect" +; V07 cse0 [V07,T05] ( 3, 9 ) int -> r2 "CSE - aggressive" +; V08 cse1 [V08,T00] ( 7, 29 ) int -> r5 "CSE - aggressive" +; V09 cse2 [V09,T03] ( 3, 20 ) int -> r2 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -35,23 +36,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b str r5, [r0+0x18] ldr r2, [r3+0x04] cmp r2, r5
- ble SHORT G_M44374_IG05
+ ble SHORT G_M44374_IG08
;; size=12 bbWeight=8 PerfScore 48.00 G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- mov r1, r5 - cmp r1, r2 - bhs SHORT G_M44374_IG07 - add lr, r3, 8 - ; byrRegs +[lr] - lsls r1, r1, 1 - ldrh r1, [lr+r1] - cmp r1, 35 - bne SHORT G_M44374_IG03 - ;; size=20 bbWeight=4 PerfScore 32.00 -G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - cmp r2, r5 - ble SHORT G_M44374_IG08
mov r1, r5 cmp r1, r2 bhs SHORT G_M44374_IG07 @@ -60,13 +47,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b lsls r1, r1, 1 ldrh r2, [r2+r1] ; byrRegs -[r2]
+ cmp r2, 35 + bne SHORT G_M44374_IG03 + ;; size=18 bbWeight=4 PerfScore 32.00 +G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
cmp r2, 35 bne SHORT G_M44374_IG09 movs r2, 7 str r2, [r0+0x20] adds r2, r5, 1 str r2, [r0+0x18]
- ;; size=30 bbWeight=1 PerfScore 14.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00 @@ -136,7 +127,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b bkpt ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 194, prolog size 8, PerfScore 98.00, instruction count 77, allocated bytes for code 194 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 174, prolog size 8, PerfScore 90.00, instruction count 69, allocated bytes for code 174 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================ Unwind Info: @@ -148,7 +139,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+1.00%) : 116014.dasm - Xunit.Assert:Equal(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)

@@ -15,10 +15,10 @@ ; V03 arg3 [V03,T11] ( 1, 2 ) ubyte -> r7 single-def ; V04 arg4 [V04,T04] ( 1, 16 ) ubyte -> r5 single-def ; V05 arg5 [V05,T14] ( 1, 1 ) ubyte -> [sp+0x54] single-def
-; V06 loc0 [V06,T00] ( 12, 33.50) int -> r8 -; V07 loc1 [V07,T01] ( 12, 33.50) int -> r9 -; V08 loc2 [V08,T05] ( 5, 6.50) int -> r10 single-def -; V09 loc3 [V09,T06] ( 5, 6.50) int -> [sp+0x0C] spill-single-def
+; V06 loc0 [V06,T01] ( 11, 33 ) int -> r8 +; V07 loc1 [V07,T00] ( 12, 33.50) int -> r9 +; V08 loc2 [V08,T06] ( 4, 6 ) int -> r10 single-def +; V09 loc3 [V09,T05] ( 5, 6.50) int -> [sp+0x0C] spill-single-def
; V10 loc4 [V10,T02] ( 8, 30 ) ushort -> [sp+0x08] ; V11 loc5 [V11,T03] ( 8, 30 ) ushort -> [sp+0x04] ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -51,7 +51,7 @@ G_M27411_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb r3, [sp+0x54] // [V05 arg5] str r3, [sp] // [V18 cse0] cmp r3, 0
- beq G_M27411_IG14
+ beq G_M27411_IG17
;; size=28 bbWeight=1 PerfScore 9.00 G_M27411_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp r10, 0 @@ -80,7 +80,7 @@ G_M27411_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M27411_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldr r4, [sp+0x0C] // [V09 loc3] cmp r4, 0
- bne G_M27411_IG14
+ bne G_M27411_IG17
ldr r0, [sp+0x38] // [V00 arg0] ; byrRegs +[r0] ldr r1, [sp+0x3C] // [V00 arg0+0x04] @@ -93,20 +93,20 @@ G_M27411_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, r10
- bne G_M27411_IG14
+ bne G_M27411_IG17
b SHORT G_M27411_IG04 ;; size=38 bbWeight=0.50 PerfScore 7.00 G_M27411_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r1, [sp+0x3C] // [V00 arg0+0x04] cmp r8, r1
- bhs G_M27411_IG17
+ bhs G_M27411_IG21
ldr r0, [sp+0x38] // [V00 arg0] ; byrRegs +[r0] lsl r2, r8, 1 ldrh lr, [r0+r2] ldr r2, [sp+0x44] // [V01 arg1+0x04] cmp r9, r2
- bhs G_M27411_IG17
+ bhs G_M27411_IG21
ldr r2, [sp+0x40] // [V01 arg1] ; byrRegs +[r2] lsl r12, r9, 1 @@ -114,19 +114,19 @@ G_M27411_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, uxtb r2, r7 ; byrRegs -[r2] cmp r2, 0
- beq SHORT G_M27411_IG09
+ beq SHORT G_M27411_IG10
cmp lr, 13 beq SHORT G_M27411_IG07 cmp lr, 10
- bne SHORT G_M27411_IG09
+ bne SHORT G_M27411_IG10
;; size=54 bbWeight=2 PerfScore 38.00 G_M27411_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz cmp r12, 13
- beq SHORT G_M27411_IG08
+ beq SHORT G_M27411_IG09
str r12, [sp+0x04] // [V11 loc5] cmp r12, 10 ldr r12, [sp+0x04] // [V11 loc5]
- bne SHORT G_M27411_IG09
+ bne SHORT G_M27411_IG10
;; size=20 bbWeight=2 PerfScore 12.00 G_M27411_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz mov r2, r8 @@ -150,12 +150,17 @@ G_M27411_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre ; byrRegs -[r0] ; gcr arg pop 0 mov r9, r0
- b SHORT G_M27411_IG14
+ b SHORT G_M27411_IG17
;; size=44 bbWeight=2 PerfScore 34.00
-G_M27411_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27411_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + b SHORT G_M27411_IG08 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M27411_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
ldr r3, [sp] // [V18 cse0] cmp r3, 0
- beq SHORT G_M27411_IG11
+ beq SHORT G_M27411_IG13
str r12, [sp+0x04] // [V11 loc5] str lr, [sp+0x08] // [V10 loc4] mov r0, lr @@ -166,7 +171,7 @@ G_M27411_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r2 // Xunit.Assert:IsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M27411_IG10
+ bne SHORT G_M27411_IG11
ldr r0, [sp+0x04] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -177,9 +182,9 @@ G_M27411_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp r0, 0 ldr r12, [sp+0x04] // [V11 loc5] ldr lr, [sp+0x08] // [V10 loc4]
- beq SHORT G_M27411_IG11
+ beq SHORT G_M27411_IG12
;; size=62 bbWeight=2 PerfScore 46.00
-G_M27411_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27411_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x38] // [V00 arg0] ; byrRegs +[r0] ldr r1, [sp+0x3C] // [V00 arg0+0x04] @@ -204,12 +209,15 @@ G_M27411_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs -[r0] ; gcr arg pop 0 mov r9, r0
- b SHORT G_M27411_IG14
+ b SHORT G_M27411_IG17
;; size=46 bbWeight=8 PerfScore 152.00
-G_M27411_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27411_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr r4, [sp+0x0C] // [V09 loc3] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M27411_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb r0, r5 cmp r0, 0
- beq SHORT G_M27411_IG12
+ beq SHORT G_M27411_IG15
str r12, [sp+0x04] // [V11 loc5] str lr, [sp+0x08] // [V10 loc4] mov r0, lr @@ -220,7 +228,7 @@ G_M27411_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r2 // Xunit.Assert:IsWhiteSpace(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M27411_IG16
+ beq SHORT G_M27411_IG19
ldr r0, [sp+0x04] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -231,12 +239,15 @@ G_M27411_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp r0, 0 ldr r12, [sp+0x04] // [V11 loc5] ldr lr, [sp+0x08] // [V10 loc4]
- bne SHORT G_M27411_IG10
+ bne SHORT G_M27411_IG11
;; size=62 bbWeight=16 PerfScore 368.00
-G_M27411_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27411_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr r4, [sp+0x0C] // [V09 loc3] + ;; size=2 bbWeight=8 PerfScore 8.00 +G_M27411_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb r0, r6 cmp r0, 0
- beq SHORT G_M27411_IG13
+ beq SHORT G_M27411_IG16
str r12, [sp+0x04] // [V11 loc5] mov r0, lr movw r4, LOW RELOC 0xD1FFAB1E @@ -255,35 +266,38 @@ G_M27411_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r4, r0 mov r12, r4
+ ldr r4, [sp+0x0C] // [V09 loc3]
ldr lr, [sp+0x08] // [V10 loc4]
- ;; size=52 bbWeight=2 PerfScore 40.00 -G_M27411_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=54 bbWeight=2 PerfScore 42.00 +G_M27411_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp lr, r12
- bne SHORT G_M27411_IG18
+ bne SHORT G_M27411_IG22
add r8, r8, 1 add r9, r9, 1 ;; size=12 bbWeight=2 PerfScore 8.00
-G_M27411_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27411_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r8, r10
- bge SHORT G_M27411_IG15
+ bge SHORT G_M27411_IG20
ldr r4, [sp+0x0C] // [V09 loc3] cmp r9, r4
- blt G_M27411_IG06 - ;; size=12 bbWeight=4 PerfScore 20.00 -G_M27411_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r8, r10 - blt SHORT G_M27411_IG18
+ bge SHORT G_M27411_IG22 + ;; size=10 bbWeight=4 PerfScore 20.00 +G_M27411_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M27411_IG06 + ;; size=2 bbWeight=2 PerfScore 2.00 +G_M27411_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp+0x0C] // [V09 loc3]
- cmp r9, r4 - blt SHORT G_M27411_IG18 - b SHORT G_M27411_IG04 - ;; size=12 bbWeight=0.50 PerfScore 3.00 -G_M27411_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r12, [sp+0x04] // [V11 loc5] ldr lr, [sp+0x08] // [V10 loc4]
- b SHORT G_M27411_IG12 - ;; size=10 bbWeight=8 PerfScore 24.00 -G_M27411_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b SHORT G_M27411_IG15 + ;; size=12 bbWeight=8 PerfScore 32.00 +G_M27411_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r4, [sp+0x0C] // [V09 loc3] + cmp r9, r4 + blt SHORT G_M27411_IG22 + b SHORT G_M27411_IG04 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M27411_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, LOW RELOC 0xD1FFAB1E movt r3, HIGH RELOC 0xD1FFAB1E add r3, pc @@ -291,7 +305,7 @@ G_M27411_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M27411_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27411_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r0, sp, 56 // [V00 arg0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -333,7 +347,7 @@ G_M27411_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=74 bbWeight=0 PerfScore 0.00
-; Total bytes of code 602, prolog size 18, PerfScore 778.50, instruction count 225, allocated bytes for code 602 (MethodHash=c27094ec) for method Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
+; Total bytes of code 608, prolog size 18, PerfScore 799.50, instruction count 229, allocated bytes for code 608 (MethodHash=c27094ec) for method Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -345,7 +359,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 301 (0x0012d) Actual length = 602 (0x00025a)
...

+22 (+1.02%) : 6974.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)

@@ -16,12 +16,12 @@ ; V04 arg4 [V04,T01] ( 23,149 ) int -> r5 ; V05 loc0 [V05,T61] ( 3, 3 ) int -> r0 ; V06 loc1 [V06 ] ( 23,125.50) struct (16) [r11-0x2C] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.ValueListBuilder`1[int]>
-; V07 loc2 [V07,T07] ( 15, 80 ) ref -> [r11-0x54] class-hnd <System.Text.StringBuilder> -; V08 loc3 [V08,T00] ( 28,205 ) int -> r7
+; V07 loc2 [V07,T08] ( 14, 76 ) ref -> [r11-0x54] class-hnd <System.Text.StringBuilder> +; V08 loc3 [V08,T00] ( 27,201 ) int -> r7
;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]> ;* V10 loc5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V11 loc6 [V11,T24] ( 5, 16 ) int -> r7
-; V12 loc7 [V12,T08] ( 5, 80 ) int -> r6
+; V12 loc7 [V12,T07] ( 5, 80 ) int -> r6
; V13 loc8 [V13,T55] ( 3, 6 ) int -> r3 ; V14 loc9 [V14,T39] ( 3, 12 ) ubyte -> [r11-0x30] spill-single-def ;* V15 loc10 [V15 ] ( 0, 0 ) ubyte -> zero-ref @@ -211,14 +211,14 @@ G_M39303_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r1, [r6+0x0C] adds r0, r0, r1 cmp r7, r0
- bhi G_M39303_IG72
+ bhi G_M39303_IG71
cmp r5, 0
- blt G_M39303_IG73
+ blt G_M39303_IG72
subs r0, r0, r5 cmp r0, r7
- blt G_M39303_IG73
+ blt G_M39303_IG72
cmp r8, 0
- beq G_M39303_IG74
+ beq G_M39303_IG73
add sp, 16 ldr r1, [sp] sub sp, sp, 512 @@ -252,7 +252,7 @@ G_M39303_IG03: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre cmp r5, 0 ldr r6, [r9+0x34] // [V00 this] ; gcrRegs +[r6]
- ble G_M39303_IG68
+ ble G_M39303_IG67
;; size=42 bbWeight=1 PerfScore 15.00 G_M39303_IG04: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] @@ -262,7 +262,7 @@ G_M39303_IG04: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefReg cmp r4, 0 bne SHORT G_M39303_IG06 ;; size=8 bbWeight=4 PerfScore 12.00
-G_M39303_IG05: ; bbWeight=2, gcVars=000000000000000000000080 {V07}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref
+G_M39303_IG05: ; bbWeight=2, gcVars=000000000000000000000100 {V07}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4] movw r1, LOW RELOC 0xD1FFAB1E movt r1, HIGH RELOC 0xD1FFAB1E @@ -316,7 +316,7 @@ G_M39303_IG10: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ; gcrRegs -[r3] orrs r3, r7, r12 cmp r3, 0
- bne G_M39303_IG75
+ bne G_M39303_IG74
mov lr, 0 ; byrRegs +[lr] mov r12, 0 @@ -327,11 +327,11 @@ G_M39303_IG11: ; bbWeight=2, gcrefRegs=0048 {r3 r6}, byrefRegs=0000 {}, b ; byrRegs -[lr] ldr lr, [r3+0x04] cmp lr, r7
- blo G_M39303_IG75
+ blo G_M39303_IG74
ldr r0, [r3+0x04] subs r0, r0, r7 cmp r0, r12
- blo G_M39303_IG75
+ blo G_M39303_IG74
adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3] @@ -348,7 +348,7 @@ G_M39303_IG13: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=4000 {lr}, by str r6, [r9+0x34] // [V00 this] ; GC ptr vars +{V00} ;; size=4 bbWeight=2 PerfScore 2.00
-G_M39303_IG14: ; bbWeight=16, gcVars=000000000000000000100080 {V00 V07}, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, gcvars, byref, isz
+G_M39303_IG14: ; bbWeight=16, gcVars=000000000000000000100100 {V00 V07}, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, gcvars, byref, isz
; gcrRegs -[r6] ldr r2, [r9+0x8C] // [V01 arg1] ; byrRegs +[r2] @@ -397,7 +397,7 @@ G_M39303_IG17: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r1, r6, r8 ldr r4, [r9+0x38] // [V111 tmp91] cmp r1, r4
- bhi G_M39303_IG75
+ bhi G_M39303_IG74
lsls r0, r1, 1 ldr r3, [r9+0x1C] // [V110 tmp90] ; byrRegs +[r3] @@ -409,7 +409,7 @@ G_M39303_IG17: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp r4, 0 bge SHORT G_M39303_IG19 ;; size=36 bbWeight=16 PerfScore 192.00
-G_M39303_IG18: ; bbWeight=8, gcVars=000000000000000000100280 {V00 V07 V62}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39303_IG18: ; bbWeight=8, gcVars=000000000000000000100300 {V00 V07 V62}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r3] ; GC ptr vars -{V110} movw r1, LOW RELOC 0xD1FFAB1E @@ -440,7 +440,7 @@ G_M39303_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp r5, 0 bge SHORT G_M39303_IG21 ;; size=28 bbWeight=16 PerfScore 144.00
-G_M39303_IG20: ; bbWeight=8, gcVars=000000000000000000100480 {V00 V07 V110}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39303_IG20: ; bbWeight=8, gcVars=000000000000000000100500 {V00 V07 V110}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r3] ; GC ptr vars -{V62} movw r1, LOW RELOC 0xD1FFAB1E @@ -477,7 +477,7 @@ G_M39303_IG21: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs +[lr] ble SHORT G_M39303_IG14 ;; size=18 bbWeight=16 PerfScore 112.00
-G_M39303_IG22: ; bbWeight=2, gcVars=000000000000000000100080 {V00 V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39303_IG22: ; bbWeight=2, gcVars=000000000000000000100100 {V00 V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[lr] ; GC ptr vars -{V110} ldr r6, [r9+0x34] // [V00 this] @@ -500,7 +500,7 @@ G_M39303_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref adds r7, r7, r3 subs r5, r5, r3 ;; size=18 bbWeight=2 PerfScore 12.00
-G_M39303_IG25: ; bbWeight=4, gcVars=000000000000000000000080 {V07}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M39303_IG25: ; bbWeight=4, gcVars=000000000000000000000100 {V07}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00} ldr r4, [r9+0x30] // [V07 loc2] ; gcrRegs +[r4] @@ -578,7 +578,7 @@ G_M39303_IG32: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ; gcrRegs +[r2] movs r1, 1 ;; size=76 bbWeight=2 PerfScore 52.00
-G_M39303_IG33: ; bbWeight=4, gcVars=000000000000000000000080 {V07}, gcrefRegs=0044 {r2 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M39303_IG33: ; bbWeight=4, gcVars=000000000000000000000100 {V07}, gcrefRegs=0044 {r2 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4] ; GC ptr vars -{V69} str r2, [r9+0x48] @@ -792,51 +792,46 @@ G_M39303_IG45: ; bbWeight=32, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byr ; gcrRegs +[r4] ldr r0, [r4+0x0C] cmp r7, r0
- bge SHORT G_M39303_IG47
+ bge SHORT G_M39303_IG50
;; size=10 bbWeight=32 PerfScore 128.00 G_M39303_IG46: ; bbWeight=16, gcVars=000000000000000000000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V07} cmp r5, 0 bgt SHORT G_M39303_IG41 ;; size=4 bbWeight=16 PerfScore 32.00
-G_M39303_IG47: ; bbWeight=4, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz - str r4, [r9+0x30] // [V07 loc2] - ; GC ptr vars +{V07} - ldr r3, [r4+0x0C] - cmp r7, r3 - bge SHORT G_M39303_IG51 - ;; size=10 bbWeight=4 PerfScore 16.00 -G_M39303_IG48: ; bbWeight=2, gcVars=000000000000000000000080 {V07}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r4]
+G_M39303_IG47: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M39303_IG49
+ beq SHORT G_M39303_IG48
movs r3, 0
- b SHORT G_M39303_IG50
+ b SHORT G_M39303_IG49
;; size=8 bbWeight=2 PerfScore 8.00
-G_M39303_IG49: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+G_M39303_IG48: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
movs r3, 1 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M39303_IG50: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M39303_IG52
+G_M39303_IG49: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz + b SHORT G_M39303_IG51
;; size=2 bbWeight=2 PerfScore 2.00
-G_M39303_IG51: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+G_M39303_IG50: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
movs r3, 1 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M39303_IG52: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M39303_IG51: ; bbWeight=4, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
uxtb r3, r3 str r3, [r9+0x44] // [V18 loc13] cmp r3, 0
- beq SHORT G_M39303_IG54
+ beq SHORT G_M39303_IG53
;; size=10 bbWeight=4 PerfScore 16.00
-G_M39303_IG53: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M39303_IG52: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
movs r2, 0 ; gcrRegs +[r2] movs r1, 0
- b SHORT G_M39303_IG55
+ b SHORT G_M39303_IG54
;; size=6 bbWeight=2 PerfScore 6.00
-G_M39303_IG54: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
+G_M39303_IG53: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ str r4, [r9+0x30] // [V07 loc2] + ; GC ptr vars +{V07}
movw r4, LOW RELOC 0xD1FFAB1E
+ ; gcrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r2, [r4] @@ -875,23 +870,25 @@ G_M39303_IG54: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre mov r2, r4 ; gcrRegs +[r2] movs r1, 1
- ;; size=76 bbWeight=2 PerfScore 52.00 -G_M39303_IG55: ; bbWeight=4, gcVars=000000000000000000000080 {V07}, gcrefRegs=0044 {r2 r6}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r4] - ; GC ptr vars -{V82} - str r2, [r9+0x48]
+ ldr r4, [r9+0x30] // [V07 loc2] + ;; size=84 bbWeight=2 PerfScore 56.00 +G_M39303_IG54: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0054 {r2 r4 r6}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V07 V82} + str r2, [r9+0x48] // [V16 loc11]
movs r0, 0 ; gcrRegs +[r0]
- str r0, [r9+0x4C]
+ str r0, [r9+0x4C] // [V16 loc11+0x04]
;; size=10 bbWeight=4 PerfScore 12.00
-G_M39303_IG56: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M39303_IG55: ; bbWeight=4, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r2]
- strb r0, [r9+0x50]
+ strb r0, [r9+0x50] // [V16 loc11+0x08]
cmp r1, 0
- beq SHORT G_M39303_IG58
+ beq SHORT G_M39303_IG57
;; size=8 bbWeight=4 PerfScore 12.00
-G_M39303_IG57: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref - ldr r0, [r9+0x48]
+G_M39303_IG56: ; bbWeight=2, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref + str r4, [r9+0x30] // [V07 loc2] + ; GC ptr vars +{V07} + ldr r0, [r9+0x48] // [V16 loc11]
; gcrRegs +[r0] ldrsb r1, [r0] movw r1, LOW RELOC 0xD1FFAB1E @@ -904,6 +901,7 @@ G_M39303_IG57: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ; gcrRegs -[r1] ; byrRegs +[r1] movw r4, LOW RELOC 0xD1FFAB1E
+ ; gcrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E ...

+24 (+3.33%) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)

@@ -9,49 +9,50 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 9, 9.50) ref -> r5 class-hnd single-def <System.String> -; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r8 single-def -; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r6 single-def -; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r7 single-def -; V04 loc0 [V04,T00] ( 27, 36.50) int -> r9 -; V05 loc1 [V05,T19] ( 5, 2.50) int -> [sp+0x1C]
+; V00 arg0 [V00,T07] ( 8, 9 ) ref -> r5 class-hnd single-def <System.String> +; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r8 single-def +; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r6 single-def +; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r7 single-def +; V04 loc0 [V04,T00] ( 21, 33 ) int -> r9 +; V05 loc1 [V05,T20] ( 5, 2.50) int -> [sp+0x1C]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r3
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r3
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r3
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r3
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r2
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> r2
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref ; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r2 ;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T21] ( 3, 2 ) int -> r3
+; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r3
; V16 tmp2 [V16 ] ( 3, 3 ) struct ( 8) [sp+0x14] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V17 tmp3 [V17 ] ( 3, 3 ) struct ( 8) [sp+0x0C] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref ;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T28] ( 3, 1.50) int -> r3 -; V21 tmp7 [V21,T18] ( 3, 3 ) int -> r9 "Single return block return value" -; V22 tmp8 [V22,T30] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP -; V23 tmp9 [V23,T32] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP -; V24 tmp10 [V24,T31] ( 2, 1.50) byref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V17._reference (fldOffset=0x0)" P-DEP -; V25 tmp11 [V25,T33] ( 2, 1.50) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V17._length (fldOffset=0x4)" P-DEP -; V26 cse0 [V26,T29] ( 3, 1.50) int -> r2 "CSE - moderate" -; V27 cse1 [V27,T01] ( 8, 16 ) int -> r10 hoist "CSE - aggressive" -; V28 cse2 [V28,T02] ( 13, 15 ) byref -> [sp+0x08] multi-def "CSE - aggressive" -; V29 cse3 [V29,T10] ( 6, 6 ) int -> registers multi-def "CSE - aggressive" -; V30 rat0 [V30,T12] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" -; V31 rat1 [V31,T13] ( 3, 3 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable" -; V32 rat2 [V32,T22] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" -; V33 rat3 [V33,T23] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" -; V34 rat4 [V34,T14] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" -; V35 rat5 [V35,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V36 rat6 [V36,T24] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" -; V37 rat7 [V37,T25] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" -; V38 rat8 [V38,T16] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" -; V39 rat9 [V39,T17] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" -; V40 rat10 [V40,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V41 rat11 [V41,T27] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" -; TEMP_01 ref -> [r11-0x3C]
+; V20 tmp6 [V20,T29] ( 3, 1.50) int -> r3 +; V21 tmp7 [V21,T19] ( 3, 3 ) int -> r9 "Single return block return value" +; V22 tmp8 [V22,T31] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP +; V23 tmp9 [V23,T33] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP +; V24 tmp10 [V24,T32] ( 2, 1.50) byref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V17._reference (fldOffset=0x0)" P-DEP +; V25 tmp11 [V25,T34] ( 2, 1.50) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V17._length (fldOffset=0x4)" P-DEP +; V26 cse0 [V26,T30] ( 3, 1.50) int -> r1 "CSE - moderate" +; V27 cse1 [V27,T01] ( 7, 15 ) int -> r10 hoist "CSE - aggressive" +; V28 cse2 [V28,T02] ( 12, 14.50) byref -> [sp+0x04] multi-def "CSE - aggressive" +; V29 cse3 [V29,T05] ( 11, 12.50) int -> [sp+0x08] multi-def "CSE - aggressive" +; V30 cse4 [V30,T11] ( 6, 6 ) int -> registers multi-def "CSE - aggressive" +; V31 rat0 [V31,T13] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" +; V32 rat1 [V32,T14] ( 3, 3 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable" +; V33 rat2 [V33,T23] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" +; V34 rat3 [V34,T24] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" +; V35 rat4 [V35,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" +; V36 rat5 [V36,T16] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V37 rat6 [V37,T25] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" +; V38 rat7 [V38,T26] ( 2, 2 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" +; V39 rat8 [V39,T17] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" +; V40 rat9 [V40,T18] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" +; V41 rat10 [V41,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V42 rat11 [V42,T28] ( 2, 2 ) int -> r2 "ReplaceWithLclVar is creating a new local variable" +; TEMP_01 ref -> [r11-0x40]
; ; Lcl frame size = 36 @@ -59,12 +60,13 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, 36 add r11, sp, 64
- sub r6, r11, 60
+ sub r6, r11, 64
movs r4, 0 movs r5, 0 stm r6!, {r4,r5} stm r6!, {r4,r5} stm r6!, {r4,r5}
+ str r4, [r6]
mov r5, r0 ; gcrRegs +[r5] mov r8, r1 @@ -73,7 +75,7 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r6] mov r7, r3 ; byrRegs +[r7]
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=34 bbWeight=1 PerfScore 14.00
G_M49978_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz mov r9, 0 ldr r10, [r5+0x04] @@ -84,97 +86,97 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r ;; size=4 bbWeight=2 PerfScore 2.00 G_M49978_IG04: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz cmp r10, r9
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00 G_M49978_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz add r4, r5, 8 ; byrRegs +[r4]
- lsl r0, r9, 1 - ldrh r0, [r4+r0]
+ lsl r3, r9, 1 + str r4, [sp+0x04] + ; GC ptr vars +{V28} + str r3, [sp+0x08] + ldrh r0, [r4+r3]
movw r4, LOW RELOC 0xD1FFAB1E ; byrRegs -[r4] movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r4] - blx r3 // System.UriHelper:IsLWS(ushort):ubyte
+ ldr r2, [r4] + blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0 cmp r0, 0 bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M49978_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz - cmp r10, r9 - bls SHORT G_M49978_IG10 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz - add r4, r5, 8
+ ;; size=32 bbWeight=4 PerfScore 48.00 +G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz + ldr r4, [sp+0x04] // [V28 cse2]
; byrRegs +[r4]
- lsl r3, r9, 1
+ ldr r3, [sp+0x08] // [V29 cse3]
ldrh r3, [r4+r3] cmp r3, 47
- beq SHORT G_M49978_IG08
+ beq SHORT G_M49978_IG07
movs r3, 0
- b SHORT G_M49978_IG09 - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+ b SHORT G_M49978_IG08 + ;; size=14 bbWeight=0.50 PerfScore 3.50 +G_M49978_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, gcvars, byref
; byrRegs -[r4]
+ ; GC ptr vars -{V28}
movs r3, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz - b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz + b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
uxtb r3, r3 cmp r3, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
add r3, r9, 1 cmp r10, r3
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r3, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r3, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r4, r5, 8 ; byrRegs +[r4] lsl r3, r9, 1 adds r3, r3, 2 ldrh r3, [r4+r3] cmp r3, 47
- beq SHORT G_M49978_IG15
+ beq SHORT G_M49978_IG14
cmp r3, 92
- bne SHORT G_M49978_IG16
+ bne SHORT G_M49978_IG15
;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
; byrRegs -[r4] movs r2, 1
- b SHORT G_M49978_IG17
+ b SHORT G_M49978_IG16
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r2, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r2, 0
- beq SHORT G_M49978_IG18
+ beq SHORT G_M49978_IG17
movs r3, 0
- b SHORT G_M49978_IG19
+ b SHORT G_M49978_IG18
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M49978_IG18: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
+G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref
movs r3, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG19: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
+G_M49978_IG18: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=01C0 {r6 r7 r8}, byref, isz
cmp r3, 0
- beq SHORT G_M49978_IG21
+ beq SHORT G_M49978_IG20
;; size=4 bbWeight=1 PerfScore 2.00
-G_M49978_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
+G_M49978_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7}, byref, isz
; gcrRegs -[r5] ; byrRegs -[r8] mov r3, r6 @@ -205,12 +207,12 @@ G_M49978_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {r6 r7} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0 r7] ...

libraries.pmi.linux.arm.checked.mch

-32 (-26.67%) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def -; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def -; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def +; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def +; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive" +; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive" +; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -42,11 +44,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00 G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8 ; byrRegs +[r5] lsls r6, r4, 1 @@ -55,7 +57,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by adds r6, r2, r4 ldr r7, [r1+0x04] cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1 add r7, r1, 8 ; byrRegs +[r7] @@ -63,42 +65,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by cmp r5, r6 beq SHORT G_M6389_IG05 ;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12 - bge SHORT G_M6389_IG11 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz - cmp r4, lr - bhs SHORT G_M6389_IG13 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r4, 1 - ldrh r0, [r0+r3] - ; byrRegs -[r0] - adds r6, r2, r4 - ldr lr, [r1+0x04] - cmp r6, lr - bhs SHORT G_M6389_IG13 - lsls r3, r6, 1 - add r2, r1, 8 - ; byrRegs +[r2] - ldrh r3, [r2+r3] - subs r0, r0, r3 - ;; size=30 bbWeight=0.50 PerfScore 6.50 -G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r1] - ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -106,7 +87,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 92.50, instruction count 48, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 84.50, instruction count 34, allocated bytes for code 88 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +99,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-20.83%) : 111327.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> r4 class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V00 arg0 [V00,T00] ( 9, 19 ) ref -> r4 class-hnd <System.Xml.Schema.XmlSchemaObject>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable" -; V03 tmp2 [V03,T02] ( 3, 2 ) ref -> r0 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V02 tmp1 [V02,T02] ( 2, 2 ) int -> r3 "fgMakeTemp is creating a new local variable" +; V03 tmp2 [V03,T01] ( 3, 2 ) ref -> r4 class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
; ; Lcl frame size = 4 @@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=2 bbWeight=2 PerfScore 2.00 G_M32300_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- beq SHORT G_M32300_IG06
+ beq SHORT G_M32300_IG10
;; size=4 bbWeight=8 PerfScore 16.00 G_M32300_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r1, r4 @@ -44,51 +44,34 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre cmp r0, 0 beq SHORT G_M32300_IG03 ;; size=24 bbWeight=4 PerfScore 32.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- cmp r4, 0 - beq SHORT G_M32300_IG12 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
- movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1 - beq SHORT G_M32300_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r1 - mov r1, r4 - ; gcrRegs +[r1]
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[r1 r4] +[r0] - ; gcr arg pop 0 - b SHORT G_M32300_IG10 - ;; size=16 bbWeight=0.25 PerfScore 1.50 -G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] +[r4] - mov r0, r4 - ; gcrRegs +[r0]
+ cmp r0, r3 + beq SHORT G_M32300_IG08 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M32300_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + b SHORT G_M32300_IG08
;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ldr r0, [r0+0x1C]
+G_M32300_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + ldr r0, [r4+0x1C] + ; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32300_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0]
+G_M32300_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r4]
movw r0, 0xd1ff movt r0, 0xd1ff ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 10, PerfScore 62.75, instruction count 34, allocated bytes for code 96 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 76, prolog size 10, PerfScore 59.25, instruction count 26, allocated bytes for code 76 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -100,7 +83,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-18 (-13.85%) : 179742.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

+2 (+2.63%) : 103061.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)

@@ -13,16 +13,17 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlDocument> ; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V05 tmp3 [V05,T04] ( 3, 1.25) int -> r2 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 6, 8.75) ref -> r0 class-hnd "spilling QMark2" <System.Xml.XmlElement> -; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
+; V05 tmp3 [V05,T04] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable" +; V06 tmp4 [V06,T01] ( 5, 5.75) ref -> r0 class-hnd "spilling QMark2" <System.Xml.XmlElement> +; V07 tmp5 [V07,T00] ( 3, 6 ) ref -> r0 single-def "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 1 ) int -> r4 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M56653_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
+ push {r3,r4,r11,lr} + add r11, sp, 8 + ;; size=8 bbWeight=1 PerfScore 2.00
G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x04] @@ -38,63 +39,67 @@ G_M56653_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre beq SHORT G_M56653_IG07 ;; size=20 bbWeight=1 PerfScore 10.00 G_M56653_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r3, [r0] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r3, r2
+ ldr r4, [r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r4, r3
beq SHORT G_M56653_IG05 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M56653_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref ; gcrRegs -[r0]
- mov r0, r2
+ mov r0, r3
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[r1] +[r0] ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M56653_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ldr r3, [r0] - ldr r3, [r3+0x40]
+G_M56653_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + ldr r3, [r4+0x40]
ldr r3, [r3+0x0C]
- ;; size=6 bbWeight=1 PerfScore 3.00 -G_M56653_IG06: ; bbWeight=1, epilog, nogc, extend - pop {r11,lr}
+ ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M56653_IG06: ; bbWeight=0.50, epilog, nogc, extend + add sp, 4 + pop {r4,r11,lr}
bx r3 // <unknown method>
- ;; size=6 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M56653_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M56653_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 76, prolog size 6, PerfScore 20.25, instruction count 29, allocated bytes for code 76 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
+; Total bytes of code 78, prolog size 8, PerfScore 17.75, instruction count 29, allocated bytes for code 78 (MethodHash=6dd022b2) for method System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2 F bit : 0 E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- 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 : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- 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) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end + ---- Epilog start at index 3 ---- + 01 add sp, sp, #4 ; opsize 16 + A8 10 pop {r4,r11,lr} ; opsize 32
FF end FF end

+40 (+2.64%) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

@@ -13,12 +13,12 @@ ; V02 arg2 [V02,T13] ( 5, 8 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol> ; V03 arg3 [V03,T27] ( 6, 4 ) ref -> r8 class-hnd single-def <System.String> ; V04 arg4 [V04,T57] ( 5, 2.50) ref -> [sp+0x118] class-hnd <System.String>
-; V05 arg5 [V05,T36] ( 4, 5 ) ref -> r9 class-hnd <System.String>
+; V05 arg5 [V05,T35] ( 4, 5 ) ref -> r9 class-hnd <System.String>
; V06 arg6 [V06,T26] ( 5, 7 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol> ; V07 loc0 [V07,T20] ( 8, 8.50) ref -> [sp+0x0C] class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol>
-; V08 loc1 [V08,T52] ( 4, 3.50) struct (16) [sp+0xE0] do-not-enreg[S] ld-addr-op <System.Guid> -; V09 loc2 [V09,T35] ( 4, 5.50) ubyte -> [sp+0xDC] -; V10 loc3 [V10,T53] ( 4, 3.50) struct (16) [sp+0xCC] do-not-enreg[S] ld-addr-op <System.Guid>
+; V08 loc1 [V08,T51] ( 4, 3.50) struct (16) [sp+0xE0] do-not-enreg[S] ld-addr-op <System.Guid> +; V09 loc2 [V09,T53] ( 3, 3.50) ubyte -> [sp+0xDC] +; V10 loc3 [V10,T52] ( 4, 3.50) struct (16) [sp+0xCC] do-not-enreg[S] ld-addr-op <System.Guid>
; V11 loc4 [V11,T54] ( 3, 3.50) ubyte -> [sp+0xC8] ;* V12 loc5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol]> ;* V13 loc6 [V13 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol]> @@ -35,7 +35,7 @@ ;* V24 tmp3 [V24 ] ( 0, 0 ) ref -> zero-ref ; V25 tmp4 [V25,T32] ( 3, 6 ) int -> r3 ;* V26 tmp5 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp6 [V27,T44] ( 2, 4 ) int -> [sp+0xAC] spill-single-def
+; V27 tmp6 [V27,T43] ( 2, 4 ) int -> [sp+0xAC] spill-single-def
; V28 tmp7 [V28,T33] ( 3, 6 ) int -> r2 ; V29 tmp8 [V29,T21] ( 8, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.NoPiaMissingCanonicalTypeSymbol> ; V30 tmp9 [V30,T68] ( 3, 1.50) ubyte -> r0 single-def "Inline return value spill temp" @@ -63,7 +63,7 @@ ;* V52 tmp31 [V52 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol]> ;* V53 tmp32 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol]> ;* V54 tmp33 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V55 tmp34 [V55,T45] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
+; V55 tmp34 [V55,T44] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
; V56 tmp35 [V56,T08] ( 3, 12 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String> ;* V57 tmp36 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp37 [V58 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -73,18 +73,18 @@ ; V62 tmp41 [V62,T22] ( 2, 8 ) byref -> r1 "Inlining Arg" ;* V63 tmp42 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V64 tmp43 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V65 tmp44 [V65,T38] ( 3, 4 ) ubyte -> r0 "Inline return value spill temp"
+; V65 tmp44 [V65,T37] ( 3, 4 ) ubyte -> r0 "Inline return value spill temp"
; V66 tmp45 [V66 ] ( 4, 8 ) struct (20) [sp+0x70] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult> ; V67 tmp46 [V67 ] ( 2, 8 ) struct (16) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Guid> ; V68 tmp47 [V68 ] ( 2, 8 ) struct (16) [sp+0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Guid> ;* V69 tmp48 [V69,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V70 tmp49 [V70,T14] ( 5, 10 ) byref -> r0 "Inline stloc first use temp" ; V71 tmp50 [V71,T15] ( 5, 10 ) byref -> r2 "Inline stloc first use temp"
-; V72 tmp51 [V72,T29] ( 3, 6 ) ref -> r2 class-hnd "Inline return value spill temp" <System.String>
+; V72 tmp51 [V72,T29] ( 3, 6 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
; V73 tmp52 [V73,T04] ( 4, 15.76) ref -> r0 class-hnd exact "Inlining Arg" <System.String>
-; V74 tmp53 [V74,T09] ( 3, 12 ) ref -> r2 class-hnd exact "Inlining Arg" <System.String>
+; V74 tmp53 [V74,T09] ( 3, 12 ) ref -> r10 class-hnd exact "Inlining Arg" <System.String>
;* V75 tmp54 [V75,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V76 tmp55 [V76,T46] ( 2, 4 ) ubyte -> r3 "Inline return value spill temp"
+; V76 tmp55 [V76,T45] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
; V77 tmp56 [V77,T10] ( 3, 12 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String> ;* V78 tmp57 [V78 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V79 tmp58 [V79 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -94,20 +94,20 @@ ; V83 tmp62 [V83,T23] ( 2, 8 ) byref -> r1 "Inlining Arg" ;* V84 tmp63 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V85 tmp64 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V86 tmp65 [V86,T39] ( 3, 4 ) ubyte -> r3 "Inline return value spill temp"
+; V86 tmp65 [V86,T38] ( 3, 4 ) ubyte -> r0 "Inline return value spill temp"
; V87 tmp66 [V87 ] ( 4, 8 ) struct (20) [sp+0x3C] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Guid+GuidResult> ; V88 tmp67 [V88 ] ( 2, 8 ) struct (16) [sp+0x2C] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Guid> ; V89 tmp68 [V89 ] ( 2, 8 ) struct (16) [sp+0x1C] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Guid> ;* V90 tmp69 [V90,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V91 tmp70 [V91,T16] ( 5, 10 ) byref -> r0 "Inline stloc first use temp" -; V92 tmp71 [V92,T17] ( 5, 10 ) byref -> r3 "Inline stloc first use temp"
+; V91 tmp70 [V91,T16] ( 5, 10 ) byref -> r1 "Inline stloc first use temp" +; V92 tmp71 [V92,T17] ( 5, 10 ) byref -> r0 "Inline stloc first use temp"
; V93 tmp72 [V93,T07] ( 4, 13 ) int -> lr "Inline stloc first use temp" ; V94 tmp73 [V94,T67] ( 3, 1.50) ref -> r2 class-hnd "Inline return value spill temp" <System.String>
-; V95 tmp74 [V95,T51] ( 4, 3.94) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V95 tmp74 [V95,T50] ( 4, 3.94) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String>
; V96 tmp75 [V96,T55] ( 3, 3 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String> ;* V97 tmp76 [V97,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V98 tmp77 [V98,T60] ( 2, 2 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.String>
-; V99 tmp78 [V99,T37] ( 2, 5 ) ref -> [sp+0x00] spill-single-def "field V12._array (fldOffset=0x0)" P-INDEP
+; V99 tmp78 [V99,T36] ( 2, 5 ) ref -> [sp+0x00] spill-single-def "field V12._array (fldOffset=0x0)" P-INDEP
; V100 tmp79 [V100,T06] ( 4, 13 ) int -> [sp+0x18] "field V12._index (fldOffset=0x4)" P-INDEP ; V101 tmp80 [V101,T56] ( 3, 3 ) ref -> r0 "field V13.array (fldOffset=0x0)" P-INDEP ;* V102 tmp81 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP @@ -131,18 +131,18 @@ ;* V120 tmp99 [V120,T80] ( 0, 0 ) int -> zero-ref single-def "field V53._index (fldOffset=0x4)" P-INDEP ;* V121 tmp100 [V121 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP ;* V122 tmp101 [V122 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x4)" P-INDEP
-; V123 tmp102 [V123,T40] ( 2, 4 ) byref -> r1 "field V58._reference (fldOffset=0x0)" P-INDEP -; V124 tmp103 [V124,T47] ( 2, 4 ) int -> r2 "field V58._length (fldOffset=0x4)" P-INDEP -; V125 tmp104 [V125,T41] ( 2, 4 ) byref -> r1 "field V59._reference (fldOffset=0x0)" P-INDEP -; V126 tmp105 [V126,T48] ( 2, 4 ) int -> r0 "field V59._length (fldOffset=0x4)" P-INDEP
+; V123 tmp102 [V123,T39] ( 2, 4 ) byref -> r1 "field V58._reference (fldOffset=0x0)" P-INDEP +; V124 tmp103 [V124,T46] ( 2, 4 ) int -> r2 "field V58._length (fldOffset=0x4)" P-INDEP +; V125 tmp104 [V125,T40] ( 2, 4 ) byref -> r1 "field V59._reference (fldOffset=0x0)" P-INDEP +; V126 tmp105 [V126,T47] ( 2, 4 ) int -> r0 "field V59._length (fldOffset=0x4)" P-INDEP
;* V127 tmp106 [V127 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP ;* V128 tmp107 [V128 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x4)" P-INDEP ;* V129 tmp108 [V129 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP ;* V130 tmp109 [V130 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP
-; V131 tmp110 [V131,T42] ( 2, 4 ) byref -> r1 "field V79._reference (fldOffset=0x0)" P-INDEP -; V132 tmp111 [V132,T49] ( 2, 4 ) int -> r2 "field V79._length (fldOffset=0x4)" P-INDEP -; V133 tmp112 [V133,T43] ( 2, 4 ) byref -> r1 "field V80._reference (fldOffset=0x0)" P-INDEP -; V134 tmp113 [V134,T50] ( 2, 4 ) int -> r0 "field V80._length (fldOffset=0x4)" P-INDEP
+; V131 tmp110 [V131,T41] ( 2, 4 ) byref -> r1 "field V79._reference (fldOffset=0x0)" P-INDEP +; V132 tmp111 [V132,T48] ( 2, 4 ) int -> r2 "field V79._length (fldOffset=0x4)" P-INDEP +; V133 tmp112 [V133,T42] ( 2, 4 ) byref -> r1 "field V80._reference (fldOffset=0x0)" P-INDEP +; V134 tmp113 [V134,T49] ( 2, 4 ) int -> r0 "field V80._length (fldOffset=0x4)" P-INDEP
;* V135 tmp114 [V135 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP ;* V136 tmp115 [V136 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x4)" P-INDEP ; V137 cse0 [V137,T34] ( 3, 6 ) int -> [sp+0x14] spill-single-def "CSE - moderate" @@ -225,7 +225,7 @@ G_M12822_IG07: ; bbWeight=0.50, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRe ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M12822_IG71
+ beq G_M12822_IG70
ldr r0, [sp+0x98] // [V40 tmp19] str r0, [sp+0xE0] // [V08 loc1] ldr r0, [sp+0x9C] // [V40 tmp19+0x04] @@ -276,7 +276,7 @@ G_M12822_IG11: ; bbWeight=0.50, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0 ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M12822_IG73
+ beq G_M12822_IG72
ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10] ldr r0, [sp+0x84] // [V51 tmp30] @@ -311,9 +311,9 @@ G_M12822_IG13: ; bbWeight=1, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs= mov r12, 0 str r12, [sp+0x18] // [V100 tmp79] cmp r3, 0
- ble G_M12822_IG63
+ ble G_M12822_IG62
;; size=36 bbWeight=1 PerfScore 14.00
-G_M12822_IG14: ; bbWeight=4, gcVars=000000000000002000100000 {V07 V99}, gcrefRegs=07A4 {r2 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG14: ; bbWeight=4, gcVars=000000000000001000100000 {V07 V99}, gcrefRegs=07A4 {r2 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r0] add r0, r2, 8 ; byrRegs +[r0] @@ -323,9 +323,9 @@ G_M12822_IG14: ; bbWeight=4, gcVars=000000000000002000100000 {V07 V99}, g str r1, [sp+0x08] // [V14 loc7] ; GC ptr vars +{V14} cmp r1, r7
- beq G_M12822_IG54
+ beq G_M12822_IG55
;; size=18 bbWeight=4 PerfScore 24.00
-G_M12822_IG15: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99}, gcrefRegs=07A2 {r1 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG15: ; bbWeight=2, gcVars=000000000000001000100004 {V07 V14 V99}, gcrefRegs=07A2 {r1 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r2] ; byrRegs -[r0] str r10, [sp+0x118] // [V04 arg4] @@ -401,37 +401,37 @@ G_M12822_IG17: ; bbWeight=2, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs= DD G_M12822_IG23 ldr pc, [r1+4*r3] ;; size=36 bbWeight=2 PerfScore 30.00
-G_M12822_IG18: ; bbWeight=1, gcVars=000000000000002000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG18: ; bbWeight=1, gcVars=000000000000001000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r10] ; GC ptr vars -{V14} ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00 G_M12822_IG19: ; bbWeight=1, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r10] ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00 G_M12822_IG20: ; bbWeight=1, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r10] ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00 G_M12822_IG21: ; bbWeight=1, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r10] ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00
-G_M12822_IG22: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG22: ; bbWeight=2, gcVars=000000000000001000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
; GC ptr vars +{V02 V14} cmp r0, 10 beq SHORT G_M12822_IG27 ldr r10, [sp+0x118] // [V04 arg4]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=10 bbWeight=2 PerfScore 8.00 G_M12822_IG23: ; bbWeight=2, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, byref, isz uxtb r1, r6 @@ -473,7 +473,7 @@ G_M12822_IG23: ; bbWeight=2, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs= str r0, [sp+0x7C] // [V66 tmp45+0x0c] str r0, [sp+0x80] // [V66 tmp45+0x10] ;; size=66 bbWeight=2 PerfScore 54.00
-G_M12822_IG24: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0012 {r1 r4}, gcvars, byref, isz
+G_M12822_IG24: ; bbWeight=2, gcVars=000000000000001000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0012 {r1 r4}, gcvars, byref, isz
; GC ptr vars -{V15} strb r0, [sp+0x80] // [V66 tmp45+0x10] mov r0, r1 @@ -488,7 +488,7 @@ G_M12822_IG24: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99 ; byrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M12822_IG75
+ beq G_M12822_IG74
ldr r3, [sp+0x70] // [V66 tmp45] str r3, [sp+0xB0] // [V18 loc11] ldr r3, [sp+0x74] // [V66 tmp45+0x04] @@ -503,14 +503,14 @@ G_M12822_IG25: ; bbWeight=2, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs= str r0, [sp+0xC0] // [V17 loc10] b SHORT G_M12822_IG34 ;; size=4 bbWeight=2 PerfScore 4.00
-G_M12822_IG26: ; bbWeight=1, gcVars=000000000000002000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG26: ; bbWeight=1, gcVars=000000000000001000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r10] ; GC ptr vars -{V14} ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00
-G_M12822_IG27: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG27: ; bbWeight=2, gcVars=000000000000001000100004 {V07 V14 V99}, gcrefRegs=07A0 {r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
; GC ptr vars +{V02 V14} uxtb r0, r6 cmp r0, 0 @@ -527,14 +527,14 @@ G_M12822_IG27: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99 movs r3, 0 b SHORT G_M12822_IG30 ;; size=28 bbWeight=2 PerfScore 24.00
-G_M12822_IG28: ; bbWeight=1, gcVars=000000000000002000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12822_IG28: ; bbWeight=1, gcVars=000000000000001000100000 {V07 V99}, gcrefRegs=03A0 {r5 r7 r8 r9}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r0 r10] ; GC ptr vars -{V02 V14} ldr r10, [sp+0x118] // [V04 arg4] ; gcrRegs +[r10]
- b SHORT G_M12822_IG54
+ b SHORT G_M12822_IG55
;; size=6 bbWeight=1 PerfScore 2.00
-G_M12822_IG29: ; bbWeight=2, gcVars=000000000000002000100004 {V07 V14 V99}, gcrefRegs=07A1 {r0 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref
+G_M12822_IG29: ; bbWeight=2, gcVars=000000000000001000100004 {V07 V14 V99}, gcrefRegs=07A1 {r0 r5 r7 r8 r9 r10}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r0] ...

+12 (+3.37%) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)

@@ -19,7 +19,7 @@ ; V09 arg9 [V09,T22] ( 2, 1.50) byref -> [sp+0x4C] single-def ; V10 arg10 [V10,T19] ( 3, 1.50) byref -> [sp+0x50] single-def ; V11 loc0 [V11,T17] ( 5, 2.50) int -> [sp+0x0C]
-; V12 loc1 [V12,T05] ( 9, 15 ) int -> r1
+; V12 loc1 [V12,T05] ( 8, 14.50) int -> r1
; V13 loc2 [V13,T13] ( 6, 6.50) int -> r3 ; V14 loc3 [V14,T00] ( 7, 24.50) int -> r2 ; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -47,30 +47,29 @@ G_M61432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r5, r2 mov r4, r3 ldr r9, [sp+0x3C] // [V05 arg5]
+ ldr lr, [sp+0x40] // [V06 arg6]
ldr r8, [sp+0x48] // [V08 arg8] ; byrRegs +[r8] ldr r12, [sp+0x4C] // [V09 arg9] ; byrRegs +[r12] ldr r10, [sp+0x50] // [V10 arg10] ; byrRegs +[r10]
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=38 bbWeight=1 PerfScore 12.00
G_M61432_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref movs r1, 0 str r1, [r8] ;; size=6 bbWeight=1 PerfScore 2.00 G_M61432_IG03: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
- str r12, [sp+0x4C]
str r1, [r12] ldr r1, [r6+0x10] cmp r1, 0 bgt SHORT G_M61432_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - ; byrRegs -[r12]
+ ;; size=10 bbWeight=1 PerfScore 4.00 +G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
movs r3, 0 b SHORT G_M61432_IG10 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
ldr r0, [r6+0x0C] ; gcrRegs +[r0] ldr r2, [r7+0x04] @@ -95,25 +94,29 @@ G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r str r0, [r8] adds r1, r1, 1 ;; size=44 bbWeight=2 PerfScore 34.00
-G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
cmp r1, 4
- bge SHORT G_M61432_IG07
+ bge SHORT G_M61432_IG09
cmp r4, 0 bgt SHORT G_M61432_IG05 ;; size=8 bbWeight=4 PerfScore 16.00
-G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r1, 4 - bge SHORT G_M61432_IG09
+G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0400 {r10}, byref + ; gcrRegs -[r7] + ; byrRegs -[r8 r12]
str r1, [r6+0x10] movs r1, 1 strb r1, [r10]
- ;; size=12 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M61432_IG08: ; bbWeight=0.50, epilog, nogc, extend add sp, 20 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, gcvars, byref
+G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, gcvars, byref + ; gcrRegs +[r7] + ; byrRegs +[r8 r12]
str r10, [sp+0x50]
+ str lr, [sp+0x40] + str r12, [sp+0x4C]
ldr r3, [sp+0x38] // [V04 arg4] ; gcrRegs +[r3] str r3, [sp] // [V15 OutArgs] @@ -132,6 +135,7 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 ldr r10, [r10] blx r10 // <unknown method> ; gcrRegs -[r0-r1]
+ ; byrRegs -[r12]
; gcr arg pop 0 mov r10, r0 add r9, r10 @@ -140,13 +144,14 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 sub r0, r0, r10 movs r1, 0 str r1, [r6+0x10]
- str r0, [sp+0x40] // [V06 arg6]
+ mov lr, r0
ldr r3, [sp+0x0C] // [V11 loc0] ldr r10, [sp+0x50] // [V10 arg10] ; byrRegs +[r10]
- ;; size=60 bbWeight=0.50 PerfScore 11.00 -G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - ldr lr, [sp+0x40] // [V06 arg6]
+ ldr r12, [sp+0x4C] // [V09 arg9] + ; byrRegs +[r12] + ;; size=72 bbWeight=0.50 PerfScore 12.50 +G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
lsl r0, lr, 2 cmp r0, r4 bge SHORT G_M61432_IG11 @@ -154,15 +159,17 @@ G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r movs r0, 0 strb r0, [r10] str r3, [sp+0x0C] // [V11 loc0]
+ str r12, [sp+0x4C] // [V09 arg9]
b SHORT G_M61432_IG12 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref
+G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref
movs r0, 1 strb r0, [r10] str r3, [sp+0x0C] // [V11 loc0]
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ str r12, [sp+0x4C] // [V09 arg9] + ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M61432_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ; byrRegs -[r10]
+ ; byrRegs -[r10 r12]
ldr r0, [r8] adds r0, r0, r4 str r0, [r8] @@ -241,7 +248,7 @@ G_M61432_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 34, PerfScore 157.50, instruction count 131, allocated bytes for code 356 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 368, prolog size 38, PerfScore 158.50, instruction count 133, allocated bytes for code 368 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
; ============================================================ Unwind Info: @@ -253,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 178 (0x000b2) Actual length = 356 (0x000164)
+ Function Length : 184 (0x000b8) Actual length = 368 (0x000170)
---- 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

-32 (-26.67%) : 333435.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def -; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def -; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def +; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def +; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive" +; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive" +; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -42,11 +44,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00 G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8 ; byrRegs +[r5] lsls r6, r4, 1 @@ -55,7 +57,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by adds r6, r2, r4 ldr r7, [r1+0x04] cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1 add r7, r1, 8 ; byrRegs +[r7] @@ -63,42 +65,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by cmp r5, r6 beq SHORT G_M6389_IG05 ;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12 - bge SHORT G_M6389_IG11 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz - cmp r4, lr - bhs SHORT G_M6389_IG13 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r4, 1 - ldrh r0, [r0+r3] - ; byrRegs -[r0] - adds r6, r2, r4 - ldr lr, [r1+0x04] - cmp r6, lr - bhs SHORT G_M6389_IG13 - lsls r3, r6, 1 - add r2, r1, 8 - ; byrRegs +[r2] - ldrh r3, [r2+r3] - subs r0, r0, r3 - ;; size=30 bbWeight=0.50 PerfScore 6.50 -G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r1] - ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -106,7 +87,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 92.50, instruction count 48, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 84.50, instruction count 34, allocated bytes for code 88 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +99,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-18 (-13.85%) : 111087.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-20 (-11.76%) : 257367.dasm - System.Data.ExpressionParser:ScanDate():this (Tier0-FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 21 ) ref -> r0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> r3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 24 ) int -> r1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> r1 "index expr" -; V05 cse0 [V05,T00] ( 9, 31 ) int -> r4 "CSE - aggressive" -; V06 cse1 [V06,T03] ( 5, 22 ) int -> r2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr" +; V05 cse0 [V05,T05] ( 3, 9 ) int -> r2 "CSE - aggressive" +; V06 cse1 [V06,T00] ( 7, 29 ) int -> r4 "CSE - aggressive" +; V07 cse2 [V07,T03] ( 3, 20 ) int -> r2 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -32,23 +33,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b str r4, [r0+0x18] ldr r2, [r3+0x04] cmp r2, r4
- ble SHORT G_M44374_IG05
+ ble SHORT G_M44374_IG08
;; size=12 bbWeight=8 PerfScore 48.00 G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- mov r1, r4 - cmp r1, r2 - bhs SHORT G_M44374_IG07 - add lr, r3, 8 - ; byrRegs +[lr] - lsls r1, r1, 1 - ldrh r1, [lr+r1] - cmp r1, 35 - bne SHORT G_M44374_IG03 - ;; size=20 bbWeight=4 PerfScore 32.00 -G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - cmp r2, r4 - ble SHORT G_M44374_IG08
mov r1, r4 cmp r1, r2 bhs SHORT G_M44374_IG07 @@ -57,13 +44,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b lsls r1, r1, 1 ldrh r2, [r2+r1] ; byrRegs -[r2]
+ cmp r2, 35 + bne SHORT G_M44374_IG03 + ;; size=18 bbWeight=4 PerfScore 32.00 +G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
cmp r2, 35 bne SHORT G_M44374_IG09 movs r2, 7 str r2, [r0+0x20] adds r2, r4, 1 str r2, [r0+0x18]
- ;; size=30 bbWeight=1 PerfScore 14.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00 @@ -121,7 +112,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 8, PerfScore 98.00, instruction count 65, allocated bytes for code 170 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (Tier0-FullOpts)
+; Total bytes of code 150, prolog size 8, PerfScore 90.00, instruction count 57, allocated bytes for code 150 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +124,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+5.06%) : 671986.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5.30) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> r5
+; V00 this [V00,T00] ( 9, 5.30) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> r5
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 4 @@ -36,13 +36,13 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r6, [r4+0x44] ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M4380_IG16
+ beq SHORT G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00 G_M4380_IG03: ; bbWeight=0.94, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ldrb r0, [r6+0x0C] and r0, r0, 2 cmp r0, 2
- bne SHORT G_M4380_IG16
+ bne SHORT G_M4380_IG14
;; size=10 bbWeight=0.94 PerfScore 3.77 G_M4380_IG04: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6+0x04] @@ -50,7 +50,7 @@ G_M4380_IG04: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, by mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M4380_IG08
+ beq SHORT G_M4380_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] @@ -58,9 +58,9 @@ G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M4380_IG07
+ beq SHORT G_M4380_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -69,19 +69,16 @@ G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r5, [r3+0x48] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3]
+ b SHORT G_M4380_IG15 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r3]
ldr r1, [r4+0x48] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M4380_IG15
+ beq SHORT G_M4380_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M4380_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] ldr r0, [r4+0x48] ; gcrRegs +[r0] @@ -90,17 +87,17 @@ G_M4380_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M4380_IG13
+ beq SHORT G_M4380_IG11
;; size=10 bbWeight=1 PerfScore 5.00
-G_M4380_IG10: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r4] ldr r0, [r3] movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M4380_IG12
+ beq SHORT G_M4380_IG16
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -109,20 +106,16 @@ G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, by ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r0, [r3+0x48] - orrs r5, r0 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M4380_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3]
+ b SHORT G_M4380_IG16 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r3]
mov r0, r5 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4380_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG12: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4380_IG15: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG13: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] add r1, r4, 72 ; byrRegs +[r1] @@ -134,9 +127,9 @@ G_M4380_IG15: ; bbWeight=0.09, gcVars=00000000 {}, gcrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0] ; byrRegs -[r1]
- b SHORT G_M4380_IG09
+ b SHORT G_M4380_IG08
;; size=20 bbWeight=0.09 PerfScore 0.63
-G_M4380_IG16: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG14: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -148,8 +141,20 @@ G_M4380_IG16: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by ; gcrRegs +[r6] b SHORT G_M4380_IG04 ;; size=18 bbWeight=0.06 PerfScore 0.41
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] +[r3] + ldr r5, [r3+0x48] + b SHORT G_M4380_IG07 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M4380_IG16: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4] + ldr r3, [r3+0x48] + ; gcrRegs -[r3] + orrs r5, r3 + b SHORT G_M4380_IG11 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 8, PerfScore 36.31, instruction count 62, allocated bytes for code 158 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 166, prolog size 8, PerfScore 33.81, instruction count 66, allocated bytes for code 166 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info: @@ -161,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+5.06%) : 55692.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,18 +9,18 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5.44) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> r5
+; V00 this [V00,T00] ( 9, 5.44) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> r5
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V05 tmp2 [V05,T06] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V06 tmp3 [V06,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" -; V07 tmp4 [V07,T07] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" -; V08 tmp5 [V08,T00] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V09 tmp6 [V09,T05] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" -; V10 tmp7 [V10,T08] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" -; V11 tmp8 [V11,T01] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V05 tmp2 [V05,T05] ( 5, 4 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V06 tmp3 [V06,T03] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" +; V07 tmp4 [V07,T06] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" +; V08 tmp5 [V08,T01] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V09 tmp6 [V09,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1" +; V10 tmp7 [V10,T07] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 4 @@ -36,13 +36,13 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r6, [r4+0x44] ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M4380_IG16
+ beq SHORT G_M4380_IG14
;; size=8 bbWeight=1 PerfScore 4.00 G_M4380_IG03: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ldrb r0, [r6+0x0C] and r0, r0, 2 cmp r0, 2
- bne SHORT G_M4380_IG16
+ bne SHORT G_M4380_IG14
;; size=10 bbWeight=1.00 PerfScore 4.00 G_M4380_IG04: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6+0x04] @@ -50,7 +50,7 @@ G_M4380_IG04: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, by mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M4380_IG08
+ beq SHORT G_M4380_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] @@ -58,9 +58,9 @@ G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M4380_IG07
+ beq SHORT G_M4380_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -69,19 +69,16 @@ G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r5, [r3+0x48] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3]
+ b SHORT G_M4380_IG15 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r3]
ldr r1, [r4+0x48] ; gcrRegs +[r1] cmp r1, 0
- beq SHORT G_M4380_IG15
+ beq SHORT G_M4380_IG13
;; size=6 bbWeight=1 PerfScore 3.00
-G_M4380_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] ldr r0, [r4+0x48] ; gcrRegs +[r0] @@ -90,17 +87,17 @@ G_M4380_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M4380_IG13
+ beq SHORT G_M4380_IG11
;; size=10 bbWeight=1 PerfScore 5.00
-G_M4380_IG10: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r4] ldr r0, [r3] movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M4380_IG12
+ beq SHORT G_M4380_IG16
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -109,20 +106,16 @@ G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, by ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r0, [r3+0x48] - orrs r5, r0 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M4380_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3]
+ b SHORT G_M4380_IG16 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r3]
mov r0, r5 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4380_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG12: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4380_IG15: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG13: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] add r1, r4, 72 ; byrRegs +[r1] @@ -134,9 +127,9 @@ G_M4380_IG15: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0] ; byrRegs -[r1]
- b SHORT G_M4380_IG09
+ b SHORT G_M4380_IG08
;; size=20 bbWeight=0.22 PerfScore 1.55
-G_M4380_IG16: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG14: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -148,8 +141,20 @@ G_M4380_IG16: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by ; gcrRegs +[r6] b SHORT G_M4380_IG04 ;; size=18 bbWeight=0.00 PerfScore 0.01
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] +[r3] + ldr r5, [r3+0x48] + b SHORT G_M4380_IG07 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M4380_IG16: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4] + ldr r3, [r3+0x48] + ; gcrRegs -[r3] + orrs r5, r3 + b SHORT G_M4380_IG11 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 8, PerfScore 37.05, instruction count 62, allocated bytes for code 158 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 166, prolog size 8, PerfScore 34.55, instruction count 66, allocated bytes for code 166 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info: @@ -161,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+5.48%) : 673833.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)

@@ -11,11 +11,11 @@ ; ; V00 this [V00,T01] ( 15, 8.00) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Compilation> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T16] ( 3, 2 ) int -> r7 "guarded devirt return temp"
+; V02 tmp1 [V02,T16] ( 3, 2 ) int -> r8 "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V04 tmp3 [V04,T08] ( 5, 4 ) ref -> r0 "guarded devirt return temp"
+; V04 tmp3 [V04,T07] ( 5, 4 ) ref -> r0 "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V06 tmp5 [V06,T14] ( 4, 2 ) ubyte -> r7 "Inline return value spill temp"
+; V06 tmp5 [V06,T14] ( 4, 2 ) ubyte -> r8 "Inline return value spill temp"
; V07 tmp6 [V07,T00] ( 9, 10.59) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> ; V08 tmp7 [V08 ] ( 5, 3 ) struct ( 4) [sp+0x04] do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[ubyte]> ;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> @@ -26,47 +26,48 @@ ;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> ;* V15 tmp14 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp15 [V16,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V17 tmp16 [V17,T04] ( 5, 5 ) ubyte -> r8 "Inline stloc first use temp"
+; V17 tmp16 [V17,T10] ( 5, 3 ) ubyte -> r9 "Inline stloc first use temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V20 tmp19 [V20,T09] ( 5, 4 ) ref -> r9 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V21 tmp20 [V21,T05] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
+; V20 tmp19 [V20,T08] ( 5, 4 ) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V21 tmp20 [V21,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
; V22 tmp21 [V22,T12] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable"
-; V23 tmp22 [V23,T02] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V24 tmp23 [V24,T06] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
+; V23 tmp22 [V23,T02] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V24 tmp23 [V24,T05] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
; V25 tmp24 [V25,T13] ( 3, 2.50) int -> r2 "fgMakeTemp is creating a new local variable"
-; V26 tmp25 [V26,T03] ( 5, 7.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V26 tmp25 [V26,T03] ( 5, 5.50) ref -> r3 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V28 tmp27 [V28,T15] ( 3, 2 ) ref -> r8 "guarded devirt return temp"
+; V28 tmp27 [V28,T15] ( 3, 2 ) ref -> r10 "guarded devirt return temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V30 tmp29 [V30,T17] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
+; V30 tmp29 [V30,T17] ( 3, 2 ) ubyte -> r0 "Inline return value spill temp"
;* V31 tmp30 [V31,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V32 tmp31 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V33 tmp32 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V34 tmp33 [V34 ] ( 5, 3 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP ; V35 tmp34 [V35 ] ( 4, 2 ) ubyte -> [sp+0x05] do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x1)" P-DEP ; V36 cse0 [V36,T11] ( 4, 3 ) ref -> r8 "CSE - moderate"
-; V37 cse1 [V37,T07] ( 7, 4 ) int -> r5 "CSE - aggressive" -; V38 cse2 [V38,T10] ( 4, 4 ) int -> r6 "CSE - aggressive"
+; V37 cse1 [V37,T06] ( 7, 4 ) int -> r5 "CSE - aggressive" +; V38 cse2 [V38,T09] ( 4, 4 ) int -> r6 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M26365_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} - add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 12 + add r11, sp, 40
mov r4, r0 ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M26365_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r5, [r4] movw r6, 0xd1ff movt r6, 0xd1ff cmp r5, r6
- bne G_M26365_IG32
+ bne G_M26365_IG31
ldr r0, [r4+0x68] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M26365_IG21
+ beq SHORT G_M26365_IG09
;; size=22 bbWeight=1 PerfScore 8.00 G_M26365_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -83,40 +84,38 @@ G_M26365_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre strh r0, [sp+0x04] // [V08 tmp7] ldrb r0, [sp+0x04] // [V34 tmp33] cmp r0, 0
- bne G_M26365_IG30
+ bne G_M26365_IG27
ldrb r0, [r8+0x50] cmp r0, 0
- bne G_M26365_IG31 - mov r8, 0 - ; gcrRegs -[r8] - ldr r9, [r7+0x44] - ; gcrRegs +[r9] - cmp r9, 0 - beq SHORT G_M26365_IG20
+ bne G_M26365_IG28 + mov r9, 0 + ldr r8, [r7+0x44] + cmp r8, 0 + beq SHORT G_M26365_IG08
;; size=56 bbWeight=1 PerfScore 17.00
-G_M26365_IG04: ; bbWeight=0.94, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz - ldrb r0, [r9+0x0C]
+G_M26365_IG04: ; bbWeight=0.94, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz + ldrb r0, [r8+0x0C]
and r0, r0, 2 cmp r0, 2
- bne SHORT G_M26365_IG20
+ bne SHORT G_M26365_IG08
;; size=12 bbWeight=0.94 PerfScore 3.77
-G_M26365_IG05: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz - ldr r1, [r9+0x04]
+G_M26365_IG05: ; bbWeight=1, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r1, [r8+0x04]
; gcrRegs +[r1] mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M26365_IG09
+ beq SHORT G_M26365_IG10
;; size=10 bbWeight=1 PerfScore 4.00 G_M26365_IG06: ; bbWeight=0.50, gcrefRegs=009A {r1 r3 r4 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
+ ; gcrRegs -[r8]
ldr r0, [r3] movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M26365_IG08 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M26365_IG07: ; bbWeight=0.25, gcrefRegs=0092 {r1 r4 r7}, byrefRegs=0000 {}, byref
+ beq G_M26365_IG29 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M26365_IG07: ; bbWeight=0.25, gcrefRegs=0092 {r1 r4 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -125,104 +124,10 @@ G_M26365_IG07: ; bbWeight=0.25, gcrefRegs=0092 {r1 r4 r7}, byrefRegs=0000 ; gcrRegs -[r1] +[r0] mov r3, r0 ; gcrRegs +[r3]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M26365_IG08: ; bbWeight=1, gcrefRegs=0098 {r3 r4 r7}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldrb r8, [r3+0x4C] - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M26365_IG09: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3] - cmp r8, 0 - bne SHORT G_M26365_IG14 - ldr r1, [r7+0x48] - ; gcrRegs +[r1] - cmp r1, 0 - beq SHORT G_M26365_IG17 - ;; size=12 bbWeight=1 PerfScore 5.00 -G_M26365_IG10: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r1] - ldr r0, [r7+0x48] - ; gcrRegs +[r0] - ldr r1, [r0+0x04] - ; gcrRegs +[r1] - mov r3, r1 - ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M26365_IG14 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M26365_IG11: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r7] - ldr r0, [r3] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r0, r2 - beq SHORT G_M26365_IG13 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M26365_IG12: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3] - mov r0, r2 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[r1] +[r0] - mov r3, r0 - ; gcrRegs +[r3] - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M26365_IG13: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldrb r8, [r3+0x4C] - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M26365_IG14: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3] - cmp r8, 2 - beq SHORT G_M26365_IG15 - movs r7, 0 - b SHORT G_M26365_IG16 - ;; size=10 bbWeight=1 PerfScore 4.00 -G_M26365_IG15: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r7, 1 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M26365_IG16: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r7, 0 - bne SHORT G_M26365_IG28 - cmp r5, r6 - bne SHORT G_M26365_IG33 - ldr r8, [r4+0x38] - ; gcrRegs +[r8] - b SHORT G_M26365_IG18 - ;; size=14 bbWeight=1 PerfScore 6.00 -G_M26365_IG17: ; bbWeight=0.09, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r8] +[r7] - add r1, r7, 72 - ; byrRegs +[r1] - mov r0, r7 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - ; byrRegs -[r1] - b SHORT G_M26365_IG10 - ;; size=20 bbWeight=0.09 PerfScore 0.63 -G_M26365_IG18: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r7] +[r8] - ldr r0, [r8+0x38] - cmp r0, 3 - beq SHORT G_M26365_IG28 - cmp r5, r6 - bne SHORT G_M26365_IG34 - ldr r0, [r4+0x68] - ; gcrRegs +[r0] - cmp r0, 0 - bne SHORT G_M26365_IG23 - ;; size=18 bbWeight=1 PerfScore 8.00 -G_M26365_IG19: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r8] - b SHORT G_M26365_IG22 - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M26365_IG20: ; bbWeight=0.06, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r7]
+ b SHORT G_M26365_IG29 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M26365_IG08: ; bbWeight=0.06, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r3]
mov r0, r7 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -230,12 +135,12 @@ G_M26365_IG20: ; bbWeight=0.06, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this ; gcrRegs -[r0] ...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-32 (-26.67%) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,15 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 5, 7.50) ref -> r0 class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 6, 11 ) ref -> r1 class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 4, 6.50) int -> r2 single-def -; V03 arg3 [V03,T07] ( 5, 4 ) int -> r3 single-def -; V04 loc0 [V04,T03] ( 5, 11.50) int -> r12 -; V05 loc1 [V05,T00] ( 11, 27.50) int -> r4
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> r0 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 4, 10 ) ref -> r1 class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 3, 6 ) int -> r2 single-def +; V03 arg3 [V03,T09] ( 5, 4 ) int -> r3 single-def +; V04 loc0 [V04,T03] ( 4, 10.50) int -> r12 +; V05 loc1 [V05,T00] ( 7, 25 ) int -> r4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 5, 7 ) int -> lr "CSE - aggressive" -; V08 cse1 [V08,T01] ( 6, 13.50) int -> r6 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T05] ( 3, 8.50) int -> r6 "CSE - aggressive" +; V08 cse1 [V08,T06] ( 3, 8.50) int -> r5 "CSE - aggressive" +; V09 cse2 [V09,T08] ( 4, 6.50) int -> lr "CSE - aggressive" +; V10 cse3 [V10,T02] ( 3, 12 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -42,11 +44,11 @@ G_M6389_IG05: ; bbWeight=2, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by ;; size=2 bbWeight=2 PerfScore 2.00 G_M6389_IG06: ; bbWeight=8, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, r12
- bge SHORT G_M6389_IG08
+ bge SHORT G_M6389_IG10
;; size=4 bbWeight=8 PerfScore 16.00 G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz cmp r4, lr
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
add r5, r0, 8 ; byrRegs +[r5] lsls r6, r4, 1 @@ -55,7 +57,7 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by adds r6, r2, r4 ldr r7, [r1+0x04] cmp r6, r7
- bhs SHORT G_M6389_IG13
+ bhs SHORT G_M6389_IG12
lsls r6, r6, 1 add r7, r1, 8 ; byrRegs +[r7] @@ -63,42 +65,21 @@ G_M6389_IG07: ; bbWeight=4, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, by cmp r5, r6 beq SHORT G_M6389_IG05 ;; size=32 bbWeight=4 PerfScore 56.00
-G_M6389_IG08: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0-r1]
; byrRegs -[r7]
- cmp r4, r12 - bge SHORT G_M6389_IG11 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M6389_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz - cmp r4, lr - bhs SHORT G_M6389_IG13 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r4, 1 - ldrh r0, [r0+r3] - ; byrRegs -[r0] - adds r6, r2, r4 - ldr lr, [r1+0x04] - cmp r6, lr - bhs SHORT G_M6389_IG13 - lsls r3, r6, 1 - add r2, r1, 8 - ; byrRegs +[r2] - ldrh r3, [r2+r3] - subs r0, r0, r3 - ;; size=30 bbWeight=0.50 PerfScore 6.50 -G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ subs r0, r5, r6 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r1] - ; byrRegs -[r2]
+G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
sub r0, lr, r3 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -106,7 +87,7 @@ G_M6389_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 92.50, instruction count 48, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 84.50, instruction count 34, allocated bytes for code 88 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +99,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 120 (0x000078)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-18 (-13.85%) : 31632.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,87 +7,78 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T06] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 7, 24.50) int -> r0
+; V00 arg0 [V00,T07] ( 4, 4 ) struct ( 8) [sp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T08] ( 4, 4 ) struct ( 8) [sp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 7, 24.50) int -> lr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 20 ) int -> r12 "dup spill" -; V05 tmp2 [V05,T07] ( 3, 5.50) byref -> r3 single-def "V00.[000..004)" -; V06 tmp3 [V06,T04] ( 5, 7 ) int -> r2 "V00.[004..008)" -; V07 tmp4 [V07,T08] ( 3, 5.50) byref -> r1 single-def "V01.[000..004)" -; V08 tmp5 [V08,T03] ( 6, 7.50) int -> lr "V01.[004..008)" -; V09 cse0 [V09,T02] ( 6, 13.50) int -> r4 multi-def "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> lr "dup spill" +; V05 tmp2 [V05,T09] ( 2, 5 ) byref -> r0 single-def "V00.[000..004)" +; V06 tmp3 [V06,T06] ( 4, 6.50) int -> r3 "V00.[004..008)" +; V07 tmp4 [V07,T10] ( 2, 5 ) byref -> r2 single-def "V01.[000..004)" +; V08 tmp5 [V08,T05] ( 5, 7 ) int -> r1 "V01.[004..008)" +; V09 cse0 [V09,T03] ( 3, 8.50) int -> r4 "CSE - aggressive" +; V10 cse1 [V10,T04] ( 3, 8.50) int -> r12 "CSE - aggressive" +; V11 cse2 [V11,T02] ( 3, 12 ) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1,r2,r3}
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8 ;; size=10 bbWeight=1 PerfScore 3.00 G_M264_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] - ; byrRegs +[r3] - ldr r2, [sp+0x14] - ldr r1, [sp+0x18] - ; byrRegs +[r1] - ldr lr, [sp+0x1C] - cmp r2, lr
+ ldr r0, [sp+0x10] + ; byrRegs +[r0] + ldr r3, [sp+0x14] + ldr r2, [sp+0x18] + ; byrRegs +[r2] + ldr r1, [sp+0x1C] + cmp r3, r1
beq SHORT G_M264_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M264_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r1 r3] - cmp r2, lr
+ ; byrRegs -[r0 r2] + cmp r3, r1
blt SHORT G_M264_IG11
- b SHORT G_M264_IG09
+ b SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref - ; byrRegs +[r1 r3] - mov r0, lr
+G_M264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref + ; byrRegs +[r0 r2] + mov lr, r1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - add r12, r0, -1 - mov r0, r12 - cmp r0, 0 - blt SHORT G_M264_IG06 - cmp r0, r2
+G_M264_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz + add lr, lr, -1 + cmp lr, 0 + blt SHORT G_M264_IG09 + cmp lr, r3
bhs SHORT G_M264_IG13
- lsls r4, r0, 2 - ldr r5, [r3+r4] - cmp r0, lr
+ lsl r12, lr, 2 + ldr r4, [r0+r12] + cmp lr, r1
bhs SHORT G_M264_IG13
- ldr r4, [r1+r4] - cmp r5, r4
+ ldr r12, [r2+r12] + cmp r4, r12
beq SHORT G_M264_IG05
- ;; size=28 bbWeight=4 PerfScore 52.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, byref, isz - cmp r12, 0 - bge SHORT G_M264_IG08 - movs r0, 0 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0 r2] + cmp r12, r4 + bhi SHORT G_M264_IG11 + ;; size=4 bbWeight=0.50 PerfScore 1.00 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 1 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M264_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000A {r1 r3}, gcvars, byref, isz - cmp r12, r2 - bhs SHORT G_M264_IG13 - lsl r4, r12, 2 - ldr r0, [r3+r4] - cmp r12, lr - bhs SHORT G_M264_IG13 - ldr r3, [r1+r4] - ; byrRegs -[r3] - cmp r0, r3 - blo SHORT G_M264_IG11 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r1] - movs r0, 1
+G_M264_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -95,7 +86,7 @@ G_M264_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre mov r0, -1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M264_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,lr}
+ pop {r3,r4,r11,lr}
add sp, 16 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -107,7 +98,7 @@ G_M264_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRe bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 10, PerfScore 74.50, instruction count 53, allocated bytes for code 130 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 112, prolog size 10, PerfScore 66.00, instruction count 43, allocated bytes for code 112 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================ Unwind Info: @@ -119,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 56 (0x00038) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -134,11 +125,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16 FD end + nop ; opsize 16 FF end

-20 (-11.76%) : 92166.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 11, 21 ) ref -> r0 this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T04] ( 6, 14 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T04] ( 5, 13 ) ref -> r3 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 24 ) int -> r1 "index expr"
-; V04 tmp2 [V04,T05] ( 3, 6 ) int -> r1 "index expr" -; V05 cse0 [V05,T00] ( 9, 31 ) int -> r4 "CSE - aggressive" -; V06 cse1 [V06,T03] ( 5, 22 ) int -> r2 "CSE - aggressive"
+;* V04 tmp2 [V04,T06] ( 0, 0 ) int -> zero-ref "index expr" +; V05 cse0 [V05,T05] ( 3, 9 ) int -> r2 "CSE - aggressive" +; V06 cse1 [V06,T00] ( 7, 29 ) int -> r4 "CSE - aggressive" +; V07 cse2 [V07,T03] ( 3, 20 ) int -> r2 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -32,23 +33,9 @@ G_M44374_IG03: ; bbWeight=8, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b str r4, [r0+0x18] ldr r2, [r3+0x04] cmp r2, r4
- ble SHORT G_M44374_IG05
+ ble SHORT G_M44374_IG08
;; size=12 bbWeight=8 PerfScore 48.00 G_M44374_IG04: ; bbWeight=4, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- mov r1, r4 - cmp r1, r2 - bhs SHORT G_M44374_IG07 - add lr, r3, 8 - ; byrRegs +[lr] - lsls r1, r1, 1 - ldrh r1, [lr+r1] - cmp r1, 35 - bne SHORT G_M44374_IG03 - ;; size=20 bbWeight=4 PerfScore 32.00 -G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[lr] - cmp r2, r4 - ble SHORT G_M44374_IG08
mov r1, r4 cmp r1, r2 bhs SHORT G_M44374_IG07 @@ -57,13 +44,17 @@ G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b lsls r1, r1, 1 ldrh r2, [r2+r1] ; byrRegs -[r2]
+ cmp r2, 35 + bne SHORT G_M44374_IG03 + ;; size=18 bbWeight=4 PerfScore 32.00 +G_M44374_IG05: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
cmp r2, 35 bne SHORT G_M44374_IG09 movs r2, 7 str r2, [r0+0x20] adds r2, r4, 1 str r2, [r0+0x18]
- ;; size=30 bbWeight=1 PerfScore 14.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M44374_IG06: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00 @@ -121,7 +112,7 @@ G_M44374_IG09: ; bbWeight=0, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, b bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 8, PerfScore 98.00, instruction count 65, allocated bytes for code 170 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
+; Total bytes of code 150, prolog size 8, PerfScore 90.00, instruction count 57, allocated bytes for code 150 (MethodHash=962252a9) for method System.Data.ExpressionParser:ScanDate():this (FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +124,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+3.37%) : 20855.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)

@@ -8,48 +8,48 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
+; V00 arg0 [V00,T09] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01,T10] ( 5, 3.50) int -> r2 single-def ; V02 arg2 [V02,T08] ( 5, 4 ) byref -> r4 single-def ; V03 arg3 [V03,T03] ( 10, 12.50) byref -> lr single-def ; V04 loc0 [V04,T14] ( 6, 3 ) ubyte -> r1
-; V05 loc1 [V05,T06] ( 6, 8 ) ubyte -> r1 -; V06 loc2 [V06,T11] ( 5, 5.50) ubyte -> r0 -; V07 loc3 [V07,T02] ( 7, 14 ) int -> r3 -; V08 loc4 [V08,T01] ( 5, 14.50) int -> r2 -; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r7
+; V05 loc1 [V05,T06] ( 6, 8 ) ubyte -> r7 +; V06 loc2 [V06,T13] ( 4, 3.50) ubyte -> r8 +; V07 loc3 [V07,T02] ( 7, 14 ) int -> r1 +; V08 loc4 [V08,T01] ( 5, 14.50) int -> r9 +; V09 loc5 [V09,T04] ( 4, 12 ) ubyte -> r10
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V11 tmp1 [V11,T15] ( 3, 3 ) int -> r1 "Span.get_Item index" ; V12 tmp2 [V12,T16] ( 3, 1.50) int -> r0
-; V13 tmp3 [V13,T00] ( 3, 24 ) int -> r7 "Span.get_Item index"
+; V13 tmp3 [V13,T00] ( 3, 24 ) int -> r3 "Span.get_Item index"
; V14 tmp4 [V14 ] ( 3, 3 ) struct ( 8) [sp+0x08] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ; V15 tmp5 [V15 ] ( 3, 3 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V16 tmp6 [V16,T13] ( 4, 4 ) int -> r0 "Single return block return value"
+; V16 tmp6 [V16,T12] ( 4, 4 ) int -> r0 "Single return block return value"
; V17 tmp7 [V17 ] ( 3, 3 ) ubyte -> [sp+0x08] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP ; V18 tmp8 [V18 ] ( 3, 3 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP ; V19 tmp9 [V19 ] ( 3, 3 ) ubyte -> [sp+0x00] do-not-enreg[X] addr-exposed "field V15.hasValue (fldOffset=0x0)" P-DEP ; V20 tmp10 [V20 ] ( 3, 3 ) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V15.value (fldOffset=0x4)" P-DEP
-; V21 tmp11 [V21,T12] ( 3, 5.50) byref -> r5 single-def "V00.[000..004)"
+; V21 tmp11 [V21,T11] ( 3, 5.50) byref -> r5 single-def "V00.[000..004)"
; V22 tmp12 [V22,T07] ( 5, 7 ) int -> r6 "V00.[004..008)"
-; V23 cse0 [V23,T05] ( 3, 12 ) int -> r12 "CSE - aggressive"
+; V23 cse0 [V23,T05] ( 3, 12 ) int -> r0 "CSE - aggressive"
; V24 cse1 [V24,T17] ( 3, 1.50) int -> r0 "CSE - moderate" ;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M45882_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r0,r1}
- push {r4,r5,r6,r7,r11,lr} - sub sp, 16 - add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 20 + add r11, sp, 48
mov r4, r3 ; byrRegs +[r4]
- ldr lr, [sp+0x30]
+ ldr lr, [sp+0x40]
; byrRegs +[lr] ;; size=18 bbWeight=1 PerfScore 6.00 G_M45882_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4010 {r4 lr}, byref
- ldr r5, [sp+0x28]
+ ldr r5, [sp+0x38]
; byrRegs +[r5]
- ldr r6, [sp+0x2C]
+ ldr r6, [sp+0x3C]
movs r0, 0 str r0, [r4] str r0, [r4+0x04] @@ -76,8 +76,8 @@ G_M45882_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 movs r0, 1 ;; size=38 bbWeight=0.50 PerfScore 7.00 G_M45882_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r6,r7,r11,lr}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00 @@ -112,8 +112,8 @@ G_M45882_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 G_M45882_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz mvn r0, 128 ands r0, r1
- uxtb r1, r0 - adds r0, r1, 1
+ uxtb r7, r0 + adds r0, r7, 1
cmp r0, r6 ble SHORT G_M45882_IG11 movs r0, 0 @@ -124,8 +124,8 @@ G_M45882_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M45882_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r6,r7,r11,lr}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00 @@ -148,72 +148,71 @@ G_M45882_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M45882_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz
- uxtb r0, r0 - cmp r0, 0
+ uxtb r8, r0 + cmp r8, 0
beq SHORT G_M45882_IG17
- cmp r1, 4
+ cmp r7, 4
ble SHORT G_M45882_IG17
- ;; size=10 bbWeight=0.50 PerfScore 2.50
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M45882_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz ; byrRegs -[r4-r5]
- movs r1, 0 - str r1, [lr]
+ movs r0, 0 + str r0, [lr]
movs r0, 3 b SHORT G_M45882_IG27 ;; size=10 bbWeight=0.50 PerfScore 2.00 G_M45882_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz ; byrRegs +[r4-r5]
- movs r3, 0 - movs r2, 0 - cmp r1, 0
+ movs r1, 0 + mov r9, 0 + cmp r7, 0
ble SHORT G_M45882_IG22
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=10 bbWeight=0.50 PerfScore 2.00
G_M45882_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz
- ldr r12, [lr] - mov r7, r12 - cmp r7, r6
+ ldr r0, [lr] + mov r3, r0 + cmp r3, r6
bhs SHORT G_M45882_IG28
- ldrb r7, [r5+r7] - add r12, r12, 1 - str r12, [lr] - cmp r3, 0
+ ldrb r10, [r5+r3] + adds r0, r0, 1 + str r0, [lr] + cmp r1, 0
bne SHORT G_M45882_IG21 ;; size=24 bbWeight=4 PerfScore 36.00 G_M45882_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz
- cmp r0, 0
+ cmp r8, 0
beq SHORT G_M45882_IG20
- cmp r7, 0
+ cmp r10, 0
beq SHORT G_M45882_IG23
- ;; size=8 bbWeight=2 PerfScore 8.00
+ b SHORT G_M45882_IG21 + ;; size=14 bbWeight=2 PerfScore 10.00
G_M45882_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz
- cmp r0, 0 - bne SHORT G_M45882_IG21 - cmp r7, 0
+ cmp r10, 0
beq SHORT G_M45882_IG21
- sub r12, r1, r2 - cmp r12, 4
+ sub r0, r7, r9 + cmp r0, 4
bgt SHORT G_M45882_IG16
- ;; size=18 bbWeight=2 PerfScore 14.00
+ ;; size=14 bbWeight=2 PerfScore 10.00
G_M45882_IG21: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4030 {r4 r5 lr}, byref, isz
- lsls r3, r3, 8 - orrs r3, r7 - adds r2, r2, 1 - cmp r2, r1
+ lsls r1, r1, 8 + orr r1, r1, r10 + add r9, r9, 1 + cmp r9, r7
blt SHORT G_M45882_IG18
- ;; size=10 bbWeight=4 PerfScore 20.00
+ ;; size=14 bbWeight=4 PerfScore 20.00
G_M45882_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4010 {r4 lr}, byref, isz ; byrRegs -[r5]
- cmp r3, 0
+ cmp r1, 0
blt SHORT G_M45882_IG16
- cmp r0, 0
+ cmp r8, 0
beq SHORT G_M45882_IG24
- cmp r3, 128
+ cmp r1, 128
bhs SHORT G_M45882_IG24
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
G_M45882_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {lr}, byref, isz ; byrRegs -[r4]
- movs r3, 0 - str r3, [lr]
+ movs r1, 0 + str r1, [lr]
movs r0, 4 b SHORT G_M45882_IG27 ;; size=10 bbWeight=0.50 PerfScore 2.00 @@ -223,7 +222,6 @@ G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b str r0, [sp+0x08] str r0, [sp+0x0C] add r0, sp, 8
- mov r1, r3
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -233,20 +231,20 @@ G_M45882_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b str r0, [r4] ldr r0, [sp+0x0C] str r0, [r4+0x04]
- ;; size=30 bbWeight=0.50 PerfScore 6.50
+ ;; size=28 bbWeight=0.50 PerfScore 6.00
G_M45882_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[r4] movs r0, 5 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M45882_IG26: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r6,r7,r11,lr}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00 G_M45882_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16 - pop {r4,r5,r6,r7,r11,lr}
+ add sp, 20 + pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00 @@ -258,7 +256,7 @@ G_M45882_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 18, PerfScore 145.00, instruction count 149, allocated bytes for code 356 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
+; Total bytes of code 368, prolog size 18, PerfScore 142.50, instruction count 147, allocated bytes for code 368 (MethodHash=0a754cc5) for method System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
; ============================================================ ...

+12 (+3.37%) : 94864.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)

@@ -19,7 +19,7 @@ ; V09 arg9 [V09,T22] ( 2, 1.50) byref -> [sp+0x4C] single-def ; V10 arg10 [V10,T19] ( 3, 1.50) byref -> [sp+0x50] single-def ; V11 loc0 [V11,T17] ( 5, 2.50) int -> [sp+0x0C]
-; V12 loc1 [V12,T05] ( 9, 15 ) int -> r1
+; V12 loc1 [V12,T05] ( 8, 14.50) int -> r1
; V13 loc2 [V13,T13] ( 6, 6.50) int -> r3 ; V14 loc3 [V14,T00] ( 7, 24.50) int -> r2 ; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -47,30 +47,29 @@ G_M61432_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r5, r2 mov r4, r3 ldr r9, [sp+0x3C] // [V05 arg5]
+ ldr lr, [sp+0x40] // [V06 arg6]
ldr r8, [sp+0x48] // [V08 arg8] ; byrRegs +[r8] ldr r12, [sp+0x4C] // [V09 arg9] ; byrRegs +[r12] ldr r10, [sp+0x50] // [V10 arg10] ; byrRegs +[r10]
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=38 bbWeight=1 PerfScore 12.00
G_M61432_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref movs r1, 0 str r1, [r8] ;; size=6 bbWeight=1 PerfScore 2.00 G_M61432_IG03: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
- str r12, [sp+0x4C]
str r1, [r12] ldr r1, [r6+0x10] cmp r1, 0 bgt SHORT G_M61432_IG06
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - ; byrRegs -[r12]
+ ;; size=10 bbWeight=1 PerfScore 4.00 +G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
movs r3, 0 b SHORT G_M61432_IG10 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
ldr r0, [r6+0x0C] ; gcrRegs +[r0] ldr r2, [r7+0x04] @@ -95,25 +94,29 @@ G_M61432_IG05: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r str r0, [r8] adds r1, r1, 1 ;; size=44 bbWeight=2 PerfScore 34.00
-G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz
+G_M61432_IG06: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
cmp r1, 4
- bge SHORT G_M61432_IG07
+ bge SHORT G_M61432_IG09
cmp r4, 0 bgt SHORT G_M61432_IG05 ;; size=8 bbWeight=4 PerfScore 16.00
-G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - cmp r1, 4 - bge SHORT G_M61432_IG09
+G_M61432_IG07: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0400 {r10}, byref + ; gcrRegs -[r7] + ; byrRegs -[r8 r12]
str r1, [r6+0x10] movs r1, 1 strb r1, [r10]
- ;; size=12 bbWeight=0.50 PerfScore 2.50
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M61432_IG08: ; bbWeight=0.50, epilog, nogc, extend add sp, 20 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, gcvars, byref
+G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, gcvars, byref + ; gcrRegs +[r7] + ; byrRegs +[r8 r12]
str r10, [sp+0x50]
+ str lr, [sp+0x40] + str r12, [sp+0x4C]
ldr r3, [sp+0x38] // [V04 arg4] ; gcrRegs +[r3] str r3, [sp] // [V15 OutArgs] @@ -132,6 +135,7 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 ldr r10, [r10] blx r10 // <unknown method> ; gcrRegs -[r0-r1]
+ ; byrRegs -[r12]
; gcr arg pop 0 mov r10, r0 add r9, r10 @@ -140,13 +144,14 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7 sub r0, r0, r10 movs r1, 0 str r1, [r6+0x10]
- str r0, [sp+0x40] // [V06 arg6]
+ mov lr, r0
ldr r3, [sp+0x0C] // [V11 loc0] ldr r10, [sp+0x50] // [V10 arg10] ; byrRegs +[r10]
- ;; size=60 bbWeight=0.50 PerfScore 11.00 -G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref, isz - ldr lr, [sp+0x40] // [V06 arg6]
+ ldr r12, [sp+0x4C] // [V09 arg9] + ; byrRegs +[r12] + ;; size=72 bbWeight=0.50 PerfScore 12.50 +G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref, isz
lsl r0, lr, 2 cmp r0, r4 bge SHORT G_M61432_IG11 @@ -154,15 +159,17 @@ G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r movs r0, 0 strb r0, [r10] str r3, [sp+0x0C] // [V11 loc0]
+ str r12, [sp+0x4C] // [V09 arg9]
b SHORT G_M61432_IG12 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0500 {r8 r10}, byref
+G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=1500 {r8 r10 r12}, byref
movs r0, 1 strb r0, [r10] str r3, [sp+0x0C] // [V11 loc0]
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ str r12, [sp+0x4C] // [V09 arg9] + ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M61432_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ; byrRegs -[r10]
+ ; byrRegs -[r10 r12]
ldr r0, [r8] adds r0, r0, r4 str r0, [r8] @@ -241,7 +248,7 @@ G_M61432_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 34, PerfScore 157.50, instruction count 131, allocated bytes for code 356 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 368, prolog size 38, PerfScore 158.50, instruction count 133, allocated bytes for code 368 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
; ============================================================ Unwind Info: @@ -253,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 178 (0x000b2) Actual length = 356 (0x000164)
+ Function Length : 184 (0x000b8) Actual length = 368 (0x000170)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+3.46%) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)

@@ -42,15 +42,15 @@ ; V31 tmp14 [V31,T26] ( 4, 3 ) int -> lr "Inline stloc first use temp" ; V32 tmp15 [V32,T03] ( 9, 10.70) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.String> ; V33 tmp16 [V33,T15] ( 5, 4 ) ref -> r9 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp17 [V34,T11] ( 9, 4.88) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.String> -; V35 tmp18 [V35,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V34 tmp17 [V34,T11] ( 9, 4.81) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V35 tmp18 [V35,T36] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V36 tmp19 [V36,T33] ( 2, 2 ) byref -> r0 single-def "impAppendStmt" ;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp21 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp22 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp23 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp24 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V42 tmp25 [V42,T38] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V42 tmp25 [V42,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V43 tmp26 [V43,T34] ( 2, 2 ) byref -> r0 single-def "impAppendStmt" ;* V44 tmp27 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -67,7 +67,7 @@ ; V56 tmp39 [V56 ] ( 8, 13 ) struct ( 8) [sp+0x28] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]> ;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax> ;* V58 tmp41 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V59 tmp42 [V59,T00] ( 27, 45 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
+; V59 tmp42 [V59,T00] ( 27, 45 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax>
;* V60 tmp43 [V60 ] ( 0, 0 ) int -> zero-ref single-def "field V04.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ;* V61 tmp44 [V61 ] ( 0, 0 ) int -> zero-ref "field V04.<End>k__BackingField (fldOffset=0x4)" P-INDEP ; V62 tmp45 [V62,T30] ( 3, 2 ) int -> r7 single-def "field V08._value (fldOffset=0x0)" P-INDEP @@ -87,8 +87,8 @@ ; V76 PSPSym [V76,T44] ( 1, 1 ) int -> [sp+0x90] do-not-enreg[V] "PSPSym" ; V77 cse0 [V77,T28] ( 3, 2.50) int -> r2 "CSE - moderate" ; V78 cse1 [V78,T27] ( 3, 3 ) int -> r2 "CSE - moderate"
-; V79 cse2 [V79,T36] ( 3, 1.50) int -> [sp+0x24] spill-single-def "CSE - conservative" -; V80 cse3 [V80,T23] ( 9, 3.88) int -> [sp+0x20] multi-def "CSE - moderate"
+; V79 cse2 [V79,T38] ( 3, 1.50) int -> [sp+0x24] spill-single-def "CSE - conservative" +; V80 cse3 [V80,T23] ( 9, 3.81) int -> [sp+0x20] multi-def "CSE - moderate"
; TEMP_01 ref -> [r11-0xA0] ; ; Lcl frame size = 148 @@ -134,10 +134,10 @@ G_M12557_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r8, [r4+0x04] mov r1, r7 cmp r1, 0
- blt G_M12557_IG35
+ blt G_M12557_IG36
mov r3, r6 cmp r3, 0
- blt G_M12557_IG36
+ blt G_M12557_IG37
;; size=22 bbWeight=1 PerfScore 8.00 G_M12557_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref subs r2, r3, r1 @@ -377,17 +377,17 @@ G_M12557_IG11: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 G_M12557_IG12: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] cmp r5, 0
- beq G_M12557_IG30
+ beq G_M12557_IG31
;; size=6 bbWeight=0.43 PerfScore 0.85 G_M12557_IG13: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz cmp r8, 0
- beq G_M12557_IG30
+ beq G_M12557_IG31
;; size=8 bbWeight=0.43 PerfScore 0.85 G_M12557_IG14: ; bbWeight=0.43, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ldr r3, [r5+0x04] ldr r2, [r8+0x04] cmp r3, r2
- bne G_M12557_IG30
+ bne G_M12557_IG31
;; size=12 bbWeight=0.43 PerfScore 1.70 G_M12557_IG15: ; bbWeight=0.27, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz ldr r2, [r8+0x04] @@ -456,23 +456,23 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0
- mov r5, r0 - ; gcrRegs +[r5]
+ mov r8, r0 + ; gcrRegs +[r8]
movw r1, 0xd1ff
- strh r1, [r5+0x08]
+ strh r1, [r8+0x08]
movs r1, 5
- strb r1, [r5+0x0B] - ldrb r1, [r5+0x0A]
+ strb r1, [r8+0x0B] + ldrb r1, [r8+0x0A]
ldrb r0, [r9+0x0A] ; gcrRegs -[r0] and r0, r0, 63 orrs r1, r0
- strb r1, [r5+0x0A] - ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A] + ldr r1, [r8+0x04]
ldr r0, [r9+0x04] adds r2, r1, r0
- str r2, [r5+0x04] - add r0, r5, 12
+ str r2, [r8+0x04] + add r0, r8, 12
; byrRegs +[r0] mov r1, r9 ; gcrRegs +[r1] @@ -481,21 +481,21 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1 r9] ; byrRegs -[r0]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x30] // [V70 tmp53] ; gcrRegs +[r0] ldrb r0, [r0+0x0A] ; gcrRegs -[r0] and r0, r0, 63 orrs r1, r0
- strb r1, [r5+0x0A]
+ strb r1, [r8+0x0A]
ldr r1, [sp+0x30] // [V70 tmp53] ; gcrRegs +[r1] ldr r1, [r1+0x04] ; gcrRegs -[r1] adds r2, r2, r1
- str r2, [r5+0x04] - add r0, r5, 16
+ str r2, [r8+0x04] + add r0, r8, 16
; byrRegs +[r0] ldr r1, [sp+0x30] // [V70 tmp53] ; gcrRegs +[r1] @@ -508,24 +508,24 @@ G_M12557_IG18: ; bbWeight=1, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 ; gcrRegs +[r1] cmp r1, 0 beq SHORT G_M12557_IG20
- ;; size=174 bbWeight=1 PerfScore 66.00 -G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+ ;; size=192 bbWeight=1 PerfScore 66.00 +G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x34] // [V71 tmp54] ; gcrRegs +[r0] ldrb r0, [r0+0x0A] ; gcrRegs -[r0] and r0, r0, 63 orrs r1, r0
- strb r1, [r5+0x0A]
+ strb r1, [r8+0x0A]
ldr r1, [sp+0x34] // [V71 tmp54] ; gcrRegs +[r1] ldr r1, [r1+0x04] ; gcrRegs -[r1] adds r1, r2, r1
- str r1, [r5+0x04] - add r0, r5, 20
+ str r1, [r8+0x04] + add r0, r8, 20
; byrRegs +[r0] ldr r1, [sp+0x34] // [V71 tmp54] ; gcrRegs +[r1] @@ -534,31 +534,31 @@ G_M12557_IG19: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ;; size=38 bbWeight=0.50 PerfScore 7.50 -G_M12557_IG20: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.50 PerfScore 7.50 +G_M12557_IG20: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x28] // [V72 tmp55] ; gcrRegs +[r1] cmp r1, 0 beq SHORT G_M12557_IG22 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ldrb r1, [r5+0x0A]
+ ldrb r1, [r8+0x0A]
ldr r0, [sp+0x28] // [V72 tmp55] ; gcrRegs +[r0] ldrb r0, [r0+0x0A] ; gcrRegs -[r0] and r0, r0, 63 orrs r1, r0
- strb r1, [r5+0x0A] - ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A] + ldr r1, [r8+0x04]
ldr r0, [sp+0x28] // [V72 tmp55] ; gcrRegs +[r0] ldr r0, [r0+0x04] ; gcrRegs -[r0] adds r1, r1, r0
- str r1, [r5+0x04] - add r0, r5, 24
+ str r1, [r8+0x04] + add r0, r8, 24
; byrRegs +[r0] ldr r1, [sp+0x28] // [V72 tmp55] ; gcrRegs +[r1] @@ -567,24 +567,24 @@ G_M12557_IG21: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ;; size=40 bbWeight=0.50 PerfScore 8.00 -G_M12557_IG22: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ldrb r1, [r5+0x0A]
+ ;; size=48 bbWeight=0.50 PerfScore 8.00 +G_M12557_IG22: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ldrb r1, [r8+0x0A]
ldr r0, [sp+0x2C] // [V73 tmp56] ; gcrRegs +[r0] ldrb r0, [r0+0x0A] ; gcrRegs -[r0] and r0, r0, 63 orrs r1, r0
- strb r1, [r5+0x0A] - ldr r1, [r5+0x04]
+ strb r1, [r8+0x0A] + ldr r1, [r8+0x04]
ldr r0, [sp+0x2C] // [V73 tmp56] ; gcrRegs +[r0] ldr r0, [r0+0x04] ; gcrRegs -[r0] adds r1, r1, r0
- str r1, [r5+0x04] - add r0, r5, 28
+ str r1, [r8+0x04] + add r0, r8, 28
; byrRegs +[r0] ldr r1, [sp+0x2C] // [V73 tmp56] ; gcrRegs +[r1] @@ -593,10 +593,10 @@ G_M12557_IG22: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- b SHORT G_M12557_IG32 - ;; size=42 bbWeight=1 PerfScore 17.00
+ b SHORT G_M12557_IG33 + ;; size=50 bbWeight=1 PerfScore 17.00
G_M12557_IG23: ; bbWeight=0, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5] +[r4 r9]
+ ; gcrRegs -[r8] +[r4 r9]
add r0, r8, r3 add lr, r0, 1 b SHORT G_M12557_IG11 @@ -636,18 +636,22 @@ G_M12557_IG26: ; bbWeight=0.50, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byref ...

realworld.run.linux.arm.checked.mch

-14 (-7.37%) : 24656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)

@@ -8,23 +8,25 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> r4
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> r5 class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> r5 class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 4, 4 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V05 tmp1 [V05,T07] ( 4, 4 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp4 [V08,T06] ( 3, 1.50) ref -> r0 "field V03.array (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T03] ( 2, 8 ) ref -> r1 "argument with side effect" -; V10 cse0 [V10,T01] ( 9, 16.50) int -> r6 multi-def "CSE - aggressive"
+; V08 tmp4 [V08,T08] ( 3, 1.50) ref -> r0 "field V03.array (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T05] ( 2, 8 ) ref -> r1 "argument with side effect" +; V10 cse0 [V10,T03] ( 4, 9 ) int -> r7 "CSE - aggressive" +; V11 cse1 [V11,T04] ( 4, 9 ) int -> r9 "CSE - aggressive" +; V12 cse2 [V12,T01] ( 4, 14 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 G_M4215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr} - add r11, sp, 16
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 24
mov r4, r1 ;; size=10 bbWeight=1 PerfScore 3.00 G_M4215_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz @@ -56,43 +58,37 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref G_M4215_IG04: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] cmp r5, 0
- beq SHORT G_M4215_IG06
+ beq SHORT G_M4215_IG07
;; size=4 bbWeight=8 PerfScore 16.00 G_M4215_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r0, r5 ; gcrRegs +[r0] ldr r6, [r5]
- ldr r3, [r6+0xA0] - ldr r3, [r3+0x18]
+ ldr r7, [r6+0xA0] + ldr r3, [r7+0x18]
blx r3 // <unknown method> ; gcrRegs -[r0]
- mov r7, r0
+ mov r8, r0
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r6+0x88] - ldr r3, [r3+0x10]
+ ldr r9, [r6+0x88] + ldr r3, [r9+0x10]
blx r3 // <unknown method> ; gcrRegs -[r0]
- subs r0, r7, r0
+ sub r0, r8, r0
cmp r0, r4 bgt SHORT G_M4215_IG03
- ;; size=30 bbWeight=4 PerfScore 52.00 -G_M4215_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - beq SHORT G_M4215_IG08 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 52.00 +G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0]
- ldr r6, [r5] - ldr r3, [r6+0xA0] - ldr r3, [r3+0x18]
+ ldr r3, [r7+0x18]
blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, r4
- bgt SHORT G_M4215_IG11 - ;; size=16 bbWeight=0.50 PerfScore 3.50 -G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt SHORT G_M4215_IG10 + ;; size=10 bbWeight=0.50 PerfScore 2.50 +G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] movw r0, 0xd1ff movt r0, 0xd1ff @@ -103,38 +99,35 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre movs r3, 0 str r3, [r0+0x10] ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M4215_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
str r3, [r0+0x20] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc}
+G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend + pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4215_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r5] mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r6+0xA0] - ldr r3, [r3+0x18]
+ ldr r3, [r7+0x18]
blx r3 // <unknown method> ; gcrRegs -[r0]
- mov r7, r0
+ mov r6, r0
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r6+0x88] - ldr r3, [r3+0x10]
+ ldr r3, [r9+0x10]
blx r3 // <unknown method> ; gcrRegs -[r0]
- subs r0, r7, r0
+ subs r0, r6, r0
subs r4, r4, r0 mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r6+0x88] - ldr r3, [r3+0x14]
+ ldr r3, [r9+0x14]
blx r3 // <unknown method> ; gcrRegs -[r5] ldr r3, [r0+0x04] cmp r4, r3
- bhs SHORT G_M4215_IG13
+ bhs SHORT G_M4215_IG12
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -142,11 +135,11 @@ G_M4215_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, b ldr r0, [r0+r3] ; gcrRegs +[r0] ; byrRegs -[r0]
- ;; size=48 bbWeight=0.50 PerfScore 10.50 -G_M4215_IG12: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc}
+ ;; size=40 bbWeight=0.50 PerfScore 9.00 +G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend + pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M4215_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff @@ -154,7 +147,7 @@ G_M4215_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 8, PerfScore 116.00, instruction count 75, allocated bytes for code 190 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 176, prolog size 8, PerfScore 111.50, instruction count 68, allocated bytes for code 176 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================ Unwind Info: @@ -166,7 +159,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -178,7 +171,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
FF end FF end

-12 (-4.80%) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T06] ( 7, 4.50) byref -> r2 single-def ; V02 loc0 [V02,T08] ( 5, 3 ) ushort -> r1 ; V03 loc1 [V03,T05] ( 5, 7 ) int -> lr
-; V04 loc2 [V04,T00] ( 7, 13.50) int -> r12
+; V04 loc2 [V04,T00] ( 5, 12.50) int -> r12
; V05 loc3 [V05,T10] ( 3, 1.50) int -> lr ; V06 loc4 [V06,T11] ( 3, 1.50) int -> lr ; V07 loc5 [V07,T12] ( 3, 1.50) int -> r12 @@ -20,9 +20,9 @@ ; V09 tmp1 [V09,T03] ( 2, 8 ) int -> r12 "impSpillLclRefs" ;* V10 tmp2 [V10 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V11 tmp3 [V11,T09] ( 2, 2 ) int -> r1 "Single return block return value"
-; V12 tmp4 [V12,T04] ( 7, 7.50) byref -> r0 single-def "V00.[000..004)" -; V13 tmp5 [V13,T02] ( 8, 8.50) int -> r3 "V00.[004..008)" -; V14 cse0 [V14,T01] ( 5, 11 ) int -> r4 multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T04] ( 6, 7 ) byref -> r0 single-def "V00.[000..004)" +; V13 tmp5 [V13,T02] ( 7, 8 ) int -> r3 "V00.[004..008)" +; V14 cse0 [V14,T01] ( 4, 10.50) int -> r4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -99,23 +99,19 @@ G_M3969_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, by ;; size=28 bbWeight=2 PerfScore 18.00 G_M3969_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz cmp r12, r3
- bhs SHORT G_M3969_IG09
+ bhs SHORT G_M3969_IG10
lsl r4, r12, 1 ldrh r4, [r0+r4] sub r5, r4, 48 cmp r5, 9 bls SHORT G_M3969_IG07 ;; size=18 bbWeight=4 PerfScore 28.00
-G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz - cmp r12, r3 - bhs SHORT G_M3969_IG10 - lsl r12, r12, 1 - ldrh r4, [r0+r12]
+G_M3969_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz + ; byrRegs -[r0]
cmp r4, 0 bne SHORT G_M3969_IG13
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M3969_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref
- ; byrRegs -[r0]
str lr, [r2] ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M3969_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -160,7 +156,7 @@ G_M3969_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 250, prolog size 10, PerfScore 84.50, instruction count 90, allocated bytes for code 250 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
+; Total bytes of code 238, prolog size 10, PerfScore 82.50, instruction count 86, allocated bytes for code 238 (MethodHash=db41f07e) for method System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
; ============================================================ Unwind Info: @@ -172,7 +168,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 125 (0x0007d) Actual length = 250 (0x0000fa)
+ Function Length : 119 (0x00077) Actual length = 238 (0x0000ee)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-4.05%) : 4135.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)

@@ -12,14 +12,14 @@ ; V01 arg1 [V01,T05] ( 6, 4.50) int -> r1 single-def ; V02 arg2 [V02,T09] ( 3, 3 ) byref -> r2 single-def ; V03 arg3 [V03,T06] ( 6, 4.50) int -> r3 single-def
-; V04 loc0 [V04,T00] ( 7, 15 ) int -> lr -; V05 loc1 [V05,T10] ( 5, 3 ) int -> r12
+; V04 loc0 [V04,T00] ( 6, 14.50) int -> r4 +; V05 loc1 [V05,T10] ( 5, 3 ) int -> lr
; V06 loc2 [V06,T03] ( 5, 9.50) byref -> r0 ; V07 loc3 [V07,T04] ( 5, 9.50) byref -> r2 ; V08 loc4 [V08,T11] ( 4, 2 ) int -> r0 ; V09 loc5 [V09,T12] ( 4, 2 ) int -> lr ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T13] ( 3, 2 ) int -> lr "Inline return value spill temp"
+; V11 tmp1 [V11,T13] ( 3, 2 ) int -> r4 "Inline return value spill temp"
;* V12 tmp2 [V12 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V13 tmp3 [V13 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V14 tmp4 [V14 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" @@ -27,7 +27,7 @@ ; V16 tmp6 [V16,T14] ( 2, 2 ) int -> r1 "Inlining Arg" ; V17 tmp7 [V17,T15] ( 2, 2 ) int -> r3 "Inlining Arg" ; V18 cse0 [V18,T07] ( 3, 6 ) int -> r6 "CSE - aggressive"
-; V19 cse1 [V19,T01] ( 6, 13 ) int -> r4 "CSE - aggressive"
+; V19 cse1 [V19,T01] ( 6, 13 ) int -> r12 "CSE - aggressive"
; V20 cse2 [V20,T02] ( 6, 13 ) int -> r5 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -42,90 +42,90 @@ G_M49993_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, b ble SHORT G_M49993_IG04 ;; size=4 bbWeight=1 PerfScore 2.00 G_M49993_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- mov lr, r3
+ mov r4, r3
b SHORT G_M49993_IG05 ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M49993_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref
- mov lr, r1
+ mov r4, r1
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M49993_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- mov r12, lr
+ mov lr, r4
b SHORT G_M49993_IG08 ;; size=4 bbWeight=1 PerfScore 2.00 G_M49993_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- cmp r4, r5
+ cmp r12, r5
beq SHORT G_M49993_IG07
- orr r6, r4, 32
+ orr r6, r12, 32
orr r7, r5, 32 cmp r6, r7
- bne SHORT G_M49993_IG12
+ bne SHORT G_M49993_IG13
subs r6, 97 cmp r6, 25
- bhi SHORT G_M49993_IG12
+ bhi SHORT G_M49993_IG13
;; size=22 bbWeight=2 PerfScore 18.00 G_M49993_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref
- add lr, lr, -1
+ subs r4, r4, 1
adds r0, r0, 2 adds r2, r2, 2
- ;; size=8 bbWeight=2 PerfScore 6.00
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M49993_IG08: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- cmp lr, 0 - beq SHORT G_M49993_IG10 - ;; size=6 bbWeight=8 PerfScore 16.00
+ cmp r4, 0 + beq SHORT G_M49993_IG11 + ;; size=4 bbWeight=8 PerfScore 16.00
G_M49993_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- ldrh r4, [r0] - cmp r4, 127 - bgt SHORT G_M49993_IG16
+ ldrh r12, [r0] + cmp r12, 127 + bgt SHORT G_M49993_IG17
ldrh r5, [r2] cmp r5, 127 ble SHORT G_M49993_IG06
- ;; size=12 bbWeight=4 PerfScore 24.00
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M49993_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, byref, isz
- cmp lr, 0 - bne SHORT G_M49993_IG16
+ b SHORT G_M49993_IG17 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M49993_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0 r2]
subs r0, r1, r3
- ; byrRegs -[r0] - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M49993_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M49993_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49993_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[r2] - mov r0, r4
+G_M49993_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov r0, r12
mov lr, r5
- sub r12, r4, 97 - cmp r12, 25 - bhi SHORT G_M49993_IG13 - subs r0, 32 - ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M49993_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - sub r1, r5, 97
+ sub r1, r12, 97
cmp r1, 25 bhi SHORT G_M49993_IG14
+ subs r0, 32 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M49993_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sub r3, r5, 97 + cmp r3, 25 + bhi SHORT G_M49993_IG15
sub lr, lr, 32 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49993_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49993_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub r0, r0, lr ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49993_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M49993_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49993_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, gcvars, byref
+G_M49993_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0005 {r0 r2}, gcvars, byref
; byrRegs +[r0 r2]
- sub r12, r12, lr - sub r1, r1, r12 - sub r3, r3, r12
+ sub lr, lr, r4 + sub r1, r1, lr + sub r3, r3, lr
movw lr, 0xd1ff movt lr, 0xd1ff ldr r12, [lr] ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M49993_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M49993_IG18: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,lr} bx r12 // <unknown method> ; gcr arg pop 0 ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 148, prolog size 8, PerfScore 83.50, instruction count 53, allocated bytes for code 148 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
+; Total bytes of code 142, prolog size 8, PerfScore 83.00, instruction count 52, allocated bytes for code 142 (MethodHash=d5cf3cb6) for method System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -137,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 71 (0x00047) Actual length = 142 (0x00008e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+1.49%) : 22082.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getFormatAndCloseBrace|4341(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)

@@ -50,11 +50,11 @@ ; V39 tmp29 [V39,T18] ( 5, 2.50) int -> lr "Inline stloc first use temp" ; V40 tmp30 [V40,T23] ( 4, 2 ) int -> r2 "Inline stloc first use temp" ; V41 tmp31 [V41,T38] ( 3, 1.50) ref -> r1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp32 [V42,T00] ( 14, 13.50) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.String>
+; V42 tmp32 [V42,T00] ( 14, 13.50) ref -> r7 class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp33 [V43 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr" ;* V44 tmp34 [V44,T56] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" ; V45 tmp35 [V45,T39] ( 3, 1.50) ref -> r1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V46 tmp36 [V46,T10] ( 8, 4 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V46 tmp36 [V46,T10] ( 8, 4 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.String>
; V47 tmp37 [V47,T24] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" ; V48 tmp38 [V48,T29] ( 2, 2 ) byref -> r0 single-def "impAppendStmt" ; V49 tmp39 [V49,T25] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" @@ -78,10 +78,10 @@ ; V67 tmp57 [V67,T08] ( 3, 6 ) ref -> r0 single-def "argument with side effect" ; V68 tmp58 [V68,T32] ( 2, 2 ) ref -> r2 single-def "argument with side effect" ; V69 tmp59 [V69,T33] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V70 cse0 [V70,T49] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - conservative"
+; V70 cse0 [V70,T49] ( 3, 1.50) int -> [sp+0x0C] "CSE - conservative"
; V71 cse1 [V71,T50] ( 3, 1.50) int -> r8 "CSE - conservative"
-; V72 cse2 [V72,T51] ( 3, 1.50) int -> [sp+0x08] spill-single-def "CSE - conservative" -; V73 cse3 [V73,T52] ( 3, 1.50) int -> r9 "CSE - conservative"
+; V72 cse2 [V72,T51] ( 3, 1.50) int -> [sp+0x08] "CSE - conservative" +; V73 cse3 [V73,T52] ( 3, 1.50) int -> r10 "CSE - conservative"
; V74 cse4 [V74,T11] ( 8, 4 ) int -> r10 multi-def "CSE - moderate" ; ; Lcl frame size = 20 @@ -210,14 +210,18 @@ G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0 ; byrRegs -[r0-r1] cmp r0, 0 beq SHORT G_M21658_IG08
+ ldr r2, [sp+0x08] // [V72 cse2] + ldr r3, [sp+0x0C] // [V70 cse0]
ldr r0, [r9+0x04] cmp r0, r10
+ str r3, [sp+0x0C] // [V70 cse0] + str r2, [sp+0x08] // [V72 cse2]
bne SHORT G_M21658_IG08 movs r0, 1
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method>
+ movw r1, 0xd1ff + movt r1, 0xd1ff + ldr r1, [r1] + blx r1 // <unknown method>
movs r0, 1 movw r3, 0xd1ff movt r3, 0xd1ff @@ -241,7 +245,7 @@ G_M21658_IG07: ; bbWeight=0.50, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0 ; byrRegs -[r0-r1] cmp r0, 0 bne SHORT G_M21658_IG10
- ;; size=126 bbWeight=0.50 PerfScore 22.00
+ ;; size=134 bbWeight=0.50 PerfScore 24.00
G_M21658_IG08: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0030 {r4 r5}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -387,19 +391,19 @@ G_M21658_IG15: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0020 {r movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- mov r4, r0 - ; gcrRegs +[r4] - cmp r4, 0
+ mov r7, r0 + ; gcrRegs +[r7] + cmp r7, 0
beq SHORT G_M21658_IG18 ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21658_IG16: ; bbWeight=0.25, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M21658_IG16: ; bbWeight=0.25, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- ldr r0, [r4+0x04]
+ ldr r0, [r7+0x04]
cmp r0, 0 bne SHORT G_M21658_IG18 ;; size=6 bbWeight=0.25 PerfScore 0.75 G_M21658_IG17: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r4]
+ ; gcrRegs -[r7]
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -421,25 +425,25 @@ G_M21658_IG17: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, strb r0, [r1+0x0A] b SHORT G_M21658_IG23 ;; size=48 bbWeight=0.50 PerfScore 8.50
-G_M21658_IG18: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz - ; gcrRegs -[r1] +[r4]
+G_M21658_IG18: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz + ; gcrRegs -[r1] +[r7]
movw r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs +[r0]
- mov r7, r0 - ; gcrRegs +[r7] - cmp r4, r7
+ mov r9, r0 + ; gcrRegs +[r9] + cmp r7, r9
beq G_M21658_IG22
- cmp r4, 0 - beq SHORT G_M21658_IG21
cmp r7, 0 beq SHORT G_M21658_IG21
- ldr r0, [r4+0x04]
+ cmp r9, 0 + beq SHORT G_M21658_IG21 + ldr r0, [r7+0x04]
; gcrRegs -[r0]
- ldr r3, [r7+0x04]
+ ldr r3, [r9+0x04]
cmp r0, r3 bne SHORT G_M21658_IG21 movs r0, 1 @@ -452,28 +456,28 @@ G_M21658_IG18: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ldr r0, [r4+0x04] - ldr r3, [r7+0x04]
+ ldr r0, [r7+0x04] + ldr r3, [r9+0x04]
cmp r0, r3 beq SHORT G_M21658_IG19 mov r8, 0 b SHORT G_M21658_IG20
- ;; size=82 bbWeight=0.50 PerfScore 16.00 -G_M21658_IG19: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref
+ ;; size=88 bbWeight=0.50 PerfScore 16.00 +G_M21658_IG19: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0020 {r5}, byref
mov r8, 1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M21658_IG20: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M21658_IG20: ; bbWeight=0.50, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0020 {r5}, byref, isz
mov r0, r8 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- add r0, r4, 8
+ add r0, r7, 8
; byrRegs +[r0]
- ldr r2, [r4+0x04] - lsl r9, r2, 1 - mov r2, r9 - add r1, r7, 8
+ ldr r2, [r7+0x04] + lsl r10, r2, 1 + mov r2, r10 + add r1, r9, 8
; byrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -482,8 +486,8 @@ G_M21658_IG20: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 ; byrRegs -[r0-r1] cmp r0, 0 beq SHORT G_M21658_IG21
- ldr r0, [r4+0x04] - ldr r3, [r7+0x04]
+ ldr r0, [r7+0x04] + ldr r3, [r9+0x04]
cmp r0, r3 bne SHORT G_M21658_IG21 movs r0, 1 @@ -501,21 +505,21 @@ G_M21658_IG20: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- add r0, r4, 8
+ add r0, r7, 8
; byrRegs +[r0]
- mov r2, r9 - add r1, r7, 8
+ mov r2, r10 + add r1, r9, 8
; byrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r7]
+ ; gcrRegs -[r9]
; byrRegs -[r0-r1] cmp r0, 0 bne SHORT G_M21658_IG22
- ;; size=122 bbWeight=0.50 PerfScore 22.00 -G_M21658_IG21: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=124 bbWeight=0.50 PerfScore 22.00 +G_M21658_IG21: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -526,7 +530,7 @@ G_M21658_IG21: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r ; gcrRegs +[r1] str r1, [sp+0x04] // [V51 tmp41] ; GC ptr vars +{V51}
- ldr r0, [r4+0x04]
+ ldr r0, [r7+0x04]
; gcrRegs -[r0] movw r3, 0xd1ff strh r3, [r1+0x08] @@ -536,7 +540,7 @@ G_M21658_IG21: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r strb r0, [r1+0x0A] add r0, r1, 12 ; byrRegs +[r0]
- mov r1, r4
+ mov r1, r7
movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF @@ -546,11 +550,11 @@ G_M21658_IG21: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r ; gcrRegs +[r1] add r0, r1, 16 ; byrRegs +[r0]
- mov r1, r4
+ mov r1, r7
movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r4]
+ ; gcrRegs -[r1 r7]
; byrRegs -[r0] ldr r1, [sp+0x04] // [V51 tmp41] ; gcrRegs +[r1] @@ -630,7 +634,7 @@ G_M21658_IG26: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 1074, prolog size 10, PerfScore 205.25, instruction count 388, allocated bytes for code 1074 (MethodHash=6260ab65) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
+; Total bytes of code 1090, prolog size 10, PerfScore 207.25, instruction count 392, allocated bytes for code 1090 (MethodHash=6260ab65) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
; ============================================================ Unwind Info: @@ -642,7 +646,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 537 (0x00219) Actual length = 1074 (0x000432)
+ Function Length : 545 (0x00221) Actual length = 1090 (0x000442)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+14 (+1.62%) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)

@@ -11,16 +11,16 @@ ; V00 arg0 [V00,T07] ( 22, 23 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.String]> ; V01 loc0 [V01,T19] ( 7, 3.50) ref -> r5 class-hnd exact single-def <System.String> ; V02 loc1 [V02 ] ( 20, 54 ) struct ( 8) [r11-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 44,151.58) int -> r7
+; V03 loc2 [V03,T00] ( 46,185.58) int -> r7
; V04 loc3 [V04,T21] ( 4, 2 ) int -> r0 ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]>
-; V06 loc5 [V06,T06] ( 9, 25.50) int -> r6
+; V06 loc5 [V06,T06] ( 9, 25.50) int -> r8
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r7 class-hnd exact "impAppendStmt" <System.String>
+; V09 tmp2 [V09,T05] ( 5, 28 ) ref -> r6 class-hnd exact "impAppendStmt" <System.String>
; V10 tmp3 [V10,T24] ( 2, 2 ) int -> r3 "Inlining Arg" ; V11 tmp4 [V11,T23] ( 2, 2 ) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String>
-; V12 tmp5 [V12,T03] ( 6, 32 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
+; V12 tmp5 [V12,T04] ( 6, 32 ) ref -> r7 class-hnd "Inlining Arg" <System.__Canon>
; V13 tmp6 [V13,T15] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V14 tmp7 [V14,T17] ( 2, 8 ) byref -> r0 "impAppendStmt" ; V15 tmp8 [V15,T25] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -40,9 +40,9 @@ ; V29 cse2 [V29,T29] ( 2, 1 ) int -> r3 "CSE - moderate" ; V30 cse3 [V30,T11] ( 3, 12 ) int -> r0 "CSE - aggressive" ; V31 cse4 [V31,T10] ( 3, 12 ) ref -> r3 "CSE - aggressive"
-; V32 cse5 [V32,T04] ( 15, 30.54) int -> r6 "CSE - aggressive" -; V33 cse6 [V33,T02] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" -; V34 cse7 [V34,T01] ( 3, 48 ) int -> r3 "CSE - aggressive"
+; V32 cse5 [V32,T01] ( 17, 64.54) int -> r6 "CSE - aggressive" +; V33 cse6 [V33,T03] ( 10, 46 ) byref -> r8 hoist multi-def "CSE - aggressive" +; V34 cse7 [V34,T02] ( 3, 48 ) int -> r3 "CSE - aggressive"
; V35 cse8 [V35,T16] ( 4, 8 ) int -> r10 "CSE - aggressive" ; V36 cse9 [V36,T12] ( 3, 12 ) int -> r3 "CSE - aggressive" ; V37 cse10 [V37,T18] ( 2, 8 ) int -> r1 "CSE - aggressive" @@ -66,7 +66,7 @@ G_M28069_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28069_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] cmp r0, 0
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=8 bbWeight=1 PerfScore 3.00 G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x04] @@ -74,18 +74,18 @@ G_M28069_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movs r3, 0 ldr r2, [r0+0x04] cmp r3, r2
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r5, [r0+0x08] ; gcrRegs +[r5] ldr r6, [r5+0x04] cmp r6, 100
- bgt G_M28069_IG31
+ bgt G_M28069_IG30
adds r0, r6, 2 ; gcrRegs -[r0] movs r3, 2 umull r3, r2, r0, r3 cmp r2, 0
- bne G_M28069_IG33
+ bne G_M28069_IG32
tst r3, r3 beq SHORT G_M28069_IG06 adds r3, 7 @@ -108,12 +108,12 @@ G_M28069_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M28069_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r0, 0
- blt G_M28069_IG35
+ blt G_M28069_IG34
str r3, [r9+0x08] // [V17 tmp10] str r0, [r9+0x0C] // [V18 tmp11] movs r7, 0 cmp r6, 0
- ble SHORT G_M28069_IG15
+ ble SHORT G_M28069_IG14
add r8, r5, 8 ; byrRegs +[r8] ;; size=24 bbWeight=0.50 PerfScore 4.00 @@ -121,107 +121,105 @@ G_M28069_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, lsls r0, r7, 1 ldrh r0, [r8+r0] cmp r0, 39
- bne SHORT G_M28069_IG11
+ bne SHORT G_M28069_IG10
;; size=10 bbWeight=4 PerfScore 16.00 G_M28069_IG08: ; bbWeight=16, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG33
ldrh r2, [r8+r3] strh r2, [r0+r3] adds r7, r7, 1 cmp r6, r7
- ble SHORT G_M28069_IG09
+ ble G_M28069_IG30 + cmp r7, r6 + bhs G_M28069_IG33
lsls r0, r7, 1 ; byrRegs -[r0] ldrh r0, [r8+r0] cmp r0, 39 bne SHORT G_M28069_IG08
- ;; size=38 bbWeight=16 PerfScore 224.00 -G_M28069_IG09: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - cmp r6, r7 - bgt SHORT G_M28069_IG12 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M28069_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4-r5] - ; byrRegs -[r8] - b SHORT G_M28069_IG31 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M28069_IG11: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz - ; gcrRegs +[r4-r5] - ; byrRegs +[r8]
+ ;; size=52 bbWeight=16 PerfScore 288.00 +G_M28069_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz + b SHORT G_M28069_IG11 + ;; size=2 bbWeight=4 PerfScore 4.00 +G_M28069_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
cmp r0, 121
- beq SHORT G_M28069_IG14
+ beq SHORT G_M28069_IG13
;; size=4 bbWeight=2 PerfScore 4.00
-G_M28069_IG12: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1
+ cmp r7, r6 + bhs G_M28069_IG33
ldrh r2, [r8+r3] strh r2, [r0+r3] adds r7, r7, 1 cmp r6, r7 bgt SHORT G_M28069_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=4 PerfScore 48.00 +G_M28069_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0 r8]
- b SHORT G_M28069_IG15
+ b SHORT G_M28069_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x0C] // [V18 tmp11] cmp r7, r0
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 movs r2, 121 strh r2, [r0+r3] ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M28069_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] subs r0, r6, 1 cmp r0, r7
- ble G_M28069_IG31
+ ble G_M28069_IG30
adds r0, r7, 1 cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
add r8, r5, 8 ; byrRegs +[r8] lsls r0, r7, 1 add r10, r0, 2 ldrh r0, [r8+r10] cmp r0, 121
- bne G_M28069_IG31
+ bne G_M28069_IG30
adds r0, r7, 2 cmp r6, r0
- ble SHORT G_M28069_IG16
+ ble SHORT G_M28069_IG15
adds r0, r7, 2 cmp r0, r6
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
lsls r0, r7, 1 adds r0, r0, 4 ldrh r0, [r8+r0] cmp r0, 121
- beq G_M28069_IG31
+ beq G_M28069_IG30
;; size=64 bbWeight=0.50 PerfScore 11.50
-G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG15: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
adds r0, r7, 3 ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- blt SHORT G_M28069_IG17
+ blt SHORT G_M28069_IG16
movs r0, 0
- b SHORT G_M28069_IG18
+ b SHORT G_M28069_IG17
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
+G_M28069_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
+G_M28069_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r8}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -230,7 +228,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r adds r0, r7, 1 ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] movs r3, 121 @@ -239,7 +237,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ; byrRegs -[r0] ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 @@ -250,7 +248,7 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ; byrRegs -[r0] ldr r3, [r9+0x0C] // [V18 tmp11] cmp r0, r3
- bhs G_M28069_IG34
+ bhs G_M28069_IG33
ldr r0, [r9+0x08] // [V17 tmp10] ; byrRegs +[r0] lsls r3, r7, 1 @@ -258,16 +256,16 @@ G_M28069_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0100 {r ...

+20 (+2.45%) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)

@@ -8,32 +8,32 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 7, 8.50) ref -> r4 class-hnd single-def <System.String> -; V01 arg1 [V01,T09] ( 6, 4 ) byref -> r7 single-def -; V02 arg2 [V02,T07] ( 8, 5 ) byref -> r5 single-def -; V03 arg3 [V03,T08] ( 7, 4.50) byref -> r6 single-def -; V04 loc0 [V04,T00] ( 27, 36.50) int -> r8 -; V05 loc1 [V05,T10] ( 6, 3 ) int -> [sp+0x14]
+; V00 arg0 [V00,T07] ( 6, 8 ) ref -> r4 class-hnd single-def <System.String> +; V01 arg1 [V01,T10] ( 6, 4 ) byref -> r7 single-def +; V02 arg2 [V02,T08] ( 8, 5 ) byref -> r5 single-def +; V03 arg3 [V03,T09] ( 7, 4.50) byref -> r6 single-def +; V04 loc0 [V04,T00] ( 21, 33 ) int -> r8 +; V05 loc1 [V05,T11] ( 6, 3 ) int -> [sp+0x14]
;* V06 loc2 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc3 [V07,T11] ( 4, 3.50) ubyte -> r1
+; V07 loc3 [V07,T12] ( 4, 3.50) ubyte -> r1
;* V08 loc4 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc5 [V09,T20] ( 4, 2 ) ubyte -> r1
+; V09 loc5 [V09,T21] ( 4, 2 ) ubyte -> r1
; V10 loc6 [V10,T04] ( 18, 13.50) ushort -> registers
-; V11 loc7 [V11,T05] ( 6, 7.50) ubyte -> r3
+; V11 loc7 [V11,T06] ( 6, 7.50) ubyte -> lr
;* V12 loc8 [V12 ] ( 0, 0 ) ubyte -> zero-ref
-; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> r3
+; V13 loc9 [V13,T03] ( 4, 14 ) ubyte -> lr
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T22] ( 3, 2 ) int -> r1
+; V15 tmp1 [V15,T23] ( 3, 2 ) int -> r1
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp3 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp4 [V18 ] ( 0, 0 ) byref -> zero-ref ;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref single-def
-; V20 tmp6 [V20,T33] ( 3, 1.50) int -> r3
+; V20 tmp6 [V20,T33] ( 3, 1.50) int -> lr
;* V21 tmp7 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V22 tmp8 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V23 tmp9 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp10 [V24,T18] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg" -; V25 tmp11 [V25,T23] ( 2, 2 ) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V24 tmp10 [V24,T19] ( 3, 3 ) int -> [sp+0x10] spill-single-def "Inlining Arg" +; V25 tmp11 [V25,T24] ( 2, 2 ) byref -> [sp+0x04] spill-single-def "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp14 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -48,18 +48,18 @@ ;* V37 tmp23 [V37 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V38 tmp24 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V39 tmp25 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T24] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
+; V40 tmp26 [V40,T25] ( 2, 2 ) byref -> r4 single-def "Inlining Arg"
;* V41 tmp27 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp29 [V43,T19] ( 3, 3 ) int -> r8 "Single return block return value"
+; V43 tmp29 [V43,T20] ( 3, 3 ) int -> r8 "Single return block return value"
;* V44 tmp30 [V44 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V45 tmp31 [V45 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP ;* V46 tmp32 [V46 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V47 tmp33 [V47 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP ; V48 tmp34 [V48,T35] ( 2, 1 ) byref -> r0 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp35 [V49,T39] ( 2, 1 ) int -> r2 "field V21._length (fldOffset=0x4)" P-INDEP
+; V49 tmp35 [V49,T39] ( 2, 1 ) int -> lr "field V21._length (fldOffset=0x4)" P-INDEP
; V50 tmp36 [V50,T36] ( 2, 1 ) byref -> r0 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp37 [V51,T40] ( 2, 1 ) int -> r2 "field V22._length (fldOffset=0x4)" P-INDEP
+; V51 tmp37 [V51,T40] ( 2, 1 ) int -> lr "field V22._length (fldOffset=0x4)" P-INDEP
;* V52 tmp38 [V52 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V53 tmp39 [V53 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP ;* V54 tmp40 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP @@ -74,25 +74,25 @@ ;* V63 tmp49 [V63,T43] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V64 tmp50 [V64 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V65 tmp51 [V65 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
-; V66 cse0 [V66,T21] ( 4, 2 ) int -> r3 "CSE - moderate" -; V67 cse1 [V67,T31] ( 3, 1.50) byref -> r4 "CSE - moderate"
+; V66 cse0 [V66,T22] ( 4, 2 ) int -> lr "CSE - moderate" +; V67 cse1 [V67,T32] ( 3, 1.50) byref -> r4 "CSE - moderate"
; V68 cse2 [V68,T34] ( 3, 1.50) int -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V69 cse3 [V69,T01] ( 10, 17 ) int -> r9 hoist "CSE - aggressive" -; V70 cse4 [V70,T02] ( 13, 15 ) byref -> r10 multi-def "CSE - aggressive" -; V71 cse5 [V71,T32] ( 3, 1.50) ref -> r1 "CSE - moderate" -; V72 rat0 [V72,T12] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V73 rat1 [V73,T13] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable" -; V74 rat2 [V74,T25] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V75 rat3 [V75,T26] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V76 rat4 [V76,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V77 rat5 [V77,T15] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" -; V78 rat6 [V78,T27] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V79 rat7 [V79,T28] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V80 rat8 [V80,T16] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V81 rat9 [V81,T17] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" -; V82 rat10 [V82,T29] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V83 rat11 [V83,T30] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; TEMP_01 ref -> [r11-0x34]
+; V69 cse3 [V69,T01] ( 9, 16 ) int -> r9 hoist "CSE - aggressive" +; V70 cse4 [V70,T02] ( 12, 14.50) byref -> r10 multi-def "CSE - aggressive" +; V71 cse5 [V71,T05] ( 11, 12.50) int -> [sp+0x08] multi-def "CSE - aggressive" +; V72 rat0 [V72,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V73 rat1 [V73,T14] ( 3, 3 ) byref -> r5 "ReplaceWithLclVar is creating a new local variable" +; V74 rat2 [V74,T26] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V75 rat3 [V75,T27] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V76 rat4 [V76,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V77 rat5 [V77,T16] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" +; V78 rat6 [V78,T28] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V79 rat7 [V79,T29] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V80 rat8 [V80,T17] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V81 rat9 [V81,T18] ( 3, 3 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" +; V82 rat10 [V82,T30] ( 2, 2 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V83 rat11 [V83,T31] ( 2, 2 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; TEMP_01 ref -> [r11-0x38]
; ; Lcl frame size = 28 @@ -101,7 +101,7 @@ G_M49978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub sp, 28 add r11, sp, 56 movs r4, 0
- str r4, [sp+0x04] // [TEMP_01]
+ str r4, [sp] // [TEMP_01]
mov r4, r0 ; gcrRegs +[r4] mov r7, r1 @@ -121,96 +121,90 @@ G_M49978_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r ;; size=4 bbWeight=2 PerfScore 2.00 G_M49978_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz cmp r9, r8
- bls SHORT G_M49978_IG06
+ bls SHORT G_M49978_IG09
;; size=4 bbWeight=8 PerfScore 16.00 G_M49978_IG05: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz add r10, r4, 8 ; byrRegs +[r10]
- lsl r0, r8, 1 - ldrh r0, [r10+r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.UriHelper:IsLWS(ushort):ubyte - ; byrRegs -[r10]
+ lsl r3, r8, 1 + str r3, [sp+0x08] + ldrh r0, [r10+r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + blx r2 // System.UriHelper:IsLWS(ushort):ubyte
; gcr arg pop 0 cmp r0, 0 bne SHORT G_M49978_IG03
- ;; size=28 bbWeight=4 PerfScore 36.00 -G_M49978_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - cmp r9, r8 - bls SHORT G_M49978_IG10 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - add r10, r4, 8 - ; byrRegs +[r10] - lsl r1, r8, 1 - ldrh r1, [r10+r1] - cmp r1, 47 - beq SHORT G_M49978_IG08
+ ;; size=30 bbWeight=4 PerfScore 40.00 +G_M49978_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=04E0 {r5 r6 r7 r10}, byref, isz + ldr r2, [sp+0x08] // [V71 cse5] + ldrh r2, [r10+r2] + cmp r2, 47 + beq SHORT G_M49978_IG07
movs r1, 0
- b SHORT G_M49978_IG09 - ;; size=20 bbWeight=0.50 PerfScore 3.50 -G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+ b SHORT G_M49978_IG08 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M49978_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
; byrRegs -[r10] movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - b SHORT G_M49978_IG11
+G_M49978_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz + b SHORT G_M49978_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
uxtb r1, r1 cmp r1, 0
- beq SHORT G_M49978_IG19
+ beq SHORT G_M49978_IG18
;; size=6 bbWeight=1 PerfScore 3.00
-G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
add r1, r8, 1 cmp r9, r1
- bls SHORT G_M49978_IG13
+ bls SHORT G_M49978_IG12
movs r1, 0
- b SHORT G_M49978_IG14
+ b SHORT G_M49978_IG13
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
+G_M49978_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref
movs r1, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
cmp r1, 0
- bne SHORT G_M49978_IG19
+ bne SHORT G_M49978_IG18
add r10, r4, 8 ; byrRegs +[r10]
- lsl r1, r8, 1 - adds r1, r1, 2 - ldrh r2, [r10+r1] - cmp r2, 47 - beq SHORT G_M49978_IG15 - cmp r2, 92 - bne SHORT G_M49978_IG16
+ lsl r2, r8, 1 + adds r1, r2, 2 + ldrh r3, [r10+r1] + cmp r3, 47 + beq SHORT G_M49978_IG14 + cmp r3, 92 + bne SHORT G_M49978_IG15
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
+G_M49978_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz
; byrRegs -[r10]
- movs r3, 1 - b SHORT G_M49978_IG17 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref - movs r3, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M49978_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz - cmp r3, 0 - beq SHORT G_M49978_IG18
+ mov lr, 1 + b SHORT G_M49978_IG16 + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M49978_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref + mov lr, 0 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M49978_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=00E0 {r5 r6 r7}, byref, isz + cmp lr, 0
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 61 49 9 3 -422 +108
benchmarks.run_pgo.linux.arm.checked.mch 334 168 151 15 -1,130 +1,534
benchmarks.run_tiered.linux.arm.checked.mch 61 47 9 5 -414 +102
coreclr_tests.run.linux.arm.checked.mch 299 251 39 9 -1,502 +384
libraries.crossgen2.linux.arm.checked.mch 127 105 17 5 -992 +130
libraries.pmi.linux.arm.checked.mch 283 202 52 29 -1,502 +358
libraries_tests.run.linux.arm.Release.mch 1,571 1,241 196 134 -8,262 +1,490
librariestestsnotieredcompilation.run.linux.arm.Release.mch 656 519 78 59 -3,166 +614
realworld.run.linux.arm.checked.mch 41 27 10 4 -224 +110
3,433 2,609 561 263 -17,614 +4,830

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,963 5,344 40,619 1,203 (2.55%) 1,204 (2.55%)
benchmarks.run_pgo.linux.arm.checked.mch 159,513 56,729 102,784 3,201 (1.97%) 3,201 (1.97%)
benchmarks.run_tiered.linux.arm.checked.mch 80,098 43,607 36,491 1,086 (1.34%) 1,087 (1.34%)
coreclr_tests.run.linux.arm.checked.mch 471,993 259,195 212,798 7,170 (1.50%) 7,170 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 188,191 14 188,177 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,358 6 272,352 7,786 (2.78%) 7,788 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,228 442,672 267,556 16,195 (2.23%) 16,198 (2.23%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,631 21,604 253,027 33,224 (10.79%) 33,226 (10.79%)
realworld.run.linux.arm.checked.mch 36,407 157 36,250 1,408 (3.72%) 1,408 (3.72%)
2,239,382 829,328 1,410,054 71,273 (3.08%) 71,282 (3.08%)

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: 15290340 (overridden on cmd)
Total bytes of diff: 15290026 (overridden on cmd)
Total bytes of delta: -314 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          34 : 2143.dasm (3.23 % of base)
          20 : 3107.dasm (1.40 % of base)
          14 : 2771.dasm (1.62 % of base)
          12 : 1197.dasm (0.28 % of base)
           8 : 17983.dasm (0.10 % of base)
           8 : 10658.dasm (1.12 % of base)
           8 : 26062.dasm (0.17 % of base)
           2 : 10673.dasm (0.06 % of base)
           2 : 4673.dasm (0.43 % of base)

Top file improvements (bytes):
         -34 : 12628.dasm (-0.34 % of base)
         -30 : 10118.dasm (-1.08 % of base)
         -28 : 24814.dasm (-1.24 % of base)
         -22 : 23507.dasm (-5.21 % of base)
         -18 : 6154.dasm (-0.49 % of base)
         -18 : 33614.dasm (-13.85 % of base)
         -16 : 28828.dasm (-8.42 % of base)
         -14 : 47079.dasm (-5.00 % of base)
         -12 : 938.dasm (-4.80 % of base)
         -12 : 11384.dasm (-0.56 % of base)
         -12 : 25443.dasm (-0.47 % of base)
         -12 : 15956.dasm (-6.12 % of base)
         -10 : 27653.dasm (-1.06 % of base)
         -10 : 3501.dasm (-4.59 % of base)
          -8 : 19792.dasm (-4.08 % of base)
          -8 : 4234.dasm (-1.54 % of base)
          -8 : 24356.dasm (-0.23 % of base)
          -8 : 24418.dasm (-1.20 % of base)
          -6 : 28657.dasm (-1.74 % of base)
          -6 : 32658.dasm (-1.74 % of base)

51 total files with Code Size differences (42 improved, 9 regressed), 3 unchanged.

Top method regressions (bytes):
          34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          20 (1.40 % of base) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          14 (1.62 % of base) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.28 % of base) : 1197.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
           8 (0.17 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           8 (0.10 % of base) : 17983.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           8 (1.12 % of base) : 10658.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
           2 (0.43 % of base) : 4673.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           2 (0.06 % of base) : 10673.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)

Top method improvements (bytes):
         -34 (-0.34 % of base) : 12628.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -30 (-1.08 % of base) : 10118.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -28 (-1.24 % of base) : 24814.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -22 (-5.21 % of base) : 23507.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -18 (-13.85 % of base) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-0.49 % of base) : 6154.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -16 (-8.42 % of base) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -14 (-5.00 % of base) : 47079.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -12 (-0.47 % of base) : 25443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-6.12 % of base) : 15956.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -12 (-4.80 % of base) : 938.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-0.56 % of base) : 11384.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
         -10 (-1.06 % of base) : 27653.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
         -10 (-4.59 % of base) : 3501.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
          -8 (-1.20 % of base) : 24418.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          -8 (-0.23 % of base) : 24356.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (FullOpts)
          -8 (-1.54 % of base) : 4234.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
          -8 (-4.08 % of base) : 19792.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
          -6 (-0.32 % of base) : 24963.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
          -6 (-1.74 % of base) : 32658.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:ResetStack():this (FullOpts)

Top method regressions (percentages):
          34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          14 (1.62 % of base) : 2771.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          20 (1.40 % of base) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
           8 (1.12 % of base) : 10658.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
           2 (0.43 % of base) : 4673.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          12 (0.28 % of base) : 1197.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
           8 (0.17 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           8 (0.10 % of base) : 17983.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           2 (0.06 % of base) : 10673.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)

Top method improvements (percentages):
         -18 (-13.85 % of base) : 33614.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -16 (-8.42 % of base) : 28828.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -12 (-6.12 % of base) : 15956.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
         -22 (-5.21 % of base) : 23507.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -14 (-5.00 % of base) : 47079.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -12 (-4.80 % of base) : 938.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -10 (-4.59 % of base) : 3501.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
          -8 (-4.08 % of base) : 19792.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
          -6 (-4.05 % of base) : 15724.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -4 (-3.57 % of base) : 7551.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
          -4 (-3.28 % of base) : 9033.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
          -6 (-2.97 % of base) : 1829.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
          -4 (-2.74 % of base) : 2756.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.41 % of base) : 950.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
          -4 (-1.89 % of base) : 5411.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          -4 (-1.82 % of base) : 5929.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.82 % of base) : 14970.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.82 % of base) : 9148.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (FullOpts)
          -6 (-1.74 % of base) : 32658.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:ResetStack():this (FullOpts)
          -6 (-1.74 % of base) : 28657.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:ResetStack():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: 63958726 (overridden on cmd)
Total bytes of diff: 63959130 (overridden on cmd)
Total bytes of delta: 404 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          66 : 81989.dasm (5.24 % of base)
          42 : 100674.dasm (2.16 % of base)
          36 : 112575.dasm (3.19 % of base)
          36 : 79316.dasm (3.20 % of base)
          36 : 87556.dasm (3.20 % of base)
          24 : 67872.dasm (2.42 % of base)
          24 : 141542.dasm (2.30 % of base)
          22 : 103380.dasm (2.12 % of base)
          22 : 137992.dasm (2.12 % of base)
          22 : 38959.dasm (2.12 % of base)
          22 : 141541.dasm (1.43 % of base)
          22 : 16881.dasm (2.12 % of base)
          22 : 74456.dasm (2.13 % of base)
          20 : 148282.dasm (1.94 % of base)
          20 : 28614.dasm (1.40 % of base)
          18 : 132334.dasm (5.59 % of base)
          18 : 140534.dasm (5.59 % of base)
          18 : 25390.dasm (5.59 % of base)
          18 : 46254.dasm (5.59 % of base)
          18 : 53679.dasm (5.59 % of base)

Top file improvements (bytes):
         -32 : 139419.dasm (-1.35 % of base)
         -30 : 38107.dasm (-0.30 % of base)
         -30 : 35066.dasm (-1.08 % of base)
         -28 : 91434.dasm (-1.24 % of base)
         -22 : 86901.dasm (-5.21 % of base)
         -22 : 100464.dasm (-0.52 % of base)
         -20 : 101059.dasm (-2.35 % of base)
         -18 : 122258.dasm (-13.85 % of base)
         -18 : 8308.dasm (-0.48 % of base)
         -16 : 114375.dasm (-8.42 % of base)
         -14 : 161131.dasm (-4.67 % of base)
         -12 : 101060.dasm (-1.83 % of base)
         -12 : 124833.dasm (-0.84 % of base)
         -12 : 17629.dasm (-0.68 % of base)
         -12 : 2646.dasm (-4.80 % of base)
         -12 : 53483.dasm (-6.12 % of base)
         -12 : 88285.dasm (-0.84 % of base)
         -12 : 128385.dasm (-0.96 % of base)
         -12 : 155073.dasm (-0.71 % of base)
         -12 : 129761.dasm (-0.96 % of base)

73 total files with Code Size differences (37 improved, 36 regressed), 15 unchanged.

Top method regressions (bytes):
          66 (5.24 % of base) : 81989.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
          42 (2.16 % of base) : 100674.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
          36 (3.19 % of base) : 112575.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          36 (3.20 % of base) : 79316.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          36 (3.20 % of base) : 87556.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          24 (2.30 % of base) : 141542.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          24 (2.42 % of base) : 67872.dasm - System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task (Tier0-FullOpts)
          22 (2.12 % of base) : 103380.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          22 (2.12 % of base) : 137992.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          22 (2.12 % of base) : 38959.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          22 (2.12 % of base) : 16881.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          22 (2.13 % of base) : 74456.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          22 (1.43 % of base) : 141541.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
          20 (1.94 % of base) : 148282.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
          20 (1.40 % of base) : 28614.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
          18 (5.59 % of base) : 140534.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 46254.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 53679.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 78378.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 36262.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)

Top method improvements (bytes):
         -32 (-1.35 % of base) : 139419.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -30 (-0.30 % of base) : 38107.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         -30 (-1.08 % of base) : 35066.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
         -28 (-1.24 % of base) : 91434.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 (-0.52 % of base) : 100464.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:SynthesizeDebuggableAttribute():Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
         -22 (-5.21 % of base) : 86901.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -20 (-2.35 % of base) : 101059.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:<VisitCall>g__visitReceiver|35_0(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -18 (-13.85 % of base) : 122258.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -18 (-0.48 % of base) : 8308.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
         -16 (-8.42 % of base) : 114375.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -14 (-4.67 % of base) : 161131.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -12 (-1.83 % of base) : 101060.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:VisitCallOrConditionalAccessReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -12 (-6.12 % of base) : 53483.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
         -12 (-0.96 % of base) : 128385.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
         -12 (-0.96 % of base) : 129761.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
         -12 (-0.96 % of base) : 24961.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
         -12 (-0.84 % of base) : 124833.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
         -12 (-0.84 % of base) : 88285.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
         -12 (-0.68 % of base) : 17629.dasm - System.Number:FormatDouble[ushort](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
         -12 (-0.71 % of base) : 155073.dasm - System.Number:FormatDouble[ushort](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)

Top method regressions (percentages):
          12 (8.33 % of base) : 67354.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
          12 (8.33 % of base) : 121874.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
          12 (8.33 % of base) : 149669.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
          12 (7.59 % of base) : 100544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
          10 (7.46 % of base) : 67355.dasm - System.Runtime.CompilerServices.ConfiguredTaskAwaitable:.ctor(System.Threading.Tasks.Task,int):this (Tier1)
          18 (5.59 % of base) : 140534.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 46254.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 53679.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 78378.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 36262.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 118034.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 132334.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 25390.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          18 (5.59 % of base) : 40904.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          66 (5.24 % of base) : 81989.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
           8 (4.88 % of base) : 98175.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (4.30 % of base) : 100545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
           8 (4.30 % of base) : 100543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_HashAlgorithm():int:this (Tier1)
           8 (3.45 % of base) : 98697.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          36 (3.20 % of base) : 79316.dasm - System.Net.Sockets.SocketAsyncContext:SendToAsync(System.Memory`1[ubyte],int,int,int,System.Memory`1[ubyte],byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)

Top method improvements (percentages):
         -18 (-13.85 % of base) : 122258.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -16 (-8.42 % of base) : 114375.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -12 (-6.12 % of base) : 53483.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
         -22 (-5.21 % of base) : 86901.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -12 (-4.80 % of base) : 2646.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
         -14 (-4.67 % of base) : 161131.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
          -8 (-4.08 % of base) : 73240.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
          -6 (-4.05 % of base) : 55659.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier0-FullOpts)
          -4 (-3.57 % of base) : 26724.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier0-FullOpts)
          -4 (-3.28 % of base) : 23243.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
          -6 (-2.97 % of base) : 7639.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
          -4 (-2.74 % of base) : 11257.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
          -4 (-2.41 % of base) : 2726.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
         -20 (-2.35 % of base) : 101059.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:<VisitCall>g__visitReceiver|35_0(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
          -4 (-1.89 % of base) : 14681.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
         -12 (-1.83 % of base) : 101060.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:VisitCallOrConditionalAccessReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
          -4 (-1.82 % of base) : 23529.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (Tier0-FullOpts)
          -4 (-1.82 % of base) : 51390.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (Tier0-FullOpts)
          -4 (-1.82 % of base) : 19738.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier0-FullOpts)
          -6 (-1.74 % of base) : 123085.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:ResetStack():this (Tier0-FullOpts)


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 21546378 (overridden on cmd)
Total bytes of diff: 21546066 (overridden on cmd)
Total bytes of delta: -312 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          22 : 9874.dasm (2.71 % of base)
          20 : 13516.dasm (1.40 % of base)
          20 : 23226.dasm (2.87 % of base)
          12 : 3414.dasm (0.28 % of base)
           8 : 54158.dasm (0.17 % of base)
           8 : 37304.dasm (0.10 % of base)
           6 : 23250.dasm (0.18 % of base)
           4 : 8557.dasm (0.50 % of base)
           2 : 14889.dasm (0.43 % of base)

Top file improvements (bytes):
         -34 : 26254.dasm (-0.34 % of base)
         -30 : 24618.dasm (-1.08 % of base)
         -28 : 48343.dasm (-1.24 % of base)
         -22 : 45946.dasm (-5.21 % of base)
         -18 : 21931.dasm (-0.49 % of base)
         -18 : 64324.dasm (-13.85 % of base)
         -16 : 62633.dasm (-8.42 % of base)
         -14 : 80096.dasm (-5.00 % of base)
         -12 : 2572.dasm (-4.80 % of base)
         -12 : 49878.dasm (-0.47 % of base)
         -12 : 27064.dasm (-0.56 % of base)
         -12 : 31836.dasm (-6.12 % of base)
         -10 : 14581.dasm (-4.59 % of base)
         -10 : 57825.dasm (-1.06 % of base)
          -8 : 41667.dasm (-4.08 % of base)
          -8 : 47379.dasm (-0.23 % of base)
          -8 : 6204.dasm (-1.54 % of base)
          -8 : 47505.dasm (-0.93 % of base)
          -6 : 34106.dasm (-4.05 % of base)
          -6 : 4361.dasm (-2.97 % of base)

50 total files with Code Size differences (41 improved, 9 regressed), 5 unchanged.

Top method regressions (bytes):
          22 (2.71 % of base) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
          20 (2.87 % of base) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
          20 (1.40 % of base) : 13516.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
          12 (0.28 % of base) : 3414.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
           8 (0.17 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
           8 (0.10 % of base) : 37304.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
           6 (0.18 % of base) : 23250.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
           4 (0.50 % of base) : 8557.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
           2 (0.43 % of base) : 14889.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)

Top method improvements (bytes):
         -34 (-0.34 % of base) : 26254.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         -30 (-1.08 % of base) : 24618.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
         -28 (-1.24 % of base) : 48343.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 (-5.21 % of base) : 45946.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -18 (-13.85 % of base) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -18 (-0.49 % of base) : 21931.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
         -16 (-8.42 % of base) : 62633.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -14 (-5.00 % of base) : 80096.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -12 (-0.47 % of base) : 49878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
         -12 (-6.12 % of base) : 31836.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
         -12 (-4.80 % of base) : 2572.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
         -12 (-0.56 % of base) : 27064.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
         -10 (-1.06 % of base) : 57825.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier0-FullOpts)
         -10 (-4.59 % of base) : 14581.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (Tier1)
          -8 (-0.93 % of base) : 47505.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)
          -8 (-0.23 % of base) : 47379.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMemberDeclarationOrStatementCore(ushort):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax:this (Tier0-FullOpts)
          -8 (-1.54 % of base) : 6204.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
          -8 (-4.08 % of base) : 41667.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
          -6 (-0.32 % of base) : 48725.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (Tier0-FullOpts)
          -6 (-1.74 % of base) : 64541.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:ResetStack():this (Tier0-FullOpts)

Top method regressions (percentages):
          20 (2.87 % of base) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
          22 (2.71 % of base) : 9874.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
          20 (1.40 % of base) : 13516.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
           4 (0.50 % of base) : 8557.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier0-FullOpts)
           2 (0.43 % of base) : 14889.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
          12 (0.28 % of base) : 3414.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
           6 (0.18 % of base) : 23250.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
           8 (0.17 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
           8 (0.10 % of base) : 37304.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)

Top method improvements (percentages):
         -18 (-13.85 % of base) : 64324.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -16 (-8.42 % of base) : 62633.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -12 (-6.12 % of base) : 31836.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
         -22 (-5.21 % of base) : 45946.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -14 (-5.00 % of base) : 80096.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -12 (-4.80 % of base) : 2572.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
         -10 (-4.59 % of base) : 14581.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (Tier1)
          -8 (-4.08 % of base) : 41667.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
          -6 (-4.05 % of base) : 34106.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier0-FullOpts)
          -4 (-3.57 % of base) : 20529.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:MoveNext():ubyte:this (Tier0-FullOpts)
          -4 (-3.28 % of base) : 15192.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
          -6 (-2.97 % of base) : 4361.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
          -4 (-2.74 % of base) : 9855.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
          -4 (-2.41 % of base) : 2647.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
          -4 (-1.89 % of base) : 16125.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
          -4 (-1.82 % of base) : 12906.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (Tier0-FullOpts)
          -4 (-1.82 % of base) : 29842.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (Tier0-FullOpts)
          -4 (-1.82 % of base) : 16865.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():this (Tier0-FullOpts)
          -6 (-1.74 % of base) : 64541.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:ResetStack():this (Tier0-FullOpts)
          -6 (-1.74 % of base) : 62750.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:ResetStack():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: 321753452 (overridden on cmd)
Total bytes of diff: 321752334 (overridden on cmd)
Total bytes of delta: -1118 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          26 : 306659.dasm (1.83 % of base)
          26 : 311953.dasm (1.84 % of base)
          24 : 116701.dasm (0.51 % of base)
          24 : 204941.dasm (0.51 % of base)
          24 : 38074.dasm (0.51 % of base)
          18 : 198699.dasm (0.44 % of base)
          18 : 416302.dasm (0.44 % of base)
          14 : 136807.dasm (2.93 % of base)
          14 : 2335.dasm (0.30 % of base)
          14 : 166174.dasm (0.29 % of base)
          14 : 8095.dasm (0.29 % of base)
          12 : 212180.dasm (1.02 % of base)
          12 : 217042.dasm (0.25 % of base)
          12 : 199978.dasm (1.02 % of base)
          10 : 159297.dasm (0.21 % of base)
          10 : 136822.dasm (1.99 % of base)
          10 : 401876.dasm (0.44 % of base)
          10 : 116831.dasm (2.08 % of base)
          10 : 159935.dasm (0.44 % of base)
           8 : 333833.dasm (0.84 % of base)

Top file improvements (bytes):
         -28 : 140427.dasm (-1.24 % of base)
         -28 : 378105.dasm (-1.24 % of base)
         -20 : 311937.dasm (-0.61 % of base)
         -18 : 382899.dasm (-13.85 % of base)
         -18 : 152988.dasm (-13.85 % of base)
         -16 : 153023.dasm (-8.42 % of base)
         -16 : 382917.dasm (-8.42 % of base)
         -14 : 300805.dasm (-4.90 % of base)
         -14 : 301117.dasm (-4.90 % of base)
         -14 : 309502.dasm (-4.90 % of base)
         -14 : 154580.dasm (-5.00 % of base)
         -14 : 302391.dasm (-4.90 % of base)
         -14 : 303273.dasm (-4.90 % of base)
         -14 : 311123.dasm (-4.90 % of base)
         -14 : 383440.dasm (-5.00 % of base)
         -14 : 272030.dasm (-4.90 % of base)
         -14 : 300634.dasm (-4.90 % of base)
         -14 : 304367.dasm (-4.90 % of base)
         -14 : 304713.dasm (-2.16 % of base)
         -12 : 154586.dasm (-6.12 % of base)

64 total files with Code Size differences (36 improved, 28 regressed), 9 unchanged.

Top method regressions (bytes):
          26 (1.83 % of base) : 306659.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
          26 (1.84 % of base) : 311953.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
          24 (0.51 % of base) : 116701.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (0.51 % of base) : 204941.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (0.51 % of base) : 38074.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          18 (0.44 % of base) : 416302.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
          18 (0.44 % of base) : 198699.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (Tier0-FullOpts)
          14 (0.30 % of base) : 2335.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          14 (0.29 % of base) : 166174.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          14 (0.29 % of base) : 8095.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          14 (2.93 % of base) : 136807.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
          12 (1.02 % of base) : 212180.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
          12 (1.02 % of base) : 199978.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
          12 (0.25 % of base) : 217042.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          10 (0.21 % of base) : 159297.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          10 (1.99 % of base) : 136822.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
          10 (2.08 % of base) : 116831.dasm - System.Type:GetType(System.String):System.Type (Tier1)
          10 (0.44 % of base) : 401876.dasm - Test_DictionaryExpansion:DoTest(int) (FullOpts)
          10 (0.44 % of base) : 159935.dasm - Test_DictionaryExpansion:DoTest(int) (Tier0-FullOpts)
           8 (0.17 % of base) : 379527.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)

Top method improvements (bytes):
         -28 (-1.24 % of base) : 378105.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.24 % of base) : 140427.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
         -20 (-0.61 % of base) : 311937.dasm - Internal.TypeSystem.Interop.MarshalHelpers:GetMarshallerKind(Internal.TypeSystem.TypeDesc,System.Nullable`1[int],Internal.TypeSystem.EmbeddedSignatureData[],Internal.TypeSystem.MarshalAsDescriptor,ubyte,ubyte,int,byref):int (Tier1)
         -18 (-13.85 % of base) : 382899.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-13.85 % of base) : 152988.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -16 (-8.42 % of base) : 382917.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -16 (-8.42 % of base) : 153023.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -14 (-2.16 % of base) : 304713.dasm - ILCompiler.ProcessLinkerXmlBase:ProcessAssemblies(System.Xml.XPath.XPathNavigator):this (Tier0-FullOpts)
         -14 (-5.00 % of base) : 383440.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -14 (-5.00 % of base) : 154580.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -14 (-4.90 % of base) : 300805.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 301117.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 309502.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 302391.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 303273.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 311123.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 272030.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 300634.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 304367.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -12 (-0.47 % of base) : 378889.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

Top method regressions (percentages):
          14 (2.93 % of base) : 136807.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
          10 (2.08 % of base) : 116831.dasm - System.Type:GetType(System.String):System.Type (Tier1)
          10 (1.99 % of base) : 136822.dasm - System.Reflection.TypeNameParser:GetType(System.String,ubyte,ubyte,System.Reflection.Assembly):System.Type (Instrumented Tier1)
          26 (1.84 % of base) : 311953.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
          26 (1.83 % of base) : 306659.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:GetOrAdd(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.Func`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]):System.__Canon:this (Tier1)
           2 (1.28 % of base) : 296442.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:get_Text():System.ReadOnlySpan`1[ushort]:this (Tier1)
          12 (1.02 % of base) : 212180.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
          12 (1.02 % of base) : 199978.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
           2 (0.93 % of base) : 296440.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this (Tier1)
           2 (0.87 % of base) : 270620.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
           8 (0.84 % of base) : 333833.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           8 (0.84 % of base) : 37077.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (Tier0-FullOpts)
           2 (0.71 % of base) : 295823.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
           6 (0.69 % of base) : 198875.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
           2 (0.51 % of base) : 155657.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (Instrumented Tier1)
          24 (0.51 % of base) : 38074.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (0.51 % of base) : 116701.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (0.51 % of base) : 204941.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          18 (0.44 % of base) : 416302.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
          18 (0.44 % of base) : 198699.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (Tier0-FullOpts)

Top method improvements (percentages):
         -18 (-13.85 % of base) : 382899.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-13.85 % of base) : 152988.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -16 (-8.42 % of base) : 382917.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -16 (-8.42 % of base) : 153023.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -12 (-6.12 % of base) : 383446.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (FullOpts)
         -12 (-6.12 % of base) : 154586.dasm - Span.SpanBench:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
         -14 (-5.00 % of base) : 383440.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
         -14 (-5.00 % of base) : 154580.dasm - Span.SpanBench:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -14 (-4.90 % of base) : 300805.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 301117.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 309502.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 302391.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 303273.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 311123.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 272030.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 300634.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -14 (-4.90 % of base) : 304367.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Tier1)
         -12 (-4.29 % of base) : 473770.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -12 (-4.29 % of base) : 295584.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
          -8 (-3.33 % of base) : 2009.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (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: 34522594 (overridden on cmd)
Total bytes of diff: 34521732 (overridden on cmd)
Total bytes of delta: -862 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 145468.dasm (3.33 % of base)
          22 : 6974.dasm (1.02 % of base)
          16 : 159122.dasm (0.85 % of base)
          12 : 120703.dasm (0.24 % of base)
           8 : 157061.dasm (0.55 % of base)
           6 : 171.dasm (0.54 % of base)
           6 : 67006.dasm (0.14 % of base)
           6 : 120771.dasm (0.13 % of base)
           6 : 116014.dasm (1.00 % of base)
           4 : 115657.dasm (0.42 % of base)
           4 : 157037.dasm (0.26 % of base)
           4 : 75360.dasm (0.35 % of base)
           4 : 158054.dasm (0.75 % of base)
           2 : 157853.dasm (0.13 % of base)
           2 : 162639.dasm (0.18 % of base)
           2 : 73006.dasm (0.38 % of base)
           2 : 158059.dasm (0.32 % of base)

Top file improvements (bytes):
         -74 : 124271.dasm (-11.31 % of base)
         -40 : 72857.dasm (-1.34 % of base)
         -40 : 72075.dasm (-2.82 % of base)
         -40 : 72815.dasm (-1.34 % of base)
         -36 : 34362.dasm (-1.27 % of base)
         -34 : 134539.dasm (-1.67 % of base)
         -32 : 197.dasm (-25.81 % of base)
         -32 : 133759.dasm (-5.95 % of base)
         -28 : 101204.dasm (-6.97 % of base)
         -28 : 142371.dasm (-6.97 % of base)
         -24 : 101048.dasm (-3.97 % of base)
         -24 : 75350.dasm (-6.78 % of base)
         -20 : 165120.dasm (-0.94 % of base)
         -20 : 72601.dasm (-10.31 % of base)
         -18 : 125168.dasm (-2.89 % of base)
         -18 : 170939.dasm (-13.43 % of base)
         -14 : 34232.dasm (-2.33 % of base)
         -12 : 136729.dasm (-0.65 % of base)
         -12 : 126413.dasm (-6.59 % of base)
         -12 : 71352.dasm (-3.14 % of base)

55 total files with Code Size differences (38 improved, 17 regressed), 5 unchanged.

Top method regressions (bytes):
          24 (3.33 % of base) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          22 (1.02 % of base) : 6974.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
          16 (0.85 % of base) : 159122.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
          12 (0.24 % of base) : 120703.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
           8 (0.55 % of base) : 157061.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
           6 (0.14 % of base) : 67006.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.13 % of base) : 120771.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           6 (0.54 % of base) : 171.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
           6 (1.00 % of base) : 116014.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           4 (0.35 % of base) : 75360.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           4 (0.26 % of base) : 157037.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
           4 (0.42 % of base) : 115657.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
           4 (0.75 % of base) : 158054.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           2 (0.38 % of base) : 73006.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           2 (0.18 % of base) : 162639.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
           2 (0.13 % of base) : 157853.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
           2 (0.32 % of base) : 158059.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method improvements (bytes):
         -74 (-11.31 % of base) : 124271.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -40 (-1.34 % of base) : 72857.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -40 (-1.34 % of base) : 72815.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -40 (-2.82 % of base) : 72075.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -36 (-1.27 % of base) : 34362.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -34 (-1.67 % of base) : 134539.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
         -32 (-5.95 % of base) : 133759.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -32 (-25.81 % of base) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -28 (-6.97 % of base) : 101204.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.97 % of base) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-6.78 % of base) : 75350.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -24 (-3.97 % of base) : 101048.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -20 (-10.31 % of base) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -20 (-0.94 % of base) : 165120.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
         -18 (-2.89 % of base) : 125168.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -18 (-13.43 % of base) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -14 (-2.33 % of base) : 34232.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -12 (-6.59 % of base) : 126413.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
         -12 (-0.65 % of base) : 136729.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[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
         -12 (-3.14 % of base) : 71352.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)

Top method regressions (percentages):
          24 (3.33 % of base) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          22 (1.02 % of base) : 6974.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
           6 (1.00 % of base) : 116014.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          16 (0.85 % of base) : 159122.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
           4 (0.75 % of base) : 158054.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.55 % of base) : 157061.dasm - System.ComponentModel.TypeDescriptor:PipelineMerge(int,System.Collections.ICollection,System.Collections.ICollection,System.Collections.IDictionary):System.Collections.ICollection (FullOpts)
           6 (0.54 % of base) : 171.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
           4 (0.42 % of base) : 115657.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
           2 (0.38 % of base) : 73006.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           4 (0.35 % of base) : 75360.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           2 (0.32 % of base) : 158059.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.26 % of base) : 157037.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
          12 (0.24 % of base) : 120703.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
           2 (0.18 % of base) : 162639.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
           6 (0.14 % of base) : 67006.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)
           2 (0.13 % of base) : 157853.dasm - System.Xml.Linq.ElementWriter+<WriteElementAsync>d__4:MoveNext():this (FullOpts)
           6 (0.13 % of base) : 120771.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -32 (-25.81 % of base) : 197.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -18 (-13.43 % of base) : 170939.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -74 (-11.31 % of base) : 124271.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -20 (-10.31 % of base) : 72601.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -28 (-6.97 % of base) : 101204.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.97 % of base) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-6.78 % of base) : 75350.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -12 (-6.59 % of base) : 126413.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          -6 (-6.00 % of base) : 158200.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
          -6 (-6.00 % of base) : 158201.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
         -32 (-5.95 % of base) : 133759.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          -4 (-5.56 % of base) : 158202.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -8 (-5.41 % of base) : 121379.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
          -4 (-4.76 % of base) : 157984.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
          -6 (-4.23 % of base) : 171305.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
         -10 (-4.07 % of base) : 124724.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          -8 (-4.00 % of base) : 167517.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
         -24 (-3.97 % of base) : 101048.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          -8 (-3.85 % of base) : 170167.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
          -4 (-3.57 % of base) : 113474.dasm - Newtonsoft.Json.Linq.JsonPath.PathFilter:GetNextScanValue(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken):Newtonsoft.Json.Linq.JToken (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: 49852844 (overridden on cmd)
Total bytes of diff: 49851700 (overridden on cmd)
Total bytes of delta: -1144 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          42 : 175535.dasm (1.20 % of base)
          42 : 263951.dasm (1.20 % of base)
          40 : 115882.dasm (2.64 % of base)
          20 : 100102.dasm (1.40 % of base)
          20 : 240421.dasm (2.45 % of base)
          14 : 249075.dasm (0.16 % of base)
          14 : 253836.dasm (0.69 % of base)
          12 : 181536.dasm (0.76 % of base)
          12 : 189280.dasm (1.72 % of base)
          12 : 100289.dasm (3.37 % of base)
           8 : 249077.dasm (0.10 % of base)
           8 : 249916.dasm (0.41 % of base)
           8 : 67819.dasm (0.66 % of base)
           8 : 233325.dasm (0.84 % of base)
           6 : 114515.dasm (0.47 % of base)
           4 : 121659.dasm (0.14 % of base)
           4 : 191476.dasm (0.11 % of base)
           4 : 86558.dasm (1.79 % of base)
           4 : 121660.dasm (0.38 % of base)
           4 : 253967.dasm (0.18 % of base)

Top file improvements (bytes):
         -70 : 195478.dasm (-6.97 % of base)
         -42 : 89200.dasm (-1.45 % of base)
         -42 : 89261.dasm (-1.45 % of base)
         -32 : 646.dasm (-26.67 % of base)
         -28 : 146551.dasm (-6.64 % of base)
         -28 : 179413.dasm (-6.64 % of base)
         -28 : 218077.dasm (-1.24 % of base)
         -28 : 250253.dasm (-1.84 % of base)
         -26 : 216977.dasm (-2.88 % of base)
         -26 : 682.dasm (-1.50 % of base)
         -26 : 48791.dasm (-1.62 % of base)
         -24 : 89432.dasm (-1.63 % of base)
         -22 : 185685.dasm (-3.21 % of base)
         -22 : 185692.dasm (-3.56 % of base)
         -22 : 99420.dasm (-5.21 % of base)
         -20 : 89712.dasm (-11.76 % of base)
         -20 : 111327.dasm (-20.83 % of base)
         -18 : 179742.dasm (-13.85 % of base)
         -16 : 236804.dasm (-10.39 % of base)
         -16 : 67812.dasm (-3.01 % of base)

67 total files with Code Size differences (40 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          42 (1.20 % of base) : 175535.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
          42 (1.20 % of base) : 263951.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
          40 (2.64 % of base) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          20 (2.45 % of base) : 240421.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          20 (1.40 % of base) : 100102.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          14 (0.69 % of base) : 253836.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          14 (0.16 % of base) : 249075.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          12 (0.76 % of base) : 181536.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
          12 (1.72 % of base) : 189280.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
          12 (3.37 % of base) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
           8 (0.66 % of base) : 67819.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           8 (0.41 % of base) : 249916.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeBinary(System.String,System.String):ubyte (FullOpts)
           8 (0.10 % of base) : 249077.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[ubyte]:MoveNext():this (FullOpts)
           8 (0.84 % of base) : 233325.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           6 (0.47 % of base) : 114515.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodBodyBinder:CreateFunctionValueLocal(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol:this (FullOpts)
           4 (0.45 % of base) : 113584.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
           4 (0.14 % of base) : 121659.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetCrefOrNameAttributeReferenceSymbols(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
           4 (0.38 % of base) : 121660.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
           4 (0.18 % of base) : 253967.dasm - Microsoft.CSharp.CSharpCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty):this (FullOpts)
           4 (0.11 % of base) : 191476.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)

Top method improvements (bytes):
         -70 (-6.97 % of base) : 195478.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -42 (-1.45 % of base) : 89200.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -42 (-1.45 % of base) : 89261.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -32 (-26.67 % of base) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -28 (-1.24 % of base) : 218077.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
         -28 (-1.84 % of base) : 250253.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -28 (-6.64 % of base) : 146551.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 179413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-1.62 % of base) : 48791.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -26 (-2.88 % of base) : 216977.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -26 (-1.50 % of base) : 682.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
         -24 (-1.63 % of base) : 89432.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -22 (-3.21 % of base) : 185685.dasm - ILCompiler.LazyGenericsSupport+Graph`1[System.__Canon]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -22 (-3.56 % of base) : 185692.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -22 (-5.21 % of base) : 99420.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -20 (-11.76 % of base) : 89712.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -20 (-20.83 % of base) : 111327.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -18 (-13.85 % of base) : 179742.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -16 (-3.01 % of base) : 67812.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
         -16 (-10.39 % of base) : 236804.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
          12 (3.37 % of base) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
          40 (2.64 % of base) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           2 (2.63 % of base) : 103061.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
          20 (2.45 % of base) : 240421.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
           4 (1.79 % of base) : 86558.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
          12 (1.72 % of base) : 189280.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
          20 (1.40 % of base) : 100102.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          42 (1.20 % of base) : 175535.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
          42 (1.20 % of base) : 263951.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
           8 (0.84 % of base) : 233325.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          12 (0.76 % of base) : 181536.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetExtenders(System.Collections.ICollection,System.Object,System.Collections.IDictionary):System.ComponentModel.IExtenderProvider[] (FullOpts)
           2 (0.75 % of base) : 111330.dasm - System.Xml.Serialization.SchemaObjectWriter:WriteAttribute(System.String,System.String,System.String):this (FullOpts)
           2 (0.72 % of base) : 121396.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSymbolInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
          14 (0.69 % of base) : 253836.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
           8 (0.66 % of base) : 67819.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           2 (0.61 % of base) : 253839.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateTypeConstructor(System.CodeDom.CodeTypeConstructor):this (FullOpts)
           2 (0.51 % of base) : 245082.dasm - System.Net.Http.MultipartContent:WriteToStream(System.IO.Stream,System.String,System.Text.Encoding) (FullOpts)
           2 (0.50 % of base) : 113162.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           6 (0.47 % of base) : 114515.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodBodyBinder:CreateFunctionValueLocal(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol:this (FullOpts)
           4 (0.45 % of base) : 113584.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)

Top method improvements (percentages):
         -32 (-26.67 % of base) : 646.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -20 (-20.83 % of base) : 111327.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -18 (-13.85 % of base) : 179742.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -20 (-11.76 % of base) : 89712.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -16 (-10.39 % of base) : 236804.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
         -14 (-7.37 % of base) : 81043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -14 (-7.37 % of base) : 86663.dasm - System.Xml.XmlDataDocument:ReplaceInitialChildText(System.Xml.XmlNode,System.String):this (FullOpts)
         -70 (-6.97 % of base) : 195478.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -28 (-6.64 % of base) : 146551.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 179413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -12 (-6.52 % of base) : 115872.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
          -4 (-6.06 % of base) : 220739.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -8 (-5.97 % of base) : 143233.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
         -10 (-5.62 % of base) : 108139.dasm - System.Xml.Xsl.XsltOld.ProcessingInstructionAction:IsProcessingInstructionName(System.String):ubyte (FullOpts)
          -4 (-5.56 % of base) : 220715.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
         -22 (-5.21 % of base) : 99420.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -12 (-4.92 % of base) : 204914.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__processSlashes|43_0(System.Text.StringBuilder,System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          -4 (-4.65 % of base) : 220735.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
          -4 (-4.65 % of base) : 220736.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
          -4 (-4.55 % of base) : 166507.dasm - Newtonsoft.Json.Linq.JsonPath.PathFilter:GetNextScanValue(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken):Newtonsoft.Json.Linq.JToken (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: 243854234 (overridden on cmd)
Total bytes of diff: 243847462 (overridden on cmd)
Total bytes of delta: -6772 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          60 : 179379.dasm (3.19 % of base)
          46 : 153770.dasm (2.31 % of base)
          46 : 665948.dasm (1.20 % of base)
          46 : 140264.dasm (2.31 % of base)
          42 : 122756.dasm (1.48 % of base)
          36 : 176800.dasm (3.65 % of base)
          32 : 246693.dasm (0.95 % of base)
          28 : 676151.dasm (1.59 % of base)
          26 : 676091.dasm (0.62 % of base)
          24 : 67904.dasm (0.52 % of base)
          24 : 249102.dasm (1.66 % of base)
          24 : 673833.dasm (5.48 % of base)
          24 : 70476.dasm (0.52 % of base)
          22 : 359711.dasm (0.95 % of base)
          20 : 218452.dasm (0.35 % of base)
          18 : 55682.dasm (1.05 % of base)
          18 : 306474.dasm (0.77 % of base)
          16 : 443671.dasm (0.37 % of base)
          16 : 676093.dasm (3.40 % of base)
          14 : 188060.dasm (1.35 % of base)

Top file improvements (bytes):
        -202 : 188144.dasm (-0.89 % of base)
         -80 : 361615.dasm (-4.03 % of base)
         -72 : 470955.dasm (-1.47 % of base)
         -58 : 305080.dasm (-1.50 % of base)
         -42 : 253364.dasm (-1.45 % of base)
         -42 : 253868.dasm (-1.45 % of base)
         -40 : 468968.dasm (-0.71 % of base)
         -32 : 333435.dasm (-26.67 % of base)
         -32 : 538432.dasm (-1.94 % of base)
         -32 : 647969.dasm (-0.50 % of base)
         -32 : 544647.dasm (-1.94 % of base)
         -32 : 548986.dasm (-1.94 % of base)
         -32 : 650614.dasm (-1.15 % of base)
         -30 : 312832.dasm (-1.54 % of base)
         -30 : 218892.dasm (-0.99 % of base)
         -30 : 381371.dasm (-8.47 % of base)
         -30 : 651084.dasm (-1.25 % of base)
         -28 : 362511.dasm (-2.99 % of base)
         -28 : 383767.dasm (-6.25 % of base)
         -28 : 490888.dasm (-5.09 % of base)

85 total files with Code Size differences (46 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
          60 (3.19 % of base) : 179379.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
          46 (2.31 % of base) : 153770.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)
          46 (2.31 % of base) : 140264.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)
          46 (1.20 % of base) : 665948.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (Tier0-FullOpts)
          42 (1.48 % of base) : 122756.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateFactory(System.Type,System.Type[]):Microsoft.Extensions.DependencyInjection.ObjectFactory (Tier1)
          36 (3.65 % of base) : 176800.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__determineEmitReceiverStrategy|152_0(Microsoft.CodeAnalysis.CSharp.BoundCall,byref,byref):int:this (Tier1)
          32 (0.95 % of base) : 246693.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (Tier0-FullOpts)
          28 (1.59 % of base) : 676151.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
          26 (0.62 % of base) : 676091.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Tier1)
          24 (5.48 % of base) : 673833.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
          24 (0.52 % of base) : 67904.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (0.52 % of base) : 70476.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          24 (1.66 % of base) : 249102.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
          22 (0.95 % of base) : 359711.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
          20 (0.35 % of base) : 218452.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddStringStringTests:Add():this (Tier0-FullOpts)
          18 (1.05 % of base) : 55682.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ValidateAttributeSemantics(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
          18 (0.77 % of base) : 306474.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier1)
          16 (3.40 % of base) : 676093.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
          16 (0.37 % of base) : 443671.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          14 (1.35 % of base) : 188060.dasm - Microsoft.VisualBasic.Tests.InteractionTests:Environ_Name():this (Tier0-FullOpts)

Top method improvements (bytes):
        -202 (-0.89 % of base) : 188144.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -80 (-4.03 % of base) : 361615.dasm - System.SpanTests.ReadOnlySpanTests:TestMatchMany_Char() (Tier0-FullOpts)
         -72 (-1.47 % of base) : 470955.dasm - System.Reflection.Metadata.Decoding.Tests.CustomAttributeDecoderTests:TestCustomAttributeDecoderUsingReflection():this (Tier0-FullOpts)
         -58 (-1.50 % of base) : 305080.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
         -42 (-1.45 % of base) : 253364.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
         -42 (-1.45 % of base) : 253868.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
         -40 (-0.71 % of base) : 468968.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (Tier0-FullOpts)
         -32 (-1.94 % of base) : 538432.dasm - System.Numerics.BigIntegerCalculator+FastReducer:Reduce(System.Span`1[uint]):int:this (Tier1)
         -32 (-1.94 % of base) : 544647.dasm - System.Numerics.BigIntegerCalculator+FastReducer:Reduce(System.Span`1[uint]):int:this (Tier1)
         -32 (-1.94 % of base) : 548986.dasm - System.Numerics.BigIntegerCalculator+FastReducer:Reduce(System.Span`1[uint]):int:this (Tier1)
         -32 (-26.67 % of base) : 333435.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
         -32 (-1.15 % of base) : 650614.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:ConsumeLotsOfComments(System.String,ubyte,System.String) (Tier0-FullOpts)
         -32 (-0.50 % of base) : 647969.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (Tier0-FullOpts)
         -30 (-0.99 % of base) : 218892.dasm - System.Collections.Specialized.Tests.NameValueCollectionAddNameValueCollectionTests:Add(int,int):this (Tier0-FullOpts)
         -30 (-1.54 % of base) : 312832.dasm - System.IO.Compression.Tests.zip_UpdateTests:Update_Comment_EntryName_Encoding_Internal(System.String,System.String,System.String,System.Text.Encoding,System.String,System.String) (Tier0-FullOpts)
         -30 (-1.25 % of base) : 651084.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:AllowSingleSegment(System.String,System.String,int) (Tier0-FullOpts)
         -30 (-8.47 % of base) : 381371.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (Tier1)
         -28 (-1.84 % of base) : 188794.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (Tier0-FullOpts)
         -28 (-6.25 % of base) : 383767.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier0-FullOpts)
         -28 (-6.25 % of base) : 374403.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier0-FullOpts)

Top method regressions (percentages):
          24 (5.48 % of base) : 673833.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
           8 (5.06 % of base) : 671986.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (5.06 % of base) : 55692.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (5.06 % of base) : 88126.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (5.00 % of base) : 55689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (5.00 % of base) : 674939.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (5.00 % of base) : 88123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (4.88 % of base) : 53177.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (4.88 % of base) : 87947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (4.88 % of base) : 665264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (4.30 % of base) : 675093.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
          36 (3.65 % of base) : 176800.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__determineEmitReceiverStrategy|152_0(Microsoft.CodeAnalysis.CSharp.BoundCall,byref,byref):int:this (Tier1)
           8 (3.45 % of base) : 88129.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          16 (3.40 % of base) : 676093.dasm - Microsoft.CodeAnalysis.Compilation:get_IsRealSigned():ubyte:this (Tier1)
          12 (3.37 % of base) : 78793.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier0-FullOpts)
          12 (3.37 % of base) : 258864.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (Tier0-FullOpts)
           8 (3.33 % of base) : 55771.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
           8 (3.33 % of base) : 665267.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          60 (3.19 % of base) : 179379.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
           4 (2.38 % of base) : 174053.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)

Top method improvements (percentages):
         -32 (-26.67 % of base) : 333435.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
         -18 (-13.85 % of base) : 111087.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -20 (-11.76 % of base) : 257367.dasm - System.Data.ExpressionParser:ScanDate():this (Tier0-FullOpts)
          -6 (-10.71 % of base) : 117122.dasm - Stashbox.Utils.Data.Immutable.ImmutableTree`1[System.__Canon]:GetOrDefault(int):System.__Canon:this (Tier0-FullOpts)
         -20 (-9.17 % of base) : 514365.dasm - System.Numerics.BigInteger:CompareTo(System.Numerics.BigInteger):int:this (Tier1)
         -30 (-8.47 % of base) : 381371.dasm - System.Threading.Tasks.AwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this (Tier1)
          -4 (-7.69 % of base) : 116611.dasm - Stashbox.Utils.Data.Tree`1[System.__Canon]:GetOrDefault(int):System.__Canon:this (Tier0-FullOpts)
         -14 (-7.37 % of base) : 144628.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier0-FullOpts)
         -28 (-6.64 % of base) : 384895.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier0-FullOpts)
         -10 (-6.33 % of base) : 480288.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
         -12 (-6.32 % of base) : 18747.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier0-FullOpts)
         -12 (-6.32 % of base) : 159293.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier0-FullOpts)
         -28 (-6.25 % of base) : 383767.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier0-FullOpts)
         -28 (-6.25 % of base) : 374403.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (Tier0-FullOpts)
          -4 (-6.06 % of base) : 2204.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier0-FullOpts)
          -4 (-5.56 % of base) : 430748.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (Tier0-FullOpts)
         -22 (-5.21 % of base) : 433465.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -28 (-5.09 % of base) : 490888.dasm - System.Numerics.BigInteger:GreatestCommonDivisor(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
          -8 (-5.06 % of base) : 116563.dasm - Stashbox.Utils.Data.Immutable.ImmutableTree`2[System.__Canon,System.__Canon]:GetOrDefaultByRef(System.__Canon):System.__Canon:this (Tier0-FullOpts)
         -14 (-4.90 % of base) : 487642.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (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: 94520720 (overridden on cmd)
Total bytes of diff: 94518168 (overridden on cmd)
Total bytes of delta: -2552 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          46 : 43492.dasm (2.31 % of base)
          46 : 49186.dasm (2.31 % of base)
          44 : 23733.dasm (3.46 % of base)
          32 : 88706.dasm (0.95 % of base)
          20 : 13057.dasm (0.47 % of base)
          20 : 4136.dasm (2.87 % of base)
          20 : 89379.dasm (1.40 % of base)
          14 : 23737.dasm (1.53 % of base)
          14 : 302621.dasm (0.53 % of base)
          14 : 63808.dasm (0.71 % of base)
          14 : 5207.dasm (0.37 % of base)
          14 : 149680.dasm (0.16 % of base)
          12 : 94864.dasm (3.37 % of base)
          12 : 20855.dasm (3.37 % of base)
          12 : 6369.dasm (0.91 % of base)
          12 : 159301.dasm (1.41 % of base)
          12 : 196669.dasm (1.72 % of base)
          12 : 18075.dasm (0.11 % of base)
          10 : 281712.dasm (1.25 % of base)
          10 : 281690.dasm (1.10 % of base)

Top file improvements (bytes):
         -42 : 91053.dasm (-1.45 % of base)
         -42 : 90644.dasm (-1.45 % of base)
         -32 : 94842.dasm (-26.67 % of base)
         -28 : 59999.dasm (-1.84 % of base)
         -28 : 149450.dasm (-6.64 % of base)
         -28 : 152437.dasm (-6.64 % of base)
         -28 : 152603.dasm (-6.64 % of base)
         -26 : 31555.dasm (-2.98 % of base)
         -26 : 183355.dasm (-0.44 % of base)
         -26 : 230812.dasm (-1.50 % of base)
         -24 : 264884.dasm (-0.41 % of base)
         -24 : 90960.dasm (-1.63 % of base)
         -22 : 265714.dasm (-0.86 % of base)
         -22 : 121132.dasm (-0.63 % of base)
         -22 : 166551.dasm (-5.21 % of base)
         -22 : 265468.dasm (-0.67 % of base)
         -20 : 92166.dasm (-11.76 % of base)
         -20 : 51955.dasm (-1.75 % of base)
         -20 : 45040.dasm (-1.70 % of base)
         -20 : 6622.dasm (-1.29 % of base)

66 total files with Code Size differences (39 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          46 (2.31 % of base) : 43492.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          46 (2.31 % of base) : 49186.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)
          44 (3.46 % of base) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          32 (0.95 % of base) : 88706.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
          20 (0.47 % of base) : 13057.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)
          20 (2.87 % of base) : 4136.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          20 (1.40 % of base) : 89379.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          14 (0.37 % of base) : 5207.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)
          14 (1.53 % of base) : 23737.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          14 (0.71 % of base) : 63808.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          14 (0.16 % of base) : 149680.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          14 (0.53 % of base) : 302621.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
          12 (0.91 % of base) : 6369.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
          12 (3.37 % of base) : 20855.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          12 (0.11 % of base) : 18075.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (FullOpts)
          12 (1.41 % of base) : 159301.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[short]:<CopySign_AllLengths>b__25_0(int):this (FullOpts)
          12 (1.72 % of base) : 196669.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
          12 (3.37 % of base) : 94864.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
          10 (1.10 % of base) : 281690.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4229_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          10 (1.25 % of base) : 281712.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4230_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
         -42 (-1.45 % of base) : 91053.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -42 (-1.45 % of base) : 90644.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -32 (-26.67 % of base) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -28 (-1.84 % of base) : 59999.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -28 (-6.64 % of base) : 149450.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 152603.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -26 (-2.98 % of base) : 31555.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -26 (-0.44 % of base) : 183355.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
         -26 (-1.50 % of base) : 230812.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
         -24 (-1.63 % of base) : 90960.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -24 (-0.41 % of base) : 264884.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (FullOpts)
         -22 (-0.63 % of base) : 121132.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (FullOpts)
         -22 (-0.86 % of base) : 265714.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:ConsumeLotsOfComments(System.String,ubyte,System.String) (FullOpts)
         -22 (-0.67 % of base) : 265468.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
         -22 (-5.21 % of base) : 166551.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -20 (-1.75 % of base) : 51955.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -20 (-1.70 % of base) : 45040.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -20 (-1.29 % of base) : 6622.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -20 (-11.76 % of base) : 92166.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)

Top method regressions (percentages):
          44 (3.46 % of base) : 23733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          12 (3.37 % of base) : 20855.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (FullOpts)
          12 (3.37 % of base) : 94864.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
          20 (2.87 % of base) : 4136.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
           2 (2.63 % of base) : 168127.dasm - System.Xml.DocumentXPathNavigator:get_ValueDocument():System.String:this (FullOpts)
          46 (2.31 % of base) : 43492.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
          46 (2.31 % of base) : 49186.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)
           8 (1.76 % of base) : 19896.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:MethodDeclaration(System.String,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxNode],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.Editing.DeclarationModifiers,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxNode]):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
          12 (1.72 % of base) : 196669.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
           8 (1.57 % of base) : 187497.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
          14 (1.53 % of base) : 23737.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          12 (1.41 % of base) : 159301.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[short]:<CopySign_AllLengths>b__25_0(int):this (FullOpts)
          20 (1.40 % of base) : 89379.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          10 (1.25 % of base) : 281712.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4230_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           2 (1.11 % of base) : 175707.dasm - OLEDB.Test.ModuleCore.CVariation:Execute():int:this (FullOpts)
          10 (1.10 % of base) : 281690.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4229_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (1.06 % of base) : 35645.dasm - LamarCodeGeneration.Util.ImHashMap:UpdateEntry[System.__Canon,System.__Canon](LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon],LamarCodeGeneration.Util.ImHashMapEntry`2[System.__Canon,System.__Canon]):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon] (FullOpts)
          32 (0.95 % of base) : 88706.dasm - System.Configuration.ConfigurationElement:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this (FullOpts)
          12 (0.91 % of base) : 6369.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
           8 (0.84 % of base) : 1221.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)

Top method improvements (percentages):
         -32 (-26.67 % of base) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -18 (-13.85 % of base) : 31632.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -20 (-11.76 % of base) : 92166.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -14 (-7.37 % of base) : 45297.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -28 (-6.64 % of base) : 149450.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 152603.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -12 (-6.32 % of base) : 9876.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-6.32 % of base) : 51131.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
          -4 (-6.06 % of base) : 798.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -4 (-5.56 % of base) : 165404.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
         -22 (-5.21 % of base) : 166551.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -16 (-5.00 % of base) : 36013.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
          -4 (-4.65 % of base) : 85531.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
          -4 (-4.65 % of base) : 3562.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
         -10 (-4.59 % of base) : 92857.dasm - System.Xml.Serialization.CodeGenerator:StoreMember(System.Reflection.MemberInfo):this (FullOpts)
          -6 (-4.23 % of base) : 143421.dasm - System.Globalization.FormatProvider+Number:RoundNumber(byref,int) (FullOpts)
          -8 (-4.08 % of base) : 34047.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
          -4 (-4.00 % of base) : 93434.dasm - System.Xml.XmlElementList:NextElemInPreOrder(System.Xml.XmlNode):System.Xml.XmlNode:this (FullOpts)
          -4 (-3.92 % of base) : 1948.dasm - System.Xml.Linq.XObject:GetSaveOptionsFromAnnotations():int:this (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: 13606688 (overridden on cmd)
Total bytes of diff: 13606574 (overridden on cmd)
Total bytes of delta: -114 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 27166.dasm (0.48 % of base)
          20 : 2743.dasm (2.45 % of base)
          16 : 22082.dasm (1.49 % of base)
          14 : 35382.dasm (1.62 % of base)
          12 : 1213.dasm (0.28 % of base)
          12 : 20614.dasm (0.47 % of base)
           8 : 22061.dasm (0.61 % of base)
           4 : 22020.dasm (0.77 % of base)
           2 : 5798.dasm (0.46 % of base)
           2 : 11219.dasm (0.15 % of base)

Top file improvements (bytes):
         -28 : 23059.dasm (-1.24 % of base)
         -26 : 22279.dasm (-2.91 % of base)
         -24 : 23903.dasm (-1.55 % of base)
         -14 : 24656.dasm (-7.37 % of base)
         -12 : 24847.dasm (-0.47 % of base)
         -12 : 935.dasm (-4.80 % of base)
         -10 : 20697.dasm (-1.31 % of base)
          -8 : 21330.dasm (-0.93 % of base)
          -8 : 25791.dasm (-0.38 % of base)
          -6 : 4135.dasm (-4.05 % of base)
          -6 : 23120.dasm (-0.65 % of base)
          -6 : 23348.dasm (-2.97 % of base)
          -6 : 35595.dasm (-0.48 % of base)
          -6 : 23116.dasm (-0.32 % of base)
          -6 : 29486.dasm (-1.74 % of base)
          -4 : 18973.dasm (-2.74 % of base)
          -4 : 29840.dasm (-2.22 % of base)
          -4 : 32240.dasm (-0.95 % of base)
          -4 : 12071.dasm (-1.55 % of base)
          -4 : 9886.dasm (-1.11 % of base)

37 total files with Code Size differences (27 improved, 10 regressed), 4 unchanged.

Top method regressions (bytes):
          20 (0.48 % of base) : 27166.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)
          20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          16 (1.49 % of base) : 22082.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          14 (1.62 % of base) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          12 (0.47 % of base) : 20614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
          12 (0.28 % of base) : 1213.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
           8 (0.61 % of base) : 22061.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           4 (0.77 % of base) : 22020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           2 (0.15 % of base) : 11219.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
           2 (0.46 % of base) : 5798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (bytes):
         -28 (-1.24 % of base) : 23059.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)
         -26 (-2.91 % of base) : 22279.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -24 (-1.55 % of base) : 23903.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -14 (-7.37 % of base) : 24656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-0.47 % of base) : 24847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-4.80 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
         -10 (-1.31 % of base) : 20697.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          -8 (-0.38 % of base) : 25791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-0.93 % of base) : 21330.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)
          -6 (-0.32 % of base) : 23116.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
          -6 (-0.65 % of base) : 23120.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -6 (-1.74 % of base) : 29486.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
          -6 (-4.05 % of base) : 4135.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -6 (-0.48 % of base) : 35595.dasm - System.Management.Automation.PowerShell:CoreInvoke[System.__Canon,System.__Canon](System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSDataCollection`1[System.__Canon],System.Management.Automation.PSInvocationSettings):this (FullOpts)
          -6 (-2.97 % of base) : 23348.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
          -4 (-0.52 % of base) : 27705.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IsSameLocalOrField(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (FullOpts)
          -4 (-0.95 % of base) : 32240.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -4 (-0.91 % of base) : 29799.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
          -4 (-0.69 % of base) : 28393.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
          -4 (-0.42 % of base) : 24429.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

Top method regressions (percentages):
          20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          14 (1.62 % of base) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          16 (1.49 % of base) : 22082.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           4 (0.77 % of base) : 22020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           8 (0.61 % of base) : 22061.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          20 (0.48 % of base) : 27166.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)
          12 (0.47 % of base) : 20614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
           2 (0.46 % of base) : 5798.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          12 (0.28 % of base) : 1213.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
           2 (0.15 % of base) : 11219.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)

Top method improvements (percentages):
         -14 (-7.37 % of base) : 24656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-4.80 % of base) : 935.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -6 (-4.05 % of base) : 4135.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -6 (-2.97 % of base) : 23348.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -26 (-2.91 % of base) : 22279.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          -4 (-2.74 % of base) : 18973.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -4 (-2.41 % of base) : 947.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
          -4 (-2.22 % of base) : 29840.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsFixedStatementExpression(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
          -6 (-1.74 % of base) : 29486.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
         -24 (-1.55 % of base) : 23903.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
          -4 (-1.55 % of base) : 12071.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -10 (-1.31 % of base) : 20697.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -28 (-1.24 % of base) : 23059.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)
          -4 (-1.11 % of base) : 9886.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
          -4 (-0.95 % of base) : 32240.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -8 (-0.93 % of base) : 21330.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          -4 (-0.91 % of base) : 29799.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
          -4 (-0.75 % of base) : 30480.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          -4 (-0.69 % of base) : 28393.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
          -6 (-0.65 % of base) : 23120.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

37 total methods with Code Size differences (27 improved, 10 regressed).



windows x86

Diffs are based on 2,293,439 contexts (839,658 MinOpts, 1,453,781 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 57 (0.00%)

Overall (-5,227 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,121,152 -349
benchmarks.run_pgo.windows.x86.checked.mch 44,984,638 +735
benchmarks.run_tiered.windows.x86.checked.mch 9,468,675 -349
coreclr_tests.run.windows.x86.checked.mch 309,389,409 -268
libraries.crossgen2.windows.x86.checked.mch 31,715,129 -1,087
libraries.pmi.windows.x86.checked.mch 49,281,531 -1,375
libraries_tests.run.windows.x86.Release.mch 186,643,263 -2,175
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,812,160 -579
realworld.run.windows.x86.checked.mch 11,350,878 +220

FullOpts (-5,227 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,871 -349
benchmarks.run_pgo.windows.x86.checked.mch 38,396,007 +735
benchmarks.run_tiered.windows.x86.checked.mch 5,198,854 -349
coreclr_tests.run.windows.x86.checked.mch 107,601,275 -268
libraries.crossgen2.windows.x86.checked.mch 31,714,069 -1,087
libraries.pmi.windows.x86.checked.mch 49,186,298 -1,375
libraries_tests.run.windows.x86.Release.mch 88,369,563 -2,175
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,132,096 -579
realworld.run.windows.x86.checked.mch 11,055,164 +220

Example diffs

benchmarks.run.windows.x86.checked.mch

-20 (-15.87%) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================

-22 (-10.58%) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================

-43 (-10.31%) : 20657.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):this (FullOpts)

@@ -14,7 +14,7 @@ ; V03 arg3 [V03,T14] ( 3, 3 ) byref -> [ebp-0x20] single-def ; V04 arg4 [V04,T17] ( 1, 1 ) byref -> [ebp+0x08] single-def ; V05 loc0 [V05,T06] ( 6, 12 ) int -> [ebp-0x10]
-; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
+; V06 loc1 [V06,T00] ( 17, 55 ) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> [ebp-0x14] ; V08 loc3 [V08,T05] ( 8, 12.50) int -> edx ;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -49,7 +49,7 @@ ;* V38 tmp26 [V38 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp27 [V39 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ; V40 tmp28 [V40,T12] ( 3, 7 ) int -> [ebp-0x18] spill-single-def "V02.[004..008)"
-; V41 cse0 [V41,T02] ( 7, 17.50) int -> eax "CSE - aggressive"
+; V41 cse0 [V41,T02] ( 6, 17 ) int -> eax "CSE - aggressive"
; V42 cse1 [V42,T09] ( 4, 9 ) byref -> esi "CSE - moderate" ; V43 cse2 [V43,T13] ( 3, 6 ) int -> edx "CSE - moderate" ; @@ -78,39 +78,39 @@ G_M19254_IG02: ; bbWeight=1, gcVars=00004000 {V03}, gcrefRegs=00000001 {e mov edx, dword ptr [eax+0x18] mov bword ptr [ebp-0x24], 0xD1FFAB1E cmp dword ptr [ebp+0x18], 0
- je G_M19254_IG07
+ je G_M19254_IG06
;; size=36 bbWeight=1 PerfScore 11.50 G_M19254_IG03: ; bbWeight=4, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] ; GC ptr vars +{V15 V26} cmp edi, esi
- jae G_M19254_IG07
+ jae SHORT G_M19254_IG06
cmp ebx, dword ptr [ebp+0x18]
- jae G_M19254_IG19
+ jae G_M19254_IG14
mov eax, bword ptr [ebp+0x14] ; byrRegs +[eax] movzx eax, word ptr [eax+2*ebx] ; byrRegs -[eax] cmp eax, 61
- je SHORT G_M19254_IG07
+ je SHORT G_M19254_IG06
inc ebx test byte ptr [eax+D1FFAB1EH], 1
- jne SHORT G_M19254_IG06 - ;; size=39 bbWeight=4 PerfScore 51.00 -G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M19254_IG05 + ;; size=35 bbWeight=4 PerfScore 51.00 +G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp eax, 123
- jge G_M19254_IG20
+ jge G_M19254_IG15
mov esi, bword ptr [ebp-0x24] ; byrRegs +[esi] movzx eax, byte ptr [esi+eax] cmp eax, 255
- je G_M19254_IG20
+ je G_M19254_IG15
shl ecx, 6 or ecx, eax mov eax, ecx add edx, 6 cmp edx, 8
- jl G_M19254_IG18
+ jl G_M19254_IG13
lea ecx, [edi+0x01] mov dword ptr [ebp-0x10], ecx mov esi, bword ptr [ebp+0x0C] @@ -123,57 +123,56 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, dword ptr [ebp-0x18] ; byrRegs -[esi] cmp edi, esi
- je G_M19254_IG17 - ;; size=82 bbWeight=2 PerfScore 36.50 -G_M19254_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x14]
- ;; size=3 bbWeight=1 PerfScore 1.00 -G_M19254_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M19254_IG11 + ;; size=81 bbWeight=2 PerfScore 38.50 +G_M19254_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, dword ptr [ebp+0x18] mov esi, dword ptr [ebp-0x18]
- jb G_M19254_IG03 - ;; size=12 bbWeight=4 PerfScore 16.00 -G_M19254_IG07: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jb SHORT G_M19254_IG03 + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M19254_IG06: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V15 V26} mov eax, dword ptr [ebp+0x18] cmp ebx, eax
- jae SHORT G_M19254_IG16
+ jae SHORT G_M19254_IG11
mov esi, bword ptr [ebp+0x14] ; byrRegs +[esi] cmp word ptr [esi+2*ebx], 61
- jne SHORT G_M19254_IG15
+ jne SHORT G_M19254_IG11
xor edx, edx ;; size=19 bbWeight=0.50 PerfScore 3.75
-G_M19254_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M19254_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ebx cmp ebx, eax
- jae SHORT G_M19254_IG09
+ jae SHORT G_M19254_IG11
cmp ebx, eax
- jae SHORT G_M19254_IG19 - cmp word ptr [esi+2*ebx], 61 - je SHORT G_M19254_IG08 - ;; size=16 bbWeight=4 PerfScore 27.00 -G_M19254_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp ebx, eax - mov dword ptr [ebp-0x14], ecx
jae SHORT G_M19254_IG14
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19254_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ cmp word ptr [esi+2*ebx], 61 + je SHORT G_M19254_IG07 + ;; size=16 bbWeight=4 PerfScore 27.00 +G_M19254_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + mov dword ptr [ebp-0x14], ecx + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
lea ecx, [ebx+0x01] cmp ebx, eax
- jae SHORT G_M19254_IG19
+ jae SHORT G_M19254_IG14
movzx ebx, word ptr [esi+2*ebx] test byte ptr [ebx+D1FFAB1EH], 1
- je SHORT G_M19254_IG21
+ je SHORT G_M19254_IG16
cmp ecx, eax
- jb SHORT G_M19254_IG13 - ;; size=24 bbWeight=4 PerfScore 36.00 -G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, ecx + jb SHORT G_M19254_IG09 + ;; size=26 bbWeight=4 PerfScore 37.00 +G_M19254_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi]
+ mov ecx, dword ptr [ebp-0x14] + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [ebp-0x1C] ; gcrRegs +[eax]
- mov esi, dword ptr [ebp-0x14] - mov dword ptr [eax+0x14], esi
+ mov dword ptr [eax+0x14], ecx
mov dword ptr [eax+0x18], edx mov eax, bword ptr [ebp+0x08] ; gcrRegs -[eax] @@ -181,8 +180,8 @@ G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [eax], edi mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx]
- mov dword ptr [edx], ecx - ;; size=22 bbWeight=1 PerfScore 8.00
+ mov dword ptr [edx], ebx + ;; size=19 bbWeight=1 PerfScore 7.00
G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -191,40 +190,17 @@ G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend pop ebp ret 20 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M19254_IG13: ; bbWeight=2, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; byrRegs -[eax edx] +[esi] - mov ebx, ecx - jmp SHORT G_M19254_IG10 - ;; size=4 bbWeight=2 PerfScore 4.50 -G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[esi] - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=0.25 PerfScore 0.56 -G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=1 PerfScore 2.25 -G_M19254_IG18: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M19254_IG13: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[eax edx]
; GC ptr vars +{V15 V26} mov ecx, eax
- jmp G_M19254_IG06 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M19254_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jmp SHORT G_M19254_IG05 + ;; size=4 bbWeight=1 PerfScore 2.25 +G_M19254_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V03 V15 V26} call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -249,7 +225,7 @@ G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_THROW ; gcrRegs -[ecx edi] ;; size=47 bbWeight=0 PerfScore 0.00
-G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -276,6 +252,6 @@ G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 417, prolog size 14, PerfScore 213.31, instruction count 138, allocated bytes for code 417 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 374, prolog size 14, PerfScore 208.25, instruction count 125, allocated bytes for code 374 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================

+19 (+0.38%) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 148 single block inlinees; 54 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 20, 11 ) ref -> [ebp-0x288] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T06] ( 20, 11 ) ref -> [ebp-0x28C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T00] ( 31, 16.50) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> ; V02 arg2 [V02,T01] ( 51, 16 ) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> ; V03 arg3 [V03,T195] ( 3, 1.50) ushort -> [ebp+0x10] single-def @@ -46,10 +46,10 @@ ; V35 tmp5 [V35,T89] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V36 tmp6 [V36,T08] ( 6, 6 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundInlineArrayAccess> ;* V37 tmp7 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V38 tmp8 [V38,T76] ( 3, 2.25) ref -> [ebp-0x28C] single-def "CASTCLASS eval op1"
+; V38 tmp8 [V38,T76] ( 3, 2.25) ref -> [ebp-0x290] single-def "CASTCLASS eval op1"
; V39 tmp9 [V39,T205] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V40 tmp10 [V40,T11] ( 7, 5.75) ref -> [ebp-0x290] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V41 tmp11 [V41,T32] ( 3, 3 ) ref -> [ebp-0x294] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V40 tmp10 [V40,T13] ( 6, 4.75) ref -> [ebp-0x294] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V41 tmp11 [V41,T32] ( 3, 3 ) ref -> [ebp-0x298] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V42 tmp12 [V42 ] ( 2, 2 ) struct (12) [ebp-0x44] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ;* V43 tmp13 [V43 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V44 tmp14 [V44,T90] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" @@ -57,7 +57,7 @@ ;* V46 tmp16 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundArrayAccess> ;* V47 tmp17 [V47 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V48 tmp18 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V49 tmp19 [V49,T239] ( 3, 0 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V49 tmp19 [V49,T240] ( 3, 0 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V50 tmp20 [V50,T143] ( 2, 2 ) int -> [ebp-0x48] spill-single-def "impAppendStmt" ; V51 tmp21 [V51,T144] ( 2, 2 ) struct (16) [ebp-0x58] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V52 tmp22 [V52,T91] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" @@ -65,7 +65,7 @@ ; V54 tmp24 [V54,T92] ( 3, 2 ) int -> edx "fgMakeTemp is creating a new local variable" ; V55 tmp25 [V55,T110] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup> ; V56 tmp26 [V56,T145] ( 2, 2 ) int -> [ebp-0x5C] spill-single-def "impAppendStmt"
-; V57 tmp27 [V57,T15] ( 4, 4 ) ref -> [ebp-0x298] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V57 tmp27 [V57,T15] ( 4, 4 ) ref -> [ebp-0x29C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V58 tmp28 [V58,T146] ( 2, 2 ) struct (16) [ebp-0x6C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V59 tmp29 [V59,T111] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V60 tmp30 [V60,T33] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> @@ -75,7 +75,7 @@ ; V64 tmp34 [V64,T112] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <<unknown class>> ; V65 tmp35 [V65,T95] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V66 tmp36 [V66,T113] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundRangeVariable>
-; V67 tmp37 [V67,T35] ( 3, 3 ) ref -> [ebp-0x29C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V67 tmp37 [V67,T35] ( 3, 3 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V68 tmp38 [V68,T147] ( 2, 2 ) struct (16) [ebp-0x7C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V69 tmp39 [V69,T114] ( 2, 2 ) ref -> eax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V70 tmp40 [V70,T148] ( 2, 2 ) struct (16) [ebp-0x8C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> @@ -101,7 +101,7 @@ ; V90 tmp60 [V90,T119] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundArrayAccess> ;* V91 tmp61 [V91 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ; V92 tmp62 [V92,T102] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V93 tmp63 [V93,T219] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation>
+;* V93 tmp63 [V93,T220] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation>
; V94 tmp64 [V94,T103] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V95 tmp65 [V95,T120] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess> ; V96 tmp66 [V96,T121] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1" @@ -110,26 +110,26 @@ ; V99 tmp69 [V99,T104] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V100 tmp70 [V100,T122] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundUnconvertedAddressOfOperator> ; V101 tmp71 [V101,T152] ( 2, 2 ) int -> [ebp-0xC0] spill-single-def "impAppendStmt"
-; V102 tmp72 [V102,T18] ( 4, 4 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V102 tmp72 [V102,T18] ( 4, 4 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V103 tmp73 [V103,T153] ( 2, 2 ) struct (16) [ebp-0xD0] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V104 tmp74 [V104,T123] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V105 tmp75 [V105,T36] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V106 tmp76 [V106,T105] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V107 tmp77 [V107,T124] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundNamespaceExpression>
-; V108 tmp78 [V108,T12] ( 5, 5 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V108 tmp78 [V108,T11] ( 5, 5 ) ref -> [ebp-0x2A8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V109 tmp79 [V109 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V110 tmp80 [V110,T125] ( 2, 2 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol> ; V111 tmp81 [V111,T37] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V112 tmp82 [V112,T38] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V113 tmp83 [V113,T106] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V114 tmp84 [V114,T126] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V115 tmp85 [V115,T13] ( 5, 5 ) ref -> [ebp-0x2A8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V115 tmp85 [V115,T12] ( 5, 5 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V116 tmp86 [V116 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V117 tmp87 [V117,T127] ( 2, 2 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V118 tmp88 [V118,T39] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V119 tmp89 [V119,T40] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V120 tmp90 [V120,T107] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V121 tmp91 [V121,T220] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
+;* V121 tmp91 [V121,T221] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
; V122 tmp92 [V122,T108] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V123 tmp93 [V123,T128] ( 2, 2 ) ref -> edx class-hnd single-def "spilling QMark2" <<unknown class>> ;* V124 tmp94 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression> @@ -146,7 +146,7 @@ ; V135 tmp105 [V135 ] ( 7, 3.50) struct (16) [ebp-0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V136 tmp106 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V137 tmp107 [V137 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V138 tmp108 [V138,T207] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V138 tmp108 [V138,T208] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V139 tmp109 [V139 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V140 tmp110 [V140 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V141 tmp111 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -170,7 +170,7 @@ ; V159 tmp129 [V159 ] ( 7, 3.50) struct (16) [ebp-0xF8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V160 tmp130 [V160 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V161 tmp131 [V161 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V162 tmp132 [V162,T208] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V162 tmp132 [V162,T209] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V163 tmp133 [V163 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V164 tmp134 [V164 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V165 tmp135 [V165 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -184,7 +184,7 @@ ; V173 tmp143 [V173,T64] ( 5, 2.50) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V174 tmp144 [V174,T22] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V175 tmp145 [V175 ] ( 0, 0 ) ref -> zero-ref single-def
-; V176 tmp146 [V176,T41] ( 3, 3 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V176 tmp146 [V176,T41] ( 3, 3 ) ref -> [ebp-0x2B0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V177 tmp147 [V177,T09] ( 6, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ; V178 tmp148 [V178,T42] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag> ;* V179 tmp149 [V179 ] ( 0, 0 ) ref -> zero-ref single-def @@ -199,7 +199,7 @@ ; V188 tmp158 [V188 ] ( 7, 3.50) struct (16) [ebp-0x110] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V189 tmp159 [V189 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V190 tmp160 [V190 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V191 tmp161 [V191,T209] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V191 tmp161 [V191,T210] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V192 tmp162 [V192 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V193 tmp163 [V193 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V194 tmp164 [V194 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -213,7 +213,7 @@ ; V202 tmp172 [V202,T65] ( 5, 2.50) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V203 tmp173 [V203,T23] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V204 tmp174 [V204 ] ( 0, 0 ) ref -> zero-ref single-def
-; V205 tmp175 [V205,T44] ( 3, 3 ) ref -> [ebp-0x2B0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V205 tmp175 [V205,T44] ( 3, 3 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V206 tmp176 [V206,T10] ( 6, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ; V207 tmp177 [V207,T45] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag> ;* V208 tmp178 [V208 ] ( 0, 0 ) ref -> zero-ref single-def @@ -224,7 +224,7 @@ ; V213 tmp183 [V213 ] ( 4, 2 ) struct (16) [ebp-0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V214 tmp184 [V214,T47] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V215 tmp185 [V215 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V216 tmp186 [V216,T210] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V216 tmp186 [V216,T211] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V217 tmp187 [V217,T180] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V218 tmp188 [V218 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V219 tmp189 [V219 ] ( 2, 2 ) struct ( 8) [ebp-0x140] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -239,7 +239,7 @@ ; V228 tmp198 [V228 ] ( 4, 2 ) struct (16) [ebp-0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V229 tmp199 [V229,T48] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V230 tmp200 [V230 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V231 tmp201 [V231,T211] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V231 tmp201 [V231,T212] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V232 tmp202 [V232,T181] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V233 tmp203 [V233 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V234 tmp204 [V234 ] ( 2, 2 ) struct ( 8) [ebp-0x168] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -253,7 +253,7 @@ ; V242 tmp212 [V242 ] ( 4, 2 ) struct (16) [ebp-0x188] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V243 tmp213 [V243,T49] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V244 tmp214 [V244 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V245 tmp215 [V245,T212] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V245 tmp215 [V245,T213] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V246 tmp216 [V246,T182] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V247 tmp217 [V247 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V248 tmp218 [V248 ] ( 2, 2 ) struct ( 8) [ebp-0x190] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -266,7 +266,7 @@ ; V255 tmp225 [V255 ] ( 4, 2 ) struct (16) [ebp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V256 tmp226 [V256,T50] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V257 tmp227 [V257 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V258 tmp228 [V258,T213] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V258 tmp228 [V258,T214] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V259 tmp229 [V259,T183] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V260 tmp230 [V260 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V261 tmp231 [V261 ] ( 2, 2 ) struct ( 8) [ebp-0x1B8] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -279,7 +279,7 @@ ; V268 tmp238 [V268 ] ( 4, 2 ) struct (16) [ebp-0x1D8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V269 tmp239 [V269,T51] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V270 tmp240 [V270 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V271 tmp241 [V271,T214] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V271 tmp241 [V271,T215] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V272 tmp242 [V272,T184] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V273 tmp243 [V273 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V274 tmp244 [V274 ] ( 2, 2 ) struct ( 8) [ebp-0x1E0] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -293,7 +293,7 @@ ; V282 tmp252 [V282 ] ( 4, 2 ) struct (16) [ebp-0x200] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V283 tmp253 [V283,T52] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V284 tmp254 [V284 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V285 tmp255 [V285,T215] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V285 tmp255 [V285,T216] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V286 tmp256 [V286,T185] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V287 tmp257 [V287 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V288 tmp258 [V288 ] ( 2, 2 ) struct ( 8) [ebp-0x208] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -306,7 +306,7 @@ ; V295 tmp265 [V295 ] ( 4, 2 ) struct (16) [ebp-0x228] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V296 tmp266 [V296,T53] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V297 tmp267 [V297 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V298 tmp268 [V298,T216] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V298 tmp268 [V298,T217] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V299 tmp269 [V299,T186] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V300 tmp270 [V300 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V301 tmp271 [V301 ] ( 2, 2 ) struct ( 8) [ebp-0x230] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -319,11 +319,11 @@ ; V308 tmp278 [V308 ] ( 3, 1.50) struct (16) [ebp-0x250] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V309 tmp279 [V309,T54] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V310 tmp280 [V310 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V311 tmp281 [V311,T217] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V311 tmp281 [V311,T218] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V312 tmp282 [V312 ] ( 2, 2 ) struct (16) [ebp-0x260] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ;* V313 tmp283 [V313 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Location> ;* V314 tmp284 [V314 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol>
-; V315 tmp285 [V315,T240] ( 2, 0 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V315 tmp285 [V315,T241] ( 2, 0 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V316 tmp286 [V316 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression> ;* V317 tmp287 [V317 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> ; V318 tmp288 [V318 ] ( 2, 2 ) struct (16) [ebp-0x270] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> @@ -332,7 +332,7 @@ ; V321 tmp291 [V321,T129] ( 2, 2 ) ref -> [ebp-0x44] do-not-enreg[H] hidden-struct-arg "field V42.DefaultType (fldOffset=0x0)" P-DEP ; V322 tmp292 [V322,T130] ( 2, 2 ) ref -> [ebp-0x40] do-not-enreg[H] hidden-struct-arg "field V42._extensions (fldOffset=0x4)" P-DEP ; V323 tmp293 [V323,T154] ( 2, 2 ) ubyte -> [ebp-0x3C] do-not-enreg[H] hidden-struct-arg "field V42.NullableAnnotation (fldOffset=0x8)" P-DEP
-; V324 tmp294 [V324,T206] ( 2, 1 ) ref -> eax "field V43.array (fldOffset=0x0)" P-INDEP
+; V324 tmp294 [V324,T207] ( 2, 1 ) ref -> eax "field V43.array (fldOffset=0x0)" P-INDEP
;* V325 tmp295 [V325 ] ( 0, 0 ) ref -> zero-ref "field V47.array (fldOffset=0x0)" P-INDEP ;* V326 tmp296 [V326 ] ( 0, 0 ) ref -> zero-ref "field V91.array (fldOffset=0x0)" P-INDEP ;* V327 tmp297 [V327 ] ( 0, 0 ) ref -> zero-ref single-def "field V130._nodeOrParent (fldOffset=0x0)" P-INDEP @@ -357,8 +357,8 @@ ;* V346 tmp316 [V346 ] ( 0, 0 ) ref -> zero-ref single-def "field V152._token (fldOffset=0x4)" P-INDEP ;* V347 tmp317 [V347 ] ( 0, 0 ) int -> zero-ref single-def "field V152._position (fldOffset=0x8)" P-INDEP ;* V348 tmp318 [V348 ] ( 0, 0 ) int -> zero-ref single-def "field V152._tokenIndex (fldOffset=0xc)" P-INDEP
-;* V349 tmp319 [V349,T227] ( 0, 0 ) int -> zero-ref single-def "field V154._id (fldOffset=0x0)" P-INDEP -;* V350 tmp320 [V350,T228] ( 0, 0 ) int -> zero-ref single-def "field V155._id (fldOffset=0x0)" P-INDEP
+;* V349 tmp319 [V349,T228] ( 0, 0 ) int -> zero-ref single-def "field V154._id (fldOffset=0x0)" P-INDEP +;* V350 tmp320 [V350,T229] ( 0, 0 ) int -> zero-ref single-def "field V155._id (fldOffset=0x0)" P-INDEP
; V351 tmp321 [V351,T188] ( 3, 1.50) ref -> esi single-def "field V156._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V352 tmp322 [V352 ] ( 0, 0 ) ref -> zero-ref single-def "field V156._token (fldOffset=0x4)" P-INDEP ;* V353 tmp323 [V353 ] ( 0, 0 ) int -> zero-ref single-def "field V156._position (fldOffset=0x8)" P-INDEP @@ -377,8 +377,8 @@ ;* V366 tmp336 [V366 ] ( 0, 0 ) ref -> zero-ref single-def "field V181._token (fldOffset=0x4)" P-INDEP ;* V367 tmp337 [V367 ] ( 0, 0 ) int -> zero-ref single-def "field V181._position (fldOffset=0x8)" P-INDEP ;* V368 tmp338 [V368 ] ( 0, 0 ) int -> zero-ref single-def "field V181._tokenIndex (fldOffset=0xc)" P-INDEP
-;* V369 tmp339 [V369,T229] ( 0, 0 ) int -> zero-ref single-def "field V183._id (fldOffset=0x0)" P-INDEP -;* V370 tmp340 [V370,T230] ( 0, 0 ) int -> zero-ref single-def "field V184._id (fldOffset=0x0)" P-INDEP
+;* V369 tmp339 [V369,T230] ( 0, 0 ) int -> zero-ref single-def "field V183._id (fldOffset=0x0)" P-INDEP +;* V370 tmp340 [V370,T231] ( 0, 0 ) int -> zero-ref single-def "field V184._id (fldOffset=0x0)" P-INDEP
; V371 tmp341 [V371,T189] ( 3, 1.50) ref -> esi single-def "field V185._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V372 tmp342 [V372 ] ( 0, 0 ) ref -> zero-ref single-def "field V185._token (fldOffset=0x4)" P-INDEP ;* V373 tmp343 [V373 ] ( 0, 0 ) int -> zero-ref single-def "field V185._position (fldOffset=0x8)" P-INDEP @@ -403,7 +403,7 @@ ; V392 tmp362 [V392 ] ( 3, 1.50) int -> [ebp-0x12C] do-not-enreg[X] addr-exposed "field V213.<Position>k__BackingField (fldOffset=0xc)" P-DEP ; V393 tmp363 [V393,T161] ( 2, 2 ) int -> [ebp-0x140] do-not-enreg[H] hidden-struct-arg "field V219.<Start>k__BackingField (fldOffset=0x0)" P-DEP ; V394 tmp364 [V394,T162] ( 2, 2 ) int -> [ebp-0x13C] do-not-enreg[H] hidden-struct-arg "field V219.<Length>k__BackingField (fldOffset=0x4)" P-DEP
-;* V395 tmp365 [V395,T231] ( 0, 0 ) int -> zero-ref single-def "field V224._id (fldOffset=0x0)" P-INDEP
+;* V395 tmp365 [V395,T232] ( 0, 0 ) int -> zero-ref single-def "field V224._id (fldOffset=0x0)" P-INDEP
; V396 tmp366 [V396 ] ( 3, 2.50) ref -> [ebp-0x150] do-not-enreg[X] addr-exposed "field V225._nodeOrParent (fldOffset=0x0)" P-DEP ...

+19 (+1.79%) : 2817.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 this [V00,T00] ( 28, 57.50) byref -> esi this single-def ; V01 arg1 [V01,T17] ( 4, 3.50) byref -> [ebp-0x2C] single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> [ebp-0x14]
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> [ebp-0x14]
; V03 loc1 [V03 ] ( 36, 70.50) struct (16) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [ebp-0x28]
+; V04 loc2 [V04,T08] ( 6, 8 ) ushort -> [ebp-0x28]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V08 tmp1 [V08,T07] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
+; V08 tmp1 [V08,T06] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
; V09 tmp2 [V09,T09] ( 4, 8 ) int -> ecx "Inline stloc first use temp" ;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp4 [V11,T30] ( 2, 2 ) int -> eax "Inlining Arg" @@ -36,10 +36,10 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V26 tmp19 [V26,T15] ( 4, 8 ) int -> eax "Inline stloc first use temp" ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V28 tmp21 [V28,T08] ( 4, 10 ) ushort -> edx "Inline stloc first use temp" -; V29 tmp22 [V29,T16] ( 4, 8 ) int -> edx "Inline stloc first use temp"
+; V28 tmp21 [V28,T07] ( 4, 10 ) ushort -> edx "Inline stloc first use temp" +; V29 tmp22 [V29,T16] ( 4, 8 ) int -> eax "Inline stloc first use temp"
;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp24 [V31,T05] ( 4, 16 ) int -> esi "Inlining Arg"
+; V31 tmp24 [V31,T04] ( 4, 16 ) int -> esi "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -62,7 +62,7 @@ ; V51 GsCookie [V51 ] ( 1, 1 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V52 LocAllocSP [V52,T33] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar" ; V53 cse0 [V53,T31] ( 3, 1.50) int -> eax "CSE - conservative"
-; V54 cse1 [V54,T06] ( 4, 16 ) int -> ecx "CSE - moderate"
+; V54 cse1 [V54,T05] ( 4, 16 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 40 @@ -84,40 +84,36 @@ G_M25128_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; byrRegs +[edi] ;; size=31 bbWeight=1 PerfScore 9.25 G_M25128_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov bword ptr [ebp-0x2C], edi - ; GC ptr vars +{V01}
mov gword ptr [edi], 0xD1FFAB1E
- mov edi, bword ptr [ebp-0x2C] - ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=6 bbWeight=1 PerfScore 1.00
G_M25128_IG03: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- ; GC ptr vars -{V01}
mov ecx, dword ptr [esi+0x08] cmp ecx, dword ptr [esi+0x04]
- jge G_M25128_IG27
+ jge G_M25128_IG23
;; size=12 bbWeight=8 PerfScore 48.00 G_M25128_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ecx, dword ptr [esi+0x08] lea eax, [ecx+0x01] mov dword ptr [esi+0x08], eax cmp ecx, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx ebx, word ptr [eax+2*ecx] test ebx, ebx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=32 bbWeight=2 PerfScore 25.50 G_M25128_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref ; byrRegs -[eax] mov eax, ebx test eax, eax
- je G_M25128_IG32
+ je G_M25128_IG28
;; size=10 bbWeight=8 PerfScore 12.00 G_M25128_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz cmp eax, 44
- je G_M25128_IG28
+ je G_M25128_IG24
cmp eax, 61
- je G_M25128_IG30
+ je G_M25128_IG26
mov dword ptr [ebp-0x14], eax mov ecx, eax call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte] @@ -159,137 +155,143 @@ G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 mov ecx, ebx mov eax, dword ptr [esi+0x08] cmp eax, dword ptr [esi+0x04]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edx, [eax+0x01] mov dword ptr [esi+0x08], edx cmp eax, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov edx, bword ptr [esi] ; byrRegs +[edx] movzx edx, word ptr [edx+2*eax] ; byrRegs -[edx] test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=43 bbWeight=0.50 PerfScore 8.50 G_M25128_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ebx, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
test edx, edx
- je G_M25128_IG51
+ je G_M25128_IG49
test ecx, ecx
- je SHORT G_M25128_IG15 - ;; size=12 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M25128_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref cmp edx, ecx
- je G_M25128_IG52
+ je G_M25128_IG50
;; size=8 bbWeight=2 PerfScore 2.50
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - test ecx, ecx - jne SHORT G_M25128_IG17 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 44 - je G_M25128_IG58 - cmp edx, 61 - je G_M25128_IG58 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov dword ptr [ebp-0x28], ecx - test ecx, ecx - jne SHORT G_M25128_IG19 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M25128_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 39 - je G_M25128_IG63 - cmp edx, 34 - je G_M25128_IG63 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp edx, 92
- jne G_M25128_IG48
+ jne G_M25128_IG46
;; size=9 bbWeight=4 PerfScore 5.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov edx, dword ptr [esi+0x08] cmp edx, dword ptr [esi+0x04]
- jge G_M25128_IG35
+ jge G_M25128_IG33
mov edx, dword ptr [esi+0x08] lea eax, [edx+0x01] mov dword ptr [esi+0x08], eax cmp edx, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx edx, word ptr [eax+2*edx] test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=44 bbWeight=2 PerfScore 37.50
-G_M25128_IG21: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; byrRegs -[eax] cmp edx, 61
- ja G_M25128_IG38 - cmp edx, 39
ja G_M25128_IG36
+ cmp edx, 39 + ja G_M25128_IG34
cmp edx, 34
- je SHORT G_M25128_IG26
+ je SHORT G_M25128_IG22
cmp edx, 39 mov bword ptr [ebp-0x2C], edi ; GC ptr vars +{V01}
- jne G_M25128_IG63
+ jne G_M25128_IG61
;; size=35 bbWeight=2 PerfScore 12.00
-G_M25128_IG22: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M25128_IG18: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
; byrRegs -[edi] mov eax, dword ptr [ebp-0x20] mov ebx, bword ptr [ebp-0x1C] ; byrRegs +[ebx] mov edi, dword ptr [ebp-0x18] cmp eax, edi
- jae G_M25128_IG41
+ jae G_M25128_IG39
mov word ptr [ebx+2*eax], dx inc eax mov dword ptr [ebp-0x20], eax ;; size=25 bbWeight=2 PerfScore 13.00
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; byrRegs -[ebx]
- mov edx, dword ptr [esi+0x08] - cmp edx, dword ptr [esi+0x04] - jge G_M25128_IG50
+ mov eax, dword ptr [esi+0x08] + cmp eax, dword ptr [esi+0x04] + jge G_M25128_IG48
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - mov edx, dword ptr [esi+0x08] - lea eax, [edx+0x01] - mov dword ptr [esi+0x08], eax - cmp edx, dword ptr [esi+0x04] - jae G_M25128_IG62 - mov eax, bword ptr [esi] - ; byrRegs +[eax] - movzx edx, word ptr [eax+2*edx]
+G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + mov eax, dword ptr [esi+0x08] + lea edx, [eax+0x01] + mov dword ptr [esi+0x08], edx + cmp eax, dword ptr [esi+0x04] + jae G_M25128_IG60 + mov edx, bword ptr [esi] + ; byrRegs +[edx] + movzx edx, word ptr [edx+2*eax] + ; byrRegs -[edx]
test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=32 bbWeight=2 PerfScore 25.50
-G_M25128_IG25: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - ; byrRegs -[eax]
+G_M25128_IG21: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov ebx, edx
- mov ecx, dword ptr [ebp-0x28]
mov edi, bword ptr [ebp-0x2C] ; byrRegs +[edi] jmp G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 17.00 -G_M25128_IG26: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
+ ;; size=10 bbWeight=4 PerfScore 13.00 +G_M25128_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; GC ptr vars -{V01} mov bword ptr [ebp-0x2C], edi ...

+14 (+7.37%) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr" -; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr" +; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local" -; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local" +; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov edx, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[edx] - mov ecx, edx
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ebx, gword ptr [edi+4*edx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx] - ; gcrRegs -[edx] - mov edx, dword ptr [edx+0x2C] - call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx] + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebx+0x2C] + call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] @@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=37 bbWeight=8 PerfScore 166.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01 V10} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V11} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp G_M59545_IG03 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V11}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_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 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================

benchmarks.run_pgo.windows.x86.checked.mch

-20 (-15.87%) : 13323.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================

-22 (-10.58%) : 5089.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
; ============================================================

-43 (-10.31%) : 71115.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):this (Tier0-FullOpts)

@@ -14,7 +14,7 @@ ; V03 arg3 [V03,T14] ( 3, 3 ) byref -> [ebp-0x20] single-def ; V04 arg4 [V04,T17] ( 1, 1 ) byref -> [ebp+0x08] single-def ; V05 loc0 [V05,T06] ( 6, 12 ) int -> [ebp-0x10]
-; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
+; V06 loc1 [V06,T00] ( 17, 55 ) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> [ebp-0x14] ; V08 loc3 [V08,T05] ( 8, 12.50) int -> edx ;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -49,7 +49,7 @@ ;* V38 tmp26 [V38 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp27 [V39 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ; V40 tmp28 [V40,T12] ( 3, 7 ) int -> [ebp-0x18] spill-single-def "V02.[004..008)"
-; V41 cse0 [V41,T02] ( 7, 17.50) int -> eax "CSE - aggressive"
+; V41 cse0 [V41,T02] ( 6, 17 ) int -> eax "CSE - aggressive"
; V42 cse1 [V42,T09] ( 4, 9 ) byref -> esi "CSE - moderate" ; V43 cse2 [V43,T13] ( 3, 6 ) int -> edx "CSE - moderate" ; @@ -78,39 +78,39 @@ G_M19254_IG02: ; bbWeight=1, gcVars=00004000 {V03}, gcrefRegs=00000001 {e mov edx, dword ptr [eax+0x18] mov bword ptr [ebp-0x24], 0xD1FFAB1E cmp dword ptr [ebp+0x18], 0
- je G_M19254_IG07
+ je G_M19254_IG06
;; size=36 bbWeight=1 PerfScore 11.50 G_M19254_IG03: ; bbWeight=4, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] ; GC ptr vars +{V15 V26} cmp edi, esi
- jae G_M19254_IG07
+ jae SHORT G_M19254_IG06
cmp ebx, dword ptr [ebp+0x18]
- jae G_M19254_IG19
+ jae G_M19254_IG14
mov eax, bword ptr [ebp+0x14] ; byrRegs +[eax] movzx eax, word ptr [eax+2*ebx] ; byrRegs -[eax] cmp eax, 61
- je SHORT G_M19254_IG07
+ je SHORT G_M19254_IG06
inc ebx test byte ptr [eax+D1FFAB1EH], 1
- jne SHORT G_M19254_IG06 - ;; size=39 bbWeight=4 PerfScore 51.00 -G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M19254_IG05 + ;; size=35 bbWeight=4 PerfScore 51.00 +G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp eax, 123
- jge G_M19254_IG20
+ jge G_M19254_IG15
mov esi, bword ptr [ebp-0x24] ; byrRegs +[esi] movzx eax, byte ptr [esi+eax] cmp eax, 255
- je G_M19254_IG20
+ je G_M19254_IG15
shl ecx, 6 or ecx, eax mov eax, ecx add edx, 6 cmp edx, 8
- jl G_M19254_IG18
+ jl G_M19254_IG13
lea ecx, [edi+0x01] mov dword ptr [ebp-0x10], ecx mov esi, bword ptr [ebp+0x0C] @@ -123,57 +123,56 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, dword ptr [ebp-0x18] ; byrRegs -[esi] cmp edi, esi
- je G_M19254_IG17 - ;; size=82 bbWeight=2 PerfScore 36.50 -G_M19254_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x14]
- ;; size=3 bbWeight=1 PerfScore 1.00 -G_M19254_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M19254_IG11 + ;; size=81 bbWeight=2 PerfScore 38.50 +G_M19254_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, dword ptr [ebp+0x18] mov esi, dword ptr [ebp-0x18]
- jb G_M19254_IG03 - ;; size=12 bbWeight=4 PerfScore 16.00 -G_M19254_IG07: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jb SHORT G_M19254_IG03 + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M19254_IG06: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V15 V26} mov eax, dword ptr [ebp+0x18] cmp ebx, eax
- jae SHORT G_M19254_IG16
+ jae SHORT G_M19254_IG11
mov esi, bword ptr [ebp+0x14] ; byrRegs +[esi] cmp word ptr [esi+2*ebx], 61
- jne SHORT G_M19254_IG15
+ jne SHORT G_M19254_IG11
xor edx, edx ;; size=19 bbWeight=0.50 PerfScore 3.75
-G_M19254_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M19254_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ebx cmp ebx, eax
- jae SHORT G_M19254_IG09
+ jae SHORT G_M19254_IG11
cmp ebx, eax
- jae SHORT G_M19254_IG19 - cmp word ptr [esi+2*ebx], 61 - je SHORT G_M19254_IG08 - ;; size=16 bbWeight=4 PerfScore 27.00 -G_M19254_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp ebx, eax - mov dword ptr [ebp-0x14], ecx
jae SHORT G_M19254_IG14
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19254_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ cmp word ptr [esi+2*ebx], 61 + je SHORT G_M19254_IG07 + ;; size=16 bbWeight=4 PerfScore 27.00 +G_M19254_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + mov dword ptr [ebp-0x14], ecx + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
lea ecx, [ebx+0x01] cmp ebx, eax
- jae SHORT G_M19254_IG19
+ jae SHORT G_M19254_IG14
movzx ebx, word ptr [esi+2*ebx] test byte ptr [ebx+D1FFAB1EH], 1
- je SHORT G_M19254_IG21
+ je SHORT G_M19254_IG16
cmp ecx, eax
- jb SHORT G_M19254_IG13 - ;; size=24 bbWeight=4 PerfScore 36.00 -G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, ecx + jb SHORT G_M19254_IG09 + ;; size=26 bbWeight=4 PerfScore 37.00 +G_M19254_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi]
+ mov ecx, dword ptr [ebp-0x14] + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [ebp-0x1C] ; gcrRegs +[eax]
- mov esi, dword ptr [ebp-0x14] - mov dword ptr [eax+0x14], esi
+ mov dword ptr [eax+0x14], ecx
mov dword ptr [eax+0x18], edx mov eax, bword ptr [ebp+0x08] ; gcrRegs -[eax] @@ -181,8 +180,8 @@ G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [eax], edi mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx]
- mov dword ptr [edx], ecx - ;; size=22 bbWeight=1 PerfScore 8.00
+ mov dword ptr [edx], ebx + ;; size=19 bbWeight=1 PerfScore 7.00
G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -191,40 +190,17 @@ G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend pop ebp ret 20 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M19254_IG13: ; bbWeight=2, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; byrRegs -[eax edx] +[esi] - mov ebx, ecx - jmp SHORT G_M19254_IG10 - ;; size=4 bbWeight=2 PerfScore 4.50 -G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[esi] - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=0.25 PerfScore 0.56 -G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=1 PerfScore 2.25 -G_M19254_IG18: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M19254_IG13: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[eax edx]
; GC ptr vars +{V15 V26} mov ecx, eax
- jmp G_M19254_IG06 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M19254_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jmp SHORT G_M19254_IG05 + ;; size=4 bbWeight=1 PerfScore 2.25 +G_M19254_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V03 V15 V26} call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -249,7 +225,7 @@ G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_THROW ; gcrRegs -[ecx edi] ;; size=47 bbWeight=0 PerfScore 0.00
-G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -276,6 +252,6 @@ G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 417, prolog size 14, PerfScore 213.31, instruction count 138, allocated bytes for code 417 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
+; Total bytes of code 374, prolog size 14, PerfScore 208.25, instruction count 125, allocated bytes for code 374 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
; ============================================================

+42 (+15.61%) : 62415.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToLowerConversion:int (Tier1)

@@ -25,14 +25,14 @@ ;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -90,7 +90,7 @@ ; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)" ; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)" ; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC" ; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC" ; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect" @@ -110,76 +110,63 @@ G_M42491_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov bword ptr [ebp-0x20], ecx ; GC ptr vars +{V02} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M42491_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M42491_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10] ; byrRegs +[edi] mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08] + ; byrRegs +[edx] + mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80} mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax imul ecx, ebx, 2
- jo G_M42491_IG10
+ jo G_M42491_IG11
mov dword ptr [ebp-0x18], ecx test ecx, ecx
- jl G_M42491_IG11 - ;; size=38 bbWeight=1 PerfScore 11.25 -G_M42491_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M42491_IG12
imul esi, eax, 2
- jo G_M42491_IG10
+ jo SHORT G_M42491_IG11
test esi, esi
- jge SHORT G_M42491_IG04 - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - ;; size=45 bbWeight=1 PerfScore 11.25 -G_M42491_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M42491_IG05 + ;; size=43 bbWeight=1 PerfScore 15.50 +G_M42491_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M42491_IG12
+ je G_M42491_IG14 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M42491_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M42491_IG12 - mov edx, bword ptr [ebp-0x24] - ; byrRegs +[edx]
+ je G_M42491_IG14
mov eax, edx ; byrRegs +[eax] sub eax, edi ; byrRegs -[eax] cmp eax, ecx
- jb SHORT G_M42491_IG05
+ jb SHORT G_M42491_IG06
mov ecx, esi neg ecx cmp ecx, eax
- jb SHORT G_M42491_IG05
+ jb SHORT G_M42491_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M42491_IG13 - jmp SHORT G_M42491_IG06 - ;; size=37 bbWeight=1 PerfScore 13.00 -G_M42491_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M42491_IG15 + jmp SHORT G_M42491_IG07 + ;; size=35 bbWeight=1 PerfScore 9.75 +G_M42491_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz + jmp SHORT G_M42491_IG13 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M42491_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V02 V80} mov ecx, 72 call [System.ThrowHelper:ThrowInvalidOperationException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M42491_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M42491_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi] ; GC ptr vars +{V02 V80} xor esi, esi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M42491_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi mov ecx, edi mov bword ptr [ebp-0x14], edx @@ -189,9 +176,9 @@ G_M42491_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e ; byrRegs -[edx edi] mov edi, eax cmp edi, ebx
- ja SHORT G_M42491_IG14 - ;; size=21 bbWeight=1 PerfScore 7.75 -G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M42491_IG17 + ;; size=25 bbWeight=1 PerfScore 7.75 +G_M42491_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx] mov dword ptr [edx], edi @@ -199,7 +186,7 @@ G_M42491_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp ebx, edi cmove eax, esi ;; size=15 bbWeight=1 PerfScore 2.75
-G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M42491_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -207,37 +194,66 @@ G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend pop ebp ret 16 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M42491_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M42491_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx] ; GC ptr vars -{V02} call CORINFO_HELP_OVERFLOW ;; size=5 bbWeight=0 PerfScore 0.00
-G_M42491_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref - ; byrRegs +[edi]
+G_M42491_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz + ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + ; byrRegs -[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + imul ecx, dword ptr [ebp-0x1C], 2 + jo SHORT G_M42491_IG11 + mov edx, ecx + test edx, edx + mov esi, edx + jge SHORT G_M42491_IG16 + ;; size=30 bbWeight=0 PerfScore 0.00 +G_M42491_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C] - jmp G_M42491_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M42491_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov eax, dword ptr [ebp-0x1C] - cmp ebx, eax
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + mov ecx, dword ptr [ebp-0x18] + test ecx, ecx
mov edx, bword ptr [ebp-0x24] ; byrRegs +[edx]
- jle SHORT G_M42491_IG06 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M42491_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M42491_IG04 + ;; size=46 bbWeight=0 PerfScore 0.00 +G_M42491_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref + mov eax, dword ptr [ebp-0x1C] + cmp ebx, eax + jle G_M42491_IG07 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M42491_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C] mov ebx, esi mov esi, 1
- jmp SHORT G_M42491_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M42491_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M42491_IG08 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M42491_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; byrRegs -[edx] + mov ecx, dword ptr [ebp-0x18] + mov edx, bword ptr [ebp-0x24] + ; byrRegs +[edx] + jmp G_M42491_IG03 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M42491_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V80} mov ecx, 0xD1FFAB1E @@ -246,9 +262,9 @@ G_M42491_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {} ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- jmp SHORT G_M42491_IG08 - ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M42491_IG09 + ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=d7945a04) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================

+42 (+15.61%) : 18132.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)

@@ -25,14 +25,14 @@ ;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -90,7 +90,7 @@ ; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)" ; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)" ; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC" ; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC" ; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect" @@ -110,76 +110,63 @@ G_M47258_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov bword ptr [ebp-0x20], ecx ; GC ptr vars +{V02} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10] ; byrRegs +[edi] mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08] + ; byrRegs +[edx] + mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80} mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax imul ecx, ebx, 2
- jo G_M47258_IG10
+ jo G_M47258_IG11
mov dword ptr [ebp-0x18], ecx test ecx, ecx
- jl G_M47258_IG11 - ;; size=38 bbWeight=1 PerfScore 11.25 -G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M47258_IG12
imul esi, eax, 2
- jo G_M47258_IG10
+ jo SHORT G_M47258_IG11
test esi, esi
- jge SHORT G_M47258_IG04 - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - ;; size=45 bbWeight=1 PerfScore 11.25 -G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M47258_IG05 + ;; size=43 bbWeight=1 PerfScore 15.50 +G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M47258_IG12
+ je G_M47258_IG14 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M47258_IG12 - mov edx, bword ptr [ebp-0x24] - ; byrRegs +[edx]
+ je G_M47258_IG14
mov eax, edx ; byrRegs +[eax] sub eax, edi ; byrRegs -[eax] cmp eax, ecx
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
mov ecx, esi neg ecx cmp ecx, eax
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M47258_IG13 - jmp SHORT G_M47258_IG06 - ;; size=37 bbWeight=1 PerfScore 13.00 -G_M47258_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M47258_IG15 + jmp SHORT G_M47258_IG07 + ;; size=35 bbWeight=1 PerfScore 9.75 +G_M47258_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz + jmp SHORT G_M47258_IG13 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M47258_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V02 V80} mov ecx, 72 call [System.ThrowHelper:ThrowInvalidOperationException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M47258_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi] ; GC ptr vars +{V02 V80} xor esi, esi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi mov ecx, edi mov bword ptr [ebp-0x14], edx @@ -189,9 +176,9 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e ; byrRegs -[edx edi] mov edi, eax cmp edi, ebx
- ja SHORT G_M47258_IG14 - ;; size=21 bbWeight=1 PerfScore 7.75 -G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M47258_IG17 + ;; size=25 bbWeight=1 PerfScore 7.75 +G_M47258_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx] mov dword ptr [edx], edi @@ -199,7 +186,7 @@ G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp ebx, edi cmove eax, esi ;; size=15 bbWeight=1 PerfScore 2.75
-G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M47258_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -207,37 +194,66 @@ G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend pop ebp ret 16 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M47258_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx] ; GC ptr vars -{V02} call CORINFO_HELP_OVERFLOW ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref - ; byrRegs +[edi]
+G_M47258_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz + ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + ; byrRegs -[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + imul ecx, dword ptr [ebp-0x1C], 2 + jo SHORT G_M47258_IG11 + mov edx, ecx + test edx, edx + mov esi, edx + jge SHORT G_M47258_IG16 + ;; size=30 bbWeight=0 PerfScore 0.00 +G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C] - jmp G_M47258_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M47258_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov eax, dword ptr [ebp-0x1C] - cmp ebx, eax
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + mov ecx, dword ptr [ebp-0x18] + test ecx, ecx
mov edx, bword ptr [ebp-0x24] ; byrRegs +[edx]
- jle SHORT G_M47258_IG06 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M47258_IG04 + ;; size=46 bbWeight=0 PerfScore 0.00 +G_M47258_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref + mov eax, dword ptr [ebp-0x1C] + cmp ebx, eax + jle G_M47258_IG07 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M47258_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C] mov ebx, esi mov esi, 1
- jmp SHORT G_M47258_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M47258_IG08 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M47258_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; byrRegs -[edx] + mov ecx, dword ptr [ebp-0x18] + mov edx, bword ptr [ebp-0x24] + ; byrRegs +[edx] + jmp G_M47258_IG03 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M47258_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V80} mov ecx, 0xD1FFAB1E @@ -246,9 +262,9 @@ G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {} ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- jmp SHORT G_M47258_IG08 - ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG09 + ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================

+42 (+15.61%) : 39276.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)

@@ -25,14 +25,14 @@ ;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp6 [V16,T00] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V16 tmp6 [V16,T01] ( 5, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V17 tmp7 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V18 tmp8 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V23 tmp13 [V23,T01] ( 4, 8 ) int -> esi "Inlining Arg"
+; V23 tmp13 [V23,T00] ( 6, 8 ) int -> registers "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -90,7 +90,7 @@ ; V78 tmp68 [V78,T05] ( 4, 4 ) byref -> edi single-def "V00.[000..004)" ; V79 tmp69 [V79,T04] ( 5, 4 ) int -> ebx "V00.[004..008)" ; V80 tmp70 [V80,T06] ( 4, 4 ) byref -> [ebp-0x24] spill-single-def "V01.[000..004)"
-; V81 tmp71 [V81,T11] ( 5, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
+; V81 tmp71 [V81,T11] ( 6, 3 ) int -> [ebp-0x1C] spill-single-def "V01.[004..008)"
; V82 tmp72 [V82,T08] ( 2, 4 ) int -> ecx "Cast away GC" ; V83 tmp73 [V83,T09] ( 2, 4 ) int -> edx "Cast away GC" ; V84 tmp74 [V84,T10] ( 2, 4 ) int -> edx "argument with side effect" @@ -110,76 +110,63 @@ G_M47258_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov bword ptr [ebp-0x20], ecx ; GC ptr vars +{V02} ;; size=20 bbWeight=1 PerfScore 7.75
-G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG02: ; bbWeight=1, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edi, bword ptr [ebp+0x10] ; byrRegs +[edi] mov ebx, dword ptr [ebp+0x14]
- mov eax, bword ptr [ebp+0x08] - ; byrRegs +[eax] - mov bword ptr [ebp-0x24], eax
+ mov edx, bword ptr [ebp+0x08] + ; byrRegs +[edx] + mov bword ptr [ebp-0x24], edx
; GC ptr vars +{V80} mov eax, dword ptr [ebp+0x0C]
- ; byrRegs -[eax]
mov dword ptr [ebp-0x1C], eax imul ecx, ebx, 2
- jo G_M47258_IG10
+ jo G_M47258_IG11
mov dword ptr [ebp-0x18], ecx test ecx, ecx
- jl G_M47258_IG11 - ;; size=38 bbWeight=1 PerfScore 11.25 -G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jl SHORT G_M47258_IG12
imul esi, eax, 2
- jo G_M47258_IG10
+ jo SHORT G_M47258_IG11
test esi, esi
- jge SHORT G_M47258_IG04 - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - ;; size=45 bbWeight=1 PerfScore 11.25 -G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov ecx, dword ptr [ebp-0x18]
+ jl SHORT G_M47258_IG05 + ;; size=43 bbWeight=1 PerfScore 15.50 +G_M47258_IG03: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
test ecx, ecx
- je SHORT G_M47258_IG12
+ je G_M47258_IG14 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M47258_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
test esi, esi
- je SHORT G_M47258_IG12 - mov edx, bword ptr [ebp-0x24] - ; byrRegs +[edx]
+ je G_M47258_IG14
mov eax, edx ; byrRegs +[eax] sub eax, edi ; byrRegs -[eax] cmp eax, ecx
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
mov ecx, esi neg ecx cmp ecx, eax
- jb SHORT G_M47258_IG05
+ jb SHORT G_M47258_IG06
cmp ebx, dword ptr [ebp-0x1C]
- jg SHORT G_M47258_IG13 - jmp SHORT G_M47258_IG06 - ;; size=37 bbWeight=1 PerfScore 13.00 -G_M47258_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jg G_M47258_IG15 + jmp SHORT G_M47258_IG07 + ;; size=35 bbWeight=1 PerfScore 9.75 +G_M47258_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz + jmp SHORT G_M47258_IG13 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M47258_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V02 V80} mov ecx, 72 call [System.ThrowHelper:ThrowInvalidOperationException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M47258_IG06: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
+G_M47258_IG07: ; bbWeight=1, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref
; byrRegs +[edx edi] ; GC ptr vars +{V02 V80} xor esi, esi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov bword ptr [ebp-0x10], edi mov ecx, edi mov bword ptr [ebp-0x14], edx @@ -189,9 +176,9 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000084 {e ; byrRegs -[edx edi] mov edi, eax cmp edi, ebx
- ja SHORT G_M47258_IG14 - ;; size=21 bbWeight=1 PerfScore 7.75 -G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ja G_M47258_IG17 + ;; size=25 bbWeight=1 PerfScore 7.75 +G_M47258_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx] mov dword ptr [edx], edi @@ -199,7 +186,7 @@ G_M47258_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} cmp ebx, edi cmove eax, esi ;; size=15 bbWeight=1 PerfScore 2.75
-G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M47258_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -207,37 +194,66 @@ G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend pop ebp ret 16 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M47258_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M47258_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx] ; GC ptr vars -{V02} call CORINFO_HELP_OVERFLOW ;; size=5 bbWeight=0 PerfScore 0.00
-G_M47258_IG11: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref - ; byrRegs +[edi]
+G_M47258_IG12: ; bbWeight=0, gcVars=00000044 {V02 V80}, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, gcvars, byref, isz + ; byrRegs +[edx edi]
; GC ptr vars +{V02 V80}
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + ; byrRegs -[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + imul ecx, dword ptr [ebp-0x1C], 2 + jo SHORT G_M47258_IG11 + mov edx, ecx + test edx, edx + mov esi, edx + jge SHORT G_M47258_IG16 + ;; size=30 bbWeight=0 PerfScore 0.00 +G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov eax, dword ptr [ebp-0x1C] - jmp G_M47258_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M47258_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz - mov eax, dword ptr [ebp-0x1C] - cmp ebx, eax
+ mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + mov ecx, dword ptr [ebp-0x18] + test ecx, ecx
mov edx, bword ptr [ebp-0x24] ; byrRegs +[edx]
- jle SHORT G_M47258_IG06 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M47258_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref, isz
+ jne G_M47258_IG04 + ;; size=46 bbWeight=0 PerfScore 0.00 +G_M47258_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref + mov eax, dword ptr [ebp-0x1C] + cmp ebx, eax + jle G_M47258_IG07 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M47258_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000084 {edx edi}, byref
mov esi, dword ptr [ebp-0x1C] mov ebx, esi mov esi, 1
- jmp SHORT G_M47258_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp G_M47258_IG08 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M47258_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + ; byrRegs -[edx] + mov ecx, dword ptr [ebp-0x18] + mov edx, bword ptr [ebp-0x24] + ; byrRegs +[edx] + jmp G_M47258_IG03 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M47258_IG17: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[edx edi] ; GC ptr vars -{V80} mov ecx, 0xD1FFAB1E @@ -246,9 +262,9 @@ G_M47258_IG14: ; bbWeight=0, gcVars=00000004 {V02}, gcrefRegs=00000000 {} ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- jmp SHORT G_M47258_IG08 - ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp G_M47258_IG09 + ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 17, PerfScore 58.50, instruction count 89, allocated bytes for code 269 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
+; Total bytes of code 311, prolog size 17, PerfScore 50.50, instruction count 98, allocated bytes for code 311 (MethodHash=ad1d4765) for method System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
; ============================================================

benchmarks.run_tiered.windows.x86.checked.mch

-20 (-15.87%) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================

-22 (-10.58%) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
; ============================================================

-43 (-10.31%) : 33876.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):this (Tier0-FullOpts)

@@ -14,7 +14,7 @@ ; V03 arg3 [V03,T14] ( 3, 3 ) byref -> [ebp-0x20] single-def ; V04 arg4 [V04,T17] ( 1, 1 ) byref -> [ebp+0x08] single-def ; V05 loc0 [V05,T06] ( 6, 12 ) int -> [ebp-0x10]
-; V06 loc1 [V06,T00] ( 18, 55.50) int -> registers
+; V06 loc1 [V06,T00] ( 17, 55 ) int -> registers
; V07 loc2 [V07,T11] ( 5, 8 ) int -> [ebp-0x14] ; V08 loc3 [V08,T05] ( 8, 12.50) int -> edx ;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -49,7 +49,7 @@ ;* V38 tmp26 [V38 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp27 [V39 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ; V40 tmp28 [V40,T12] ( 3, 7 ) int -> [ebp-0x18] spill-single-def "V02.[004..008)"
-; V41 cse0 [V41,T02] ( 7, 17.50) int -> eax "CSE - aggressive"
+; V41 cse0 [V41,T02] ( 6, 17 ) int -> eax "CSE - aggressive"
; V42 cse1 [V42,T09] ( 4, 9 ) byref -> esi "CSE - moderate" ; V43 cse2 [V43,T13] ( 3, 6 ) int -> edx "CSE - moderate" ; @@ -78,39 +78,39 @@ G_M19254_IG02: ; bbWeight=1, gcVars=00004000 {V03}, gcrefRegs=00000001 {e mov edx, dword ptr [eax+0x18] mov bword ptr [ebp-0x24], 0xD1FFAB1E cmp dword ptr [ebp+0x18], 0
- je G_M19254_IG07
+ je G_M19254_IG06
;; size=36 bbWeight=1 PerfScore 11.50 G_M19254_IG03: ; bbWeight=4, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] ; GC ptr vars +{V15 V26} cmp edi, esi
- jae G_M19254_IG07
+ jae SHORT G_M19254_IG06
cmp ebx, dword ptr [ebp+0x18]
- jae G_M19254_IG19
+ jae G_M19254_IG14
mov eax, bword ptr [ebp+0x14] ; byrRegs +[eax] movzx eax, word ptr [eax+2*ebx] ; byrRegs -[eax] cmp eax, 61
- je SHORT G_M19254_IG07
+ je SHORT G_M19254_IG06
inc ebx test byte ptr [eax+D1FFAB1EH], 1
- jne SHORT G_M19254_IG06 - ;; size=39 bbWeight=4 PerfScore 51.00 -G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M19254_IG05 + ;; size=35 bbWeight=4 PerfScore 51.00 +G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp eax, 123
- jge G_M19254_IG20
+ jge G_M19254_IG15
mov esi, bword ptr [ebp-0x24] ; byrRegs +[esi] movzx eax, byte ptr [esi+eax] cmp eax, 255
- je G_M19254_IG20
+ je G_M19254_IG15
shl ecx, 6 or ecx, eax mov eax, ecx add edx, 6 cmp edx, 8
- jl G_M19254_IG18
+ jl G_M19254_IG13
lea ecx, [edi+0x01] mov dword ptr [ebp-0x10], ecx mov esi, bword ptr [ebp+0x0C] @@ -123,57 +123,56 @@ G_M19254_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, dword ptr [ebp-0x18] ; byrRegs -[esi] cmp edi, esi
- je G_M19254_IG17 - ;; size=82 bbWeight=2 PerfScore 36.50 -G_M19254_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x14]
- ;; size=3 bbWeight=1 PerfScore 1.00 -G_M19254_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M19254_IG11 + ;; size=81 bbWeight=2 PerfScore 38.50 +G_M19254_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ebx, dword ptr [ebp+0x18] mov esi, dword ptr [ebp-0x18]
- jb G_M19254_IG03 - ;; size=12 bbWeight=4 PerfScore 16.00 -G_M19254_IG07: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jb SHORT G_M19254_IG03 + ;; size=8 bbWeight=4 PerfScore 16.00 +G_M19254_IG06: ; bbWeight=0.50, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V15 V26} mov eax, dword ptr [ebp+0x18] cmp ebx, eax
- jae SHORT G_M19254_IG16
+ jae SHORT G_M19254_IG11
mov esi, bword ptr [ebp+0x14] ; byrRegs +[esi] cmp word ptr [esi+2*ebx], 61
- jne SHORT G_M19254_IG15
+ jne SHORT G_M19254_IG11
xor edx, edx ;; size=19 bbWeight=0.50 PerfScore 3.75
-G_M19254_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+G_M19254_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
inc ebx cmp ebx, eax
- jae SHORT G_M19254_IG09
+ jae SHORT G_M19254_IG11
cmp ebx, eax
- jae SHORT G_M19254_IG19 - cmp word ptr [esi+2*ebx], 61 - je SHORT G_M19254_IG08 - ;; size=16 bbWeight=4 PerfScore 27.00 -G_M19254_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp ebx, eax - mov dword ptr [ebp-0x14], ecx
jae SHORT G_M19254_IG14
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M19254_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ cmp word ptr [esi+2*ebx], 61 + je SHORT G_M19254_IG07 + ;; size=16 bbWeight=4 PerfScore 27.00 +G_M19254_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + mov dword ptr [ebp-0x14], ecx + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
lea ecx, [ebx+0x01] cmp ebx, eax
- jae SHORT G_M19254_IG19
+ jae SHORT G_M19254_IG14
movzx ebx, word ptr [esi+2*ebx] test byte ptr [ebx+D1FFAB1EH], 1
- je SHORT G_M19254_IG21
+ je SHORT G_M19254_IG16
cmp ecx, eax
- jb SHORT G_M19254_IG13 - ;; size=24 bbWeight=4 PerfScore 36.00 -G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ebx, ecx + jb SHORT G_M19254_IG09 + ;; size=26 bbWeight=4 PerfScore 37.00 +G_M19254_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi]
+ mov ecx, dword ptr [ebp-0x14] + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [ebp-0x1C] ; gcrRegs +[eax]
- mov esi, dword ptr [ebp-0x14] - mov dword ptr [eax+0x14], esi
+ mov dword ptr [eax+0x14], ecx
mov dword ptr [eax+0x18], edx mov eax, bword ptr [ebp+0x08] ; gcrRegs -[eax] @@ -181,8 +180,8 @@ G_M19254_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [eax], edi mov edx, bword ptr [ebp-0x20] ; byrRegs +[edx]
- mov dword ptr [edx], ecx - ;; size=22 bbWeight=1 PerfScore 8.00
+ mov dword ptr [edx], ebx + ;; size=19 bbWeight=1 PerfScore 7.00
G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -191,40 +190,17 @@ G_M19254_IG12: ; bbWeight=1, epilog, nogc, extend pop ebp ret 20 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M19254_IG13: ; bbWeight=2, gcVars=00004400 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; byrRegs -[eax edx] +[esi] - mov ebx, ecx - jmp SHORT G_M19254_IG10 - ;; size=4 bbWeight=2 PerfScore 4.50 -G_M19254_IG14: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[esi] - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=0.25 PerfScore 0.56 -G_M19254_IG15: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG16: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x14], ecx - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=7 bbWeight=0.25 PerfScore 0.81 -G_M19254_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - mov ecx, ebx - jmp SHORT G_M19254_IG11 - ;; size=4 bbWeight=1 PerfScore 2.25 -G_M19254_IG18: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M19254_IG13: ; bbWeight=1, gcVars=0000C400 {V00 V03 V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[eax edx]
; GC ptr vars +{V15 V26} mov ecx, eax
- jmp G_M19254_IG06 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M19254_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jmp SHORT G_M19254_IG05 + ;; size=4 bbWeight=1 PerfScore 2.25 +G_M19254_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V00 V03 V15 V26} call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -249,7 +225,7 @@ G_M19254_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_THROW ; gcrRegs -[ecx edi] ;; size=47 bbWeight=0 PerfScore 0.00
-G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19254_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax @@ -276,6 +252,6 @@ G_M19254_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 417, prolog size 14, PerfScore 213.31, instruction count 138, allocated bytes for code 417 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
+; Total bytes of code 374, prolog size 14, PerfScore 208.25, instruction count 125, allocated bytes for code 374 (MethodHash=6376b4c9) for method System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
; ============================================================

+19 (+0.38%) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 148 single block inlinees; 54 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 20, 11 ) ref -> [ebp-0x288] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T06] ( 20, 11 ) ref -> [ebp-0x28C] this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T00] ( 31, 16.50) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> ; V02 arg2 [V02,T01] ( 51, 16 ) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> ; V03 arg3 [V03,T195] ( 3, 1.50) ushort -> [ebp+0x10] single-def @@ -46,10 +46,10 @@ ; V35 tmp5 [V35,T89] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V36 tmp6 [V36,T08] ( 6, 6 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundInlineArrayAccess> ;* V37 tmp7 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
-; V38 tmp8 [V38,T76] ( 3, 2.25) ref -> [ebp-0x28C] single-def "CASTCLASS eval op1"
+; V38 tmp8 [V38,T76] ( 3, 2.25) ref -> [ebp-0x290] single-def "CASTCLASS eval op1"
; V39 tmp9 [V39,T205] ( 3, 1.25) int -> eax "fgMakeTemp is creating a new local variable"
-; V40 tmp10 [V40,T11] ( 7, 5.75) ref -> [ebp-0x290] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V41 tmp11 [V41,T32] ( 3, 3 ) ref -> [ebp-0x294] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V40 tmp10 [V40,T13] ( 6, 4.75) ref -> [ebp-0x294] class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V41 tmp11 [V41,T32] ( 3, 3 ) ref -> [ebp-0x298] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V42 tmp12 [V42 ] ( 2, 2 ) struct (12) [ebp-0x44] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ;* V43 tmp13 [V43 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V44 tmp14 [V44,T90] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" @@ -57,7 +57,7 @@ ;* V46 tmp16 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundArrayAccess> ;* V47 tmp17 [V47 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V48 tmp18 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V49 tmp19 [V49,T239] ( 3, 0 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V49 tmp19 [V49,T240] ( 3, 0 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V50 tmp20 [V50,T143] ( 2, 2 ) int -> [ebp-0x48] spill-single-def "impAppendStmt" ; V51 tmp21 [V51,T144] ( 2, 2 ) struct (16) [ebp-0x58] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V52 tmp22 [V52,T91] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" @@ -65,7 +65,7 @@ ; V54 tmp24 [V54,T92] ( 3, 2 ) int -> edx "fgMakeTemp is creating a new local variable" ; V55 tmp25 [V55,T110] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup> ; V56 tmp26 [V56,T145] ( 2, 2 ) int -> [ebp-0x5C] spill-single-def "impAppendStmt"
-; V57 tmp27 [V57,T15] ( 4, 4 ) ref -> [ebp-0x298] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V57 tmp27 [V57,T15] ( 4, 4 ) ref -> [ebp-0x29C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V58 tmp28 [V58,T146] ( 2, 2 ) struct (16) [ebp-0x6C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V59 tmp29 [V59,T111] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V60 tmp30 [V60,T33] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> @@ -75,7 +75,7 @@ ; V64 tmp34 [V64,T112] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <<unknown class>> ; V65 tmp35 [V65,T95] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V66 tmp36 [V66,T113] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundRangeVariable>
-; V67 tmp37 [V67,T35] ( 3, 3 ) ref -> [ebp-0x29C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V67 tmp37 [V67,T35] ( 3, 3 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V68 tmp38 [V68,T147] ( 2, 2 ) struct (16) [ebp-0x7C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V69 tmp39 [V69,T114] ( 2, 2 ) ref -> eax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V70 tmp40 [V70,T148] ( 2, 2 ) struct (16) [ebp-0x8C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> @@ -101,7 +101,7 @@ ; V90 tmp60 [V90,T119] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundArrayAccess> ;* V91 tmp61 [V91 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ; V92 tmp62 [V92,T102] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V93 tmp63 [V93,T219] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation>
+;* V93 tmp63 [V93,T220] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation>
; V94 tmp64 [V94,T103] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V95 tmp65 [V95,T120] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess> ; V96 tmp66 [V96,T121] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1" @@ -110,26 +110,26 @@ ; V99 tmp69 [V99,T104] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V100 tmp70 [V100,T122] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundUnconvertedAddressOfOperator> ; V101 tmp71 [V101,T152] ( 2, 2 ) int -> [ebp-0xC0] spill-single-def "impAppendStmt"
-; V102 tmp72 [V102,T18] ( 4, 4 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V102 tmp72 [V102,T18] ( 4, 4 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V103 tmp73 [V103,T153] ( 2, 2 ) struct (16) [ebp-0xD0] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V104 tmp74 [V104,T123] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String> ; V105 tmp75 [V105,T36] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V106 tmp76 [V106,T105] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V107 tmp77 [V107,T124] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundNamespaceExpression>
-; V108 tmp78 [V108,T12] ( 5, 5 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V108 tmp78 [V108,T11] ( 5, 5 ) ref -> [ebp-0x2A8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V109 tmp79 [V109 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V110 tmp80 [V110,T125] ( 2, 2 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol> ; V111 tmp81 [V111,T37] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V112 tmp82 [V112,T38] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V113 tmp83 [V113,T106] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V114 tmp84 [V114,T126] ( 2, 2 ) ref -> edi class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V115 tmp85 [V115,T13] ( 5, 5 ) ref -> [ebp-0x2A8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V115 tmp85 [V115,T12] ( 5, 5 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V116 tmp86 [V116 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ; V117 tmp87 [V117,T127] ( 2, 2 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V118 tmp88 [V118,T39] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V119 tmp89 [V119,T40] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CodeAnalysis.CSharp.LocalizableErrorArgument> ; V120 tmp90 [V120,T107] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V121 tmp91 [V121,T220] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
+;* V121 tmp91 [V121,T221] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundImplicitIndexerAccess>
; V122 tmp92 [V122,T108] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V123 tmp93 [V123,T128] ( 2, 2 ) ref -> edx class-hnd single-def "spilling QMark2" <<unknown class>> ;* V124 tmp94 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression> @@ -146,7 +146,7 @@ ; V135 tmp105 [V135 ] ( 7, 3.50) struct (16) [ebp-0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V136 tmp106 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V137 tmp107 [V137 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V138 tmp108 [V138,T207] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V138 tmp108 [V138,T208] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V139 tmp109 [V139 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V140 tmp110 [V140 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V141 tmp111 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -170,7 +170,7 @@ ; V159 tmp129 [V159 ] ( 7, 3.50) struct (16) [ebp-0xF8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V160 tmp130 [V160 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V161 tmp131 [V161 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V162 tmp132 [V162,T208] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V162 tmp132 [V162,T209] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V163 tmp133 [V163 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V164 tmp134 [V164 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V165 tmp135 [V165 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -184,7 +184,7 @@ ; V173 tmp143 [V173,T64] ( 5, 2.50) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V174 tmp144 [V174,T22] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V175 tmp145 [V175 ] ( 0, 0 ) ref -> zero-ref single-def
-; V176 tmp146 [V176,T41] ( 3, 3 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V176 tmp146 [V176,T41] ( 3, 3 ) ref -> [ebp-0x2B0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V177 tmp147 [V177,T09] ( 6, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ; V178 tmp148 [V178,T42] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag> ;* V179 tmp149 [V179 ] ( 0, 0 ) ref -> zero-ref single-def @@ -199,7 +199,7 @@ ; V188 tmp158 [V188 ] ( 7, 3.50) struct (16) [ebp-0x110] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V189 tmp159 [V189 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V190 tmp160 [V190 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V191 tmp161 [V191,T209] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V191 tmp161 [V191,T210] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V192 tmp162 [V192 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V193 tmp163 [V193 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ;* V194 tmp164 [V194 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> @@ -213,7 +213,7 @@ ; V202 tmp172 [V202,T65] ( 5, 2.50) ref -> esi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V203 tmp173 [V203,T23] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V204 tmp174 [V204 ] ( 0, 0 ) ref -> zero-ref single-def
-; V205 tmp175 [V205,T44] ( 3, 3 ) ref -> [ebp-0x2B0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V205 tmp175 [V205,T44] ( 3, 3 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V206 tmp176 [V206,T10] ( 6, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic> ; V207 tmp177 [V207,T45] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.DiagnosticBag> ;* V208 tmp178 [V208 ] ( 0, 0 ) ref -> zero-ref single-def @@ -224,7 +224,7 @@ ; V213 tmp183 [V213 ] ( 4, 2 ) struct (16) [ebp-0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V214 tmp184 [V214,T47] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V215 tmp185 [V215 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V216 tmp186 [V216,T210] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V216 tmp186 [V216,T211] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V217 tmp187 [V217,T180] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V218 tmp188 [V218 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V219 tmp189 [V219 ] ( 2, 2 ) struct ( 8) [ebp-0x140] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -239,7 +239,7 @@ ; V228 tmp198 [V228 ] ( 4, 2 ) struct (16) [ebp-0x160] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V229 tmp199 [V229,T48] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V230 tmp200 [V230 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V231 tmp201 [V231,T211] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V231 tmp201 [V231,T212] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V232 tmp202 [V232,T181] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V233 tmp203 [V233 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V234 tmp204 [V234 ] ( 2, 2 ) struct ( 8) [ebp-0x168] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -253,7 +253,7 @@ ; V242 tmp212 [V242 ] ( 4, 2 ) struct (16) [ebp-0x188] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V243 tmp213 [V243,T49] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V244 tmp214 [V244 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V245 tmp215 [V245,T212] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V245 tmp215 [V245,T213] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V246 tmp216 [V246,T182] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V247 tmp217 [V247 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V248 tmp218 [V248 ] ( 2, 2 ) struct ( 8) [ebp-0x190] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -266,7 +266,7 @@ ; V255 tmp225 [V255 ] ( 4, 2 ) struct (16) [ebp-0x1B0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V256 tmp226 [V256,T50] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V257 tmp227 [V257 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V258 tmp228 [V258,T213] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V258 tmp228 [V258,T214] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V259 tmp229 [V259,T183] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V260 tmp230 [V260 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V261 tmp231 [V261 ] ( 2, 2 ) struct ( 8) [ebp-0x1B8] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -279,7 +279,7 @@ ; V268 tmp238 [V268 ] ( 4, 2 ) struct (16) [ebp-0x1D8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V269 tmp239 [V269,T51] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V270 tmp240 [V270 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V271 tmp241 [V271,T214] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V271 tmp241 [V271,T215] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V272 tmp242 [V272,T184] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V273 tmp243 [V273 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V274 tmp244 [V274 ] ( 2, 2 ) struct ( 8) [ebp-0x1E0] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -293,7 +293,7 @@ ; V282 tmp252 [V282 ] ( 4, 2 ) struct (16) [ebp-0x200] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V283 tmp253 [V283,T52] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V284 tmp254 [V284 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V285 tmp255 [V285,T215] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V285 tmp255 [V285,T216] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V286 tmp256 [V286,T185] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V287 tmp257 [V287 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V288 tmp258 [V288 ] ( 2, 2 ) struct ( 8) [ebp-0x208] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -306,7 +306,7 @@ ; V295 tmp265 [V295 ] ( 4, 2 ) struct (16) [ebp-0x228] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V296 tmp266 [V296,T53] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V297 tmp267 [V297 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V298 tmp268 [V298,T216] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V298 tmp268 [V298,T217] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V299 tmp269 [V299,T186] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location> ;* V300 tmp270 [V300 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree> ; V301 tmp271 [V301 ] ( 2, 2 ) struct ( 8) [ebp-0x230] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan> @@ -319,11 +319,11 @@ ; V308 tmp278 [V308 ] ( 3, 1.50) struct (16) [ebp-0x250] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken> ; V309 tmp279 [V309,T54] ( 3, 3 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> ;* V310 tmp280 [V310 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V311 tmp281 [V311,T217] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V311 tmp281 [V311,T218] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V312 tmp282 [V312 ] ( 2, 2 ) struct (16) [ebp-0x260] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> ;* V313 tmp283 [V313 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.Location> ;* V314 tmp284 [V314 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol>
-; V315 tmp285 [V315,T240] ( 2, 0 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V315 tmp285 [V315,T241] ( 2, 0 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V316 tmp286 [V316 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression> ;* V317 tmp287 [V317 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> ; V318 tmp288 [V318 ] ( 2, 2 ) struct (16) [ebp-0x270] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNodeOrToken> @@ -332,7 +332,7 @@ ; V321 tmp291 [V321,T129] ( 2, 2 ) ref -> [ebp-0x44] do-not-enreg[H] hidden-struct-arg "field V42.DefaultType (fldOffset=0x0)" P-DEP ; V322 tmp292 [V322,T130] ( 2, 2 ) ref -> [ebp-0x40] do-not-enreg[H] hidden-struct-arg "field V42._extensions (fldOffset=0x4)" P-DEP ; V323 tmp293 [V323,T154] ( 2, 2 ) ubyte -> [ebp-0x3C] do-not-enreg[H] hidden-struct-arg "field V42.NullableAnnotation (fldOffset=0x8)" P-DEP
-; V324 tmp294 [V324,T206] ( 2, 1 ) ref -> eax "field V43.array (fldOffset=0x0)" P-INDEP
+; V324 tmp294 [V324,T207] ( 2, 1 ) ref -> eax "field V43.array (fldOffset=0x0)" P-INDEP
;* V325 tmp295 [V325 ] ( 0, 0 ) ref -> zero-ref "field V47.array (fldOffset=0x0)" P-INDEP ;* V326 tmp296 [V326 ] ( 0, 0 ) ref -> zero-ref "field V91.array (fldOffset=0x0)" P-INDEP ;* V327 tmp297 [V327 ] ( 0, 0 ) ref -> zero-ref single-def "field V130._nodeOrParent (fldOffset=0x0)" P-INDEP @@ -357,8 +357,8 @@ ;* V346 tmp316 [V346 ] ( 0, 0 ) ref -> zero-ref single-def "field V152._token (fldOffset=0x4)" P-INDEP ;* V347 tmp317 [V347 ] ( 0, 0 ) int -> zero-ref single-def "field V152._position (fldOffset=0x8)" P-INDEP ;* V348 tmp318 [V348 ] ( 0, 0 ) int -> zero-ref single-def "field V152._tokenIndex (fldOffset=0xc)" P-INDEP
-;* V349 tmp319 [V349,T227] ( 0, 0 ) int -> zero-ref single-def "field V154._id (fldOffset=0x0)" P-INDEP -;* V350 tmp320 [V350,T228] ( 0, 0 ) int -> zero-ref single-def "field V155._id (fldOffset=0x0)" P-INDEP
+;* V349 tmp319 [V349,T228] ( 0, 0 ) int -> zero-ref single-def "field V154._id (fldOffset=0x0)" P-INDEP +;* V350 tmp320 [V350,T229] ( 0, 0 ) int -> zero-ref single-def "field V155._id (fldOffset=0x0)" P-INDEP
; V351 tmp321 [V351,T188] ( 3, 1.50) ref -> esi single-def "field V156._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V352 tmp322 [V352 ] ( 0, 0 ) ref -> zero-ref single-def "field V156._token (fldOffset=0x4)" P-INDEP ;* V353 tmp323 [V353 ] ( 0, 0 ) int -> zero-ref single-def "field V156._position (fldOffset=0x8)" P-INDEP @@ -377,8 +377,8 @@ ;* V366 tmp336 [V366 ] ( 0, 0 ) ref -> zero-ref single-def "field V181._token (fldOffset=0x4)" P-INDEP ;* V367 tmp337 [V367 ] ( 0, 0 ) int -> zero-ref single-def "field V181._position (fldOffset=0x8)" P-INDEP ;* V368 tmp338 [V368 ] ( 0, 0 ) int -> zero-ref single-def "field V181._tokenIndex (fldOffset=0xc)" P-INDEP
-;* V369 tmp339 [V369,T229] ( 0, 0 ) int -> zero-ref single-def "field V183._id (fldOffset=0x0)" P-INDEP -;* V370 tmp340 [V370,T230] ( 0, 0 ) int -> zero-ref single-def "field V184._id (fldOffset=0x0)" P-INDEP
+;* V369 tmp339 [V369,T230] ( 0, 0 ) int -> zero-ref single-def "field V183._id (fldOffset=0x0)" P-INDEP +;* V370 tmp340 [V370,T231] ( 0, 0 ) int -> zero-ref single-def "field V184._id (fldOffset=0x0)" P-INDEP
; V371 tmp341 [V371,T189] ( 3, 1.50) ref -> esi single-def "field V185._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V372 tmp342 [V372 ] ( 0, 0 ) ref -> zero-ref single-def "field V185._token (fldOffset=0x4)" P-INDEP ;* V373 tmp343 [V373 ] ( 0, 0 ) int -> zero-ref single-def "field V185._position (fldOffset=0x8)" P-INDEP @@ -403,7 +403,7 @@ ; V392 tmp362 [V392 ] ( 3, 1.50) int -> [ebp-0x12C] do-not-enreg[X] addr-exposed "field V213.<Position>k__BackingField (fldOffset=0xc)" P-DEP ; V393 tmp363 [V393,T161] ( 2, 2 ) int -> [ebp-0x140] do-not-enreg[H] hidden-struct-arg "field V219.<Start>k__BackingField (fldOffset=0x0)" P-DEP ; V394 tmp364 [V394,T162] ( 2, 2 ) int -> [ebp-0x13C] do-not-enreg[H] hidden-struct-arg "field V219.<Length>k__BackingField (fldOffset=0x4)" P-DEP
-;* V395 tmp365 [V395,T231] ( 0, 0 ) int -> zero-ref single-def "field V224._id (fldOffset=0x0)" P-INDEP
+;* V395 tmp365 [V395,T232] ( 0, 0 ) int -> zero-ref single-def "field V224._id (fldOffset=0x0)" P-INDEP
; V396 tmp366 [V396 ] ( 3, 2.50) ref -> [ebp-0x150] do-not-enreg[X] addr-exposed "field V225._nodeOrParent (fldOffset=0x0)" P-DEP ...

+19 (+1.79%) : 6999.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 this [V00,T00] ( 28, 57.50) byref -> esi this single-def ; V01 arg1 [V01,T17] ( 4, 3.50) byref -> [ebp-0x2C] single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> [ebp-0x14]
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> [ebp-0x14]
; V03 loc1 [V03 ] ( 36, 70.50) struct (16) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [ebp-0x28]
+; V04 loc2 [V04,T08] ( 6, 8 ) ushort -> [ebp-0x28]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V08 tmp1 [V08,T07] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
+; V08 tmp1 [V08,T06] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
; V09 tmp2 [V09,T09] ( 4, 8 ) int -> ecx "Inline stloc first use temp" ;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp4 [V11,T30] ( 2, 2 ) int -> eax "Inlining Arg" @@ -36,10 +36,10 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V26 tmp19 [V26,T15] ( 4, 8 ) int -> eax "Inline stloc first use temp" ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V28 tmp21 [V28,T08] ( 4, 10 ) ushort -> edx "Inline stloc first use temp" -; V29 tmp22 [V29,T16] ( 4, 8 ) int -> edx "Inline stloc first use temp"
+; V28 tmp21 [V28,T07] ( 4, 10 ) ushort -> edx "Inline stloc first use temp" +; V29 tmp22 [V29,T16] ( 4, 8 ) int -> eax "Inline stloc first use temp"
;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp24 [V31,T05] ( 4, 16 ) int -> esi "Inlining Arg"
+; V31 tmp24 [V31,T04] ( 4, 16 ) int -> esi "Inlining Arg"
;* V32 tmp25 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp27 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -62,7 +62,7 @@ ; V51 GsCookie [V51 ] ( 1, 1 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V52 LocAllocSP [V52,T33] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar" ; V53 cse0 [V53,T31] ( 3, 1.50) int -> eax "CSE - conservative"
-; V54 cse1 [V54,T06] ( 4, 16 ) int -> ecx "CSE - moderate"
+; V54 cse1 [V54,T05] ( 4, 16 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 40 @@ -84,40 +84,36 @@ G_M25128_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; byrRegs +[edi] ;; size=31 bbWeight=1 PerfScore 9.25 G_M25128_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov bword ptr [ebp-0x2C], edi - ; GC ptr vars +{V01}
mov gword ptr [edi], 0xD1FFAB1E
- mov edi, bword ptr [ebp-0x2C] - ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=6 bbWeight=1 PerfScore 1.00
G_M25128_IG03: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- ; GC ptr vars -{V01}
mov ecx, dword ptr [esi+0x08] cmp ecx, dword ptr [esi+0x04]
- jge G_M25128_IG27
+ jge G_M25128_IG23
;; size=12 bbWeight=8 PerfScore 48.00 G_M25128_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ecx, dword ptr [esi+0x08] lea eax, [ecx+0x01] mov dword ptr [esi+0x08], eax cmp ecx, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx ebx, word ptr [eax+2*ecx] test ebx, ebx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=32 bbWeight=2 PerfScore 25.50 G_M25128_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref ; byrRegs -[eax] mov eax, ebx test eax, eax
- je G_M25128_IG32
+ je G_M25128_IG28
;; size=10 bbWeight=8 PerfScore 12.00 G_M25128_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz cmp eax, 44
- je G_M25128_IG28
+ je G_M25128_IG24
cmp eax, 61
- je G_M25128_IG30
+ je G_M25128_IG26
mov dword ptr [ebp-0x14], eax mov ecx, eax call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte] @@ -159,137 +155,143 @@ G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 mov ecx, ebx mov eax, dword ptr [esi+0x08] cmp eax, dword ptr [esi+0x04]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edx, [eax+0x01] mov dword ptr [esi+0x08], edx cmp eax, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov edx, bword ptr [esi] ; byrRegs +[edx] movzx edx, word ptr [edx+2*eax] ; byrRegs -[edx] test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=43 bbWeight=0.50 PerfScore 8.50 G_M25128_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ebx, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
test edx, edx
- je G_M25128_IG51
+ je G_M25128_IG49
test ecx, ecx
- je SHORT G_M25128_IG15 - ;; size=12 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M25128_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref cmp edx, ecx
- je G_M25128_IG52
+ je G_M25128_IG50
;; size=8 bbWeight=2 PerfScore 2.50
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - test ecx, ecx - jne SHORT G_M25128_IG17 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 44 - je G_M25128_IG58 - cmp edx, 61 - je G_M25128_IG58 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov dword ptr [ebp-0x28], ecx - test ecx, ecx - jne SHORT G_M25128_IG19 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M25128_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 39 - je G_M25128_IG63 - cmp edx, 34 - je G_M25128_IG63 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp edx, 92
- jne G_M25128_IG48
+ jne G_M25128_IG46
;; size=9 bbWeight=4 PerfScore 5.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov edx, dword ptr [esi+0x08] cmp edx, dword ptr [esi+0x04]
- jge G_M25128_IG35
+ jge G_M25128_IG33
mov edx, dword ptr [esi+0x08] lea eax, [edx+0x01] mov dword ptr [esi+0x08], eax cmp edx, dword ptr [esi+0x04]
- jae G_M25128_IG62
+ jae G_M25128_IG60
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx edx, word ptr [eax+2*edx] test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=44 bbWeight=2 PerfScore 37.50
-G_M25128_IG21: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; byrRegs -[eax] cmp edx, 61
- ja G_M25128_IG38 - cmp edx, 39
ja G_M25128_IG36
+ cmp edx, 39 + ja G_M25128_IG34
cmp edx, 34
- je SHORT G_M25128_IG26
+ je SHORT G_M25128_IG22
cmp edx, 39 mov bword ptr [ebp-0x2C], edi ; GC ptr vars +{V01}
- jne G_M25128_IG63
+ jne G_M25128_IG61
;; size=35 bbWeight=2 PerfScore 12.00
-G_M25128_IG22: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M25128_IG18: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
; byrRegs -[edi] mov eax, dword ptr [ebp-0x20] mov ebx, bword ptr [ebp-0x1C] ; byrRegs +[ebx] mov edi, dword ptr [ebp-0x18] cmp eax, edi
- jae G_M25128_IG41
+ jae G_M25128_IG39
mov word ptr [ebx+2*eax], dx inc eax mov dword ptr [ebp-0x20], eax ;; size=25 bbWeight=2 PerfScore 13.00
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; byrRegs -[ebx]
- mov edx, dword ptr [esi+0x08] - cmp edx, dword ptr [esi+0x04] - jge G_M25128_IG50
+ mov eax, dword ptr [esi+0x08] + cmp eax, dword ptr [esi+0x04] + jge G_M25128_IG48
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - mov edx, dword ptr [esi+0x08] - lea eax, [edx+0x01] - mov dword ptr [esi+0x08], eax - cmp edx, dword ptr [esi+0x04] - jae G_M25128_IG62 - mov eax, bword ptr [esi] - ; byrRegs +[eax] - movzx edx, word ptr [eax+2*edx]
+G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + mov eax, dword ptr [esi+0x08] + lea edx, [eax+0x01] + mov dword ptr [esi+0x08], edx + cmp eax, dword ptr [esi+0x04] + jae G_M25128_IG60 + mov edx, bword ptr [esi] + ; byrRegs +[edx] + movzx edx, word ptr [edx+2*eax] + ; byrRegs -[edx]
test edx, edx
- je G_M25128_IG63
+ je G_M25128_IG61
;; size=32 bbWeight=2 PerfScore 25.50
-G_M25128_IG25: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - ; byrRegs -[eax]
+G_M25128_IG21: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov ebx, edx
- mov ecx, dword ptr [ebp-0x28]
mov edi, bword ptr [ebp-0x2C] ; byrRegs +[edi] jmp G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 17.00 -G_M25128_IG26: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
+ ;; size=10 bbWeight=4 PerfScore 13.00 +G_M25128_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; GC ptr vars -{V01} mov bword ptr [ebp-0x2C], edi ...

+14 (+7.37%) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr" -; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr" +; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local" -; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local" +; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov edx, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[edx] - mov ecx, edx
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ebx, gword ptr [edi+4*edx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx] - ; gcrRegs -[edx] - mov edx, dword ptr [edx+0x2C] - call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx] + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebx+0x2C] + call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] @@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=37 bbWeight=8 PerfScore 166.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01 V10} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V11} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp G_M59545_IG03 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V11}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_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 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
; ============================================================

coreclr_tests.run.windows.x86.checked.mch

-20 (-15.87%) : 190697.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================

-20 (-15.87%) : 452464.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================

-22 (-10.58%) : 305383.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
; ============================================================

+47 (+4.35%) : 165847.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)

@@ -12,12 +12,12 @@ ; V01 loc0 [V01 ] ( 10, 8.00) struct (24) [ebp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V02 loc1 [V02,T18] ( 7, 10 ) ref -> [ebp-0x54] class-hnd EH-live spill-single-def <<unknown class>> ; V03 loc2 [V03,T11] ( 5, 20 ) ref -> edi class-hnd <<unknown class>>
-; V04 loc3 [V04,T16] ( 6, 14 ) ref -> ebx class-hnd exact <System.String> -; V05 loc4 [V05,T17] ( 6, 14 ) ref -> eax class-hnd exact <System.String>
+; V04 loc3 [V04,T17] ( 5, 12 ) ref -> ebx class-hnd exact <System.String> +; V05 loc4 [V05,T16] ( 6, 12 ) ref -> eax class-hnd exact <System.String>
; V06 loc5 [V06,T19] ( 7, 10 ) ref -> [ebp-0x58] class-hnd EH-live spill-single-def <<unknown class>>
-; V07 loc6 [V07,T10] ( 8, 22 ) ref -> edi class-hnd <System.String>
+; V07 loc6 [V07,T10] ( 7, 20 ) ref -> edi class-hnd <System.String>
; V08 loc7 [V08 ] ( 12, 48 ) ref -> [ebp-0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V09 loc8 [V09,T00] ( 26, 54 ) ref -> ebx class-hnd exact <System.String>
+; V09 loc8 [V09,T00] ( 21, 44 ) ref -> ebx class-hnd exact <System.String>
; V10 loc9 [V10 ] ( 11, 44 ) ref -> [ebp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ;* V11 tmp0 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> @@ -48,7 +48,7 @@ ; V37 tmp26 [V37,T22] ( 2, 8 ) byref -> ebx "Inlining Arg" ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp29 [V40,T02] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V40 tmp29 [V40,T02] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp30 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp32 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -64,7 +64,7 @@ ; V53 tmp42 [V53,T24] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp44 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V56 tmp45 [V56,T03] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V56 tmp45 [V56,T03] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V57 tmp46 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp47 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -80,7 +80,7 @@ ; V69 tmp58 [V69,T26] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V70 tmp59 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V71 tmp60 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V72 tmp61 [V72,T04] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V72 tmp61 [V72,T04] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V73 tmp62 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp63 [V74 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V75 tmp64 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -96,7 +96,7 @@ ; V85 tmp74 [V85,T28] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V88 tmp77 [V88,T05] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp77 [V88,T05] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V89 tmp78 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V90 tmp79 [V90 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V91 tmp80 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -112,7 +112,7 @@ ; V101 tmp90 [V101,T30] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V102 tmp91 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V103 tmp92 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V104 tmp93 [V104,T06] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V104 tmp93 [V104,T06] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V105 tmp94 [V105 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V106 tmp95 [V106 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V107 tmp96 [V107 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -128,7 +128,7 @@ ; V117 tmp106 [V117,T32] ( 2, 8 ) byref -> edi "Inlining Arg" ;* V118 tmp107 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V119 tmp108 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V120 tmp109 [V120,T07] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V120 tmp109 [V120,T07] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V121 tmp110 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V122 tmp111 [V122 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V123 tmp112 [V123 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -144,8 +144,8 @@ ; V133 tmp122 [V133,T34] ( 2, 8 ) byref -> ebx "Inlining Arg" ;* V134 tmp123 [V134 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V135 tmp124 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V136 tmp125 [V136,T08] ( 6, 28 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> -; V137 tmp126 [V137,T09] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V136 tmp125 [V136,T09] ( 5, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> +; V137 tmp126 [V137,T08] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V138 tmp127 [V138 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V139 tmp128 [V139 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V140 tmp129 [V140 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -307,7 +307,7 @@ G_M13552_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] mov ecx, dword ptr [ebp-0x30] cmp ecx, dword ptr [ebp-0x24]
- ja G_M13552_IG46
+ ja G_M13552_IG54
mov edx, bword ptr [ebp-0x28] ; byrRegs +[edx] lea edi, bword ptr [edx+2*ecx] @@ -376,7 +376,7 @@ G_M13552_IG08: ; bbWeight=1, gcVars=00000000000000000000000000040000 {V02 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je SHORT G_M13552_IG14
+ je SHORT G_M13552_IG15
;; size=12 bbWeight=1 PerfScore 4.50 G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x54] @@ -400,15 +400,42 @@ G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 push gword ptr [edi+0x08] call [<unknown method>] ; gcrRegs -[ecx edx edi]
+ test ebx, ebx + jne SHORT G_M13552_IG14 + ;; size=44 bbWeight=4 PerfScore 87.00 +G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + test eax, eax + jne SHORT G_M13552_IG13 + ;; size=4 bbWeight=2 PerfScore 2.50 +G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax ebx] + mov ecx, gword ptr [ebp-0x54] + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[ecx] + test eax, eax + jne SHORT G_M13552_IG09 + ;; size=13 bbWeight=4 PerfScore 21.00 +G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M13552_IG15 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] +[eax ebx] + push -1 + push -1
mov ecx, ebx ; gcrRegs +[ecx]
- or ecx, eax - ; gcrRegs -[ecx] - je SHORT G_M13552_IG11 - ;; size=46 bbWeight=4 PerfScore 88.00 -G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz - test ebx, ebx - je SHORT G_M13552_IG13
+ mov edx, eax + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx ebx] + mov ecx, eax + ; gcrRegs +[ecx] + call CORINFO_HELP_THROW + ; gcrRegs -[eax ecx] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M13552_IG14: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax ebx esi]
test eax, eax je SHORT G_M13552_IG13 lea ecx, bword ptr [ebx+0x08] @@ -430,59 +457,32 @@ G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs= xor edx, edx call [<unknown method>] ; byrRegs -[ebx]
- ;; size=38 bbWeight=2 PerfScore 34.00 -G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp-0x54] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx] - test eax, eax - jne SHORT G_M13552_IG09 - ;; size=13 bbWeight=4 PerfScore 21.00 -G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M13552_IG14 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] +[eax ebx] - push -1 - push -1 - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, eax - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - mov ecx, eax - ; gcrRegs +[ecx] - call CORINFO_HELP_THROW - ; gcrRegs -[eax ecx] - int3 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M13552_IG14: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[esi]
+ jmp SHORT G_M13552_IG11 + ;; size=36 bbWeight=2 PerfScore 35.50 +G_M13552_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x54] ; gcrRegs +[ecx] ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx]
- jmp SHORT G_M13552_IG17
+ jmp SHORT G_M13552_IG18
;; size=11 bbWeight=1 PerfScore 6.00
-G_M13552_IG15: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13552_IG16: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi] ; GC ptr vars +{V02 V18} cmp gword ptr [ebp-0x54], 0
- je SHORT G_M13552_IG16
+ je SHORT G_M13552_IG17
mov ecx, gword ptr [ebp-0x54] ; gcrRegs +[ecx] ; GC ptr vars -{V02 V18} call [<unknown method>] ; gcrRegs -[ecx] ;; size=15 bbWeight=0 PerfScore 0.00
-G_M13552_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13552_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M13552_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] @@ -491,15 +491,15 @@ G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov gword ptr [ebp-0x58], eax ; GC ptr vars +{V06} ;; size=12 bbWeight=1 PerfScore 6.00
-G_M13552_IG18: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M13552_IG19: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, eax ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M13552_IG42
+ je G_M13552_IG50
;; size=16 bbWeight=1 PerfScore 4.50
-G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M13552_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x58] ; gcrRegs +[ecx] call [<unknown method>] @@ -522,39 +522,16 @@ G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov gword ptr [ebp-0x40], eax mov edx, gword ptr [ebp-0x40] ; gcrRegs +[edx]
- mov ecx, ebx - ; gcrRegs +[ecx] - or ecx, edx - ; gcrRegs -[ecx] - je SHORT G_M13552_IG21 - ;; size=48 bbWeight=4 PerfScore 68.00 -G_M13552_IG20: ; bbWeight=2, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax]
test ebx, ebx ...

+47 (+4.37%) : 167923.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)

@@ -12,12 +12,12 @@ ; V01 loc0 [V01 ] ( 10, 8.00) struct (24) [ebp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V02 loc1 [V02,T18] ( 7, 10 ) ref -> [ebp-0x54] class-hnd EH-live spill-single-def <<unknown class>> ; V03 loc2 [V03,T11] ( 5, 20 ) ref -> edi class-hnd <<unknown class>>
-; V04 loc3 [V04,T16] ( 6, 14 ) ref -> ebx class-hnd exact <System.String> -; V05 loc4 [V05,T17] ( 6, 14 ) ref -> eax class-hnd exact <System.String>
+; V04 loc3 [V04,T17] ( 5, 12 ) ref -> ebx class-hnd exact <System.String> +; V05 loc4 [V05,T16] ( 6, 12 ) ref -> eax class-hnd exact <System.String>
; V06 loc5 [V06,T19] ( 7, 10 ) ref -> [ebp-0x58] class-hnd EH-live spill-single-def <<unknown class>>
-; V07 loc6 [V07,T10] ( 8, 22 ) ref -> edi class-hnd <System.String>
+; V07 loc6 [V07,T10] ( 7, 20 ) ref -> edi class-hnd <System.String>
; V08 loc7 [V08 ] ( 12, 48 ) ref -> [ebp-0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V09 loc8 [V09,T00] ( 26, 54 ) ref -> ebx class-hnd exact <System.String>
+; V09 loc8 [V09,T00] ( 21, 44 ) ref -> ebx class-hnd exact <System.String>
; V10 loc9 [V10 ] ( 11, 44 ) ref -> [ebp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ;* V11 tmp0 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> @@ -48,7 +48,7 @@ ; V37 tmp26 [V37,T22] ( 2, 8 ) byref -> ebx "Inlining Arg" ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp29 [V40,T02] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V40 tmp29 [V40,T02] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp30 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp32 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -64,7 +64,7 @@ ; V53 tmp42 [V53,T24] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp44 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V56 tmp45 [V56,T03] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V56 tmp45 [V56,T03] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V57 tmp46 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V58 tmp47 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -80,7 +80,7 @@ ; V69 tmp58 [V69,T26] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V70 tmp59 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V71 tmp60 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V72 tmp61 [V72,T04] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V72 tmp61 [V72,T04] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V73 tmp62 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V74 tmp63 [V74 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V75 tmp64 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -96,7 +96,7 @@ ; V85 tmp74 [V85,T28] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V86 tmp75 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V88 tmp77 [V88,T05] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V88 tmp77 [V88,T05] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V89 tmp78 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V90 tmp79 [V90 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V91 tmp80 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -112,7 +112,7 @@ ; V101 tmp90 [V101,T30] ( 2, 8 ) byref -> eax "Inlining Arg" ;* V102 tmp91 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V103 tmp92 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V104 tmp93 [V104,T06] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V104 tmp93 [V104,T06] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V105 tmp94 [V105 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V106 tmp95 [V106 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V107 tmp96 [V107 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -128,7 +128,7 @@ ; V117 tmp106 [V117,T32] ( 2, 8 ) byref -> edi "Inlining Arg" ;* V118 tmp107 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V119 tmp108 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V120 tmp109 [V120,T07] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V120 tmp109 [V120,T07] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V121 tmp110 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V122 tmp111 [V122 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V123 tmp112 [V123 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -144,8 +144,8 @@ ; V133 tmp122 [V133,T34] ( 2, 8 ) byref -> ebx "Inlining Arg" ;* V134 tmp123 [V134 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V135 tmp124 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V136 tmp125 [V136,T08] ( 6, 28 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> -; V137 tmp126 [V137,T09] ( 6, 28 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V136 tmp125 [V136,T09] ( 5, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String> +; V137 tmp126 [V137,T08] ( 6, 24 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
;* V138 tmp127 [V138 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V139 tmp128 [V139 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V140 tmp129 [V140 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -307,7 +307,7 @@ G_M13552_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [<unknown method>] mov ecx, dword ptr [ebp-0x30] cmp ecx, dword ptr [ebp-0x24]
- ja G_M13552_IG46
+ ja G_M13552_IG54
mov edx, bword ptr [ebp-0x28] ; byrRegs +[edx] lea edi, bword ptr [edx+2*ecx] @@ -373,7 +373,7 @@ G_M13552_IG08: ; bbWeight=1, gcVars=00000000000000000000000000040000 {V02 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je SHORT G_M13552_IG14
+ je SHORT G_M13552_IG15
;; size=12 bbWeight=1 PerfScore 4.50 G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x54] @@ -397,15 +397,42 @@ G_M13552_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 push gword ptr [edi+0x08] call [<unknown method>] ; gcrRegs -[ecx edx edi]
+ test ebx, ebx + jne SHORT G_M13552_IG14 + ;; size=44 bbWeight=4 PerfScore 87.00 +G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + test eax, eax + jne SHORT G_M13552_IG13 + ;; size=4 bbWeight=2 PerfScore 2.50 +G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax ebx] + mov ecx, gword ptr [ebp-0x54] + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[ecx] + test eax, eax + jne SHORT G_M13552_IG09 + ;; size=13 bbWeight=4 PerfScore 21.00 +G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M13552_IG15 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[esi] +[eax ebx] + push -1 + push -1
mov ecx, ebx ; gcrRegs +[ecx]
- or ecx, eax - ; gcrRegs -[ecx] - je SHORT G_M13552_IG11 - ;; size=46 bbWeight=4 PerfScore 88.00 -G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz - test ebx, ebx - je SHORT G_M13552_IG13
+ mov edx, eax + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx ebx] + mov ecx, eax + ; gcrRegs +[ecx] + call CORINFO_HELP_THROW + ; gcrRegs -[eax ecx] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M13552_IG14: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[eax ebx esi]
test eax, eax je SHORT G_M13552_IG13 lea ecx, bword ptr [ebx+0x08] @@ -427,59 +454,32 @@ G_M13552_IG10: ; bbWeight=2, gcrefRegs=00000049 {eax ebx esi}, byrefRegs= xor edx, edx call [<unknown method>] ; byrRegs -[ebx]
- ;; size=38 bbWeight=2 PerfScore 34.00 -G_M13552_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp-0x54] - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx] - test eax, eax - jne SHORT G_M13552_IG09 - ;; size=13 bbWeight=4 PerfScore 21.00 -G_M13552_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M13552_IG14 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M13552_IG13: ; bbWeight=0, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] +[eax ebx] - push -1 - push -1 - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, eax - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - mov ecx, eax - ; gcrRegs +[ecx] - call CORINFO_HELP_THROW - ; gcrRegs -[eax ecx] - int3 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M13552_IG14: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[esi]
+ jmp SHORT G_M13552_IG11 + ;; size=36 bbWeight=2 PerfScore 35.50 +G_M13552_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x54] ; gcrRegs +[ecx] ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx]
- jmp SHORT G_M13552_IG17
+ jmp SHORT G_M13552_IG18
;; size=11 bbWeight=1 PerfScore 6.00
-G_M13552_IG15: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13552_IG16: ; bbWeight=0, gcVars=00000000000000000000000000040000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi] ; GC ptr vars +{V02 V18} cmp gword ptr [ebp-0x54], 0
- je SHORT G_M13552_IG16
+ je SHORT G_M13552_IG17
mov ecx, gword ptr [ebp-0x54] ; gcrRegs +[ecx] ; GC ptr vars -{V02 V18} call [<unknown method>] ; gcrRegs -[ecx] ;; size=15 bbWeight=0 PerfScore 0.00
-G_M13552_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13552_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=0 PerfScore 0.00
-G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M13552_IG18: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] @@ -488,15 +488,15 @@ G_M13552_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov gword ptr [ebp-0x58], eax ; GC ptr vars +{V06} ;; size=12 bbWeight=1 PerfScore 6.00
-G_M13552_IG18: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M13552_IG19: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V06}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, eax ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je G_M13552_IG42
+ je G_M13552_IG50
;; size=16 bbWeight=1 PerfScore 4.50
-G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M13552_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x58] ; gcrRegs +[ecx] call [<unknown method>] @@ -519,39 +519,16 @@ G_M13552_IG19: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov gword ptr [ebp-0x40], eax mov edx, gword ptr [ebp-0x40] ; gcrRegs +[edx]
- mov ecx, ebx - ; gcrRegs +[ecx] - or ecx, edx - ; gcrRegs -[ecx] - je SHORT G_M13552_IG21 - ;; size=49 bbWeight=4 PerfScore 76.00 -G_M13552_IG20: ; bbWeight=2, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax]
test ebx, ebx ...

+37 (+4.74%) : 482261.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
; 8 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; @@ -61,7 +61,7 @@ ;* V49 tmp41 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V50 tmp42 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V51 tmp43 [V51,T17] ( 3, 2.61) int -> [ebp-0x50] spill-single-def "Inlining Arg"
-; V52 tmp44 [V52,T15] ( 3, 3.26) int -> edi "spilling arg"
+; V52 tmp44 [V52,T15] ( 3, 3.26) int -> eax "spilling arg"
; V53 tmp45 [V53,T22] ( 3, 2.05) ref -> ebx class-hnd single-def "Inline stloc first use temp" <<unknown class>> ;* V54 tmp46 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]> ;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP @@ -118,7 +118,7 @@ G_M30652_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=43 bbWeight=1 PerfScore 12.58 G_M30652_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref test esi, esi
- je G_M30652_IG41
+ je G_M30652_IG45
mov gword ptr [ebp-0x58], esi ; GC ptr vars +{V01} mov eax, dword ptr [esi+0x04] @@ -128,7 +128,7 @@ G_M30652_IG03: ; bbWeight=1, gcVars=0000000000000008 {V01}, gcrefRegs=000 mov ecx, dword ptr [ebp+0x10] lea edx, [eax+8*ecx] cmp edx, 256
- jg G_M30652_IG42
+ jg G_M30652_IG46
mov ecx, -512 add ecx, esp jb SHORT G_M30652_IG04 @@ -174,7 +174,7 @@ G_M30652_IG06: ; bbWeight=1.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcr arg pop 2 mov esi, dword ptr [ebp-0x1C] cmp esi, dword ptr [ebp-0x14]
- ja G_M30652_IG43
+ ja G_M30652_IG47
;; size=45 bbWeight=1.00 PerfScore 37.01 G_M30652_IG07: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz mov edi, bword ptr [ebp-0x18] @@ -201,7 +201,7 @@ G_M30652_IG08: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 mov eax, gword ptr [ebx+0x24] ; gcrRegs +[eax] test dword ptr [eax+0x1C], 0xD1FFAB1E
- je G_M30652_IG44
+ je G_M30652_IG48
cmp edx, 4 jle G_M30652_IG17 ;; size=30 bbWeight=1 PerfScore 8.50 @@ -209,7 +209,7 @@ G_M30652_IG09: ; bbWeight=0.63, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcrRegs -[eax] ; GC ptr vars -{V69} cmp byte ptr [ebx+0x33], 0
- jne G_M30652_IG45
+ jne G_M30652_IG49
;; size=10 bbWeight=0.63 PerfScore 2.54 G_M30652_IG10: ; bbWeight=0.63, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref mov ecx, gword ptr [ebx+0x20] @@ -220,7 +220,7 @@ G_M30652_IG10: ; bbWeight=0.63, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; GC ptr vars +{V25} mov bword ptr [ebp-0x34], edi cmp dword ptr [eax+0x04], 0
- jbe G_M30652_IG40
+ jbe G_M30652_IG44
lea ecx, bword ptr [eax+0x08] ; gcrRegs -[ecx] ; byrRegs +[ecx] @@ -232,12 +232,12 @@ G_M30652_IG10: ; bbWeight=0.63, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov ecx, dword ptr [ebx+0x28] ; byrRegs -[ecx] test esi, esi
- jle G_M30652_IG24
+ jle G_M30652_IG31
;; size=47 bbWeight=0.63 PerfScore 10.15 G_M30652_IG11: ; bbWeight=0.65, gcVars=0000000000010000 {V25}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[edx edi] cmp dword ptr [eax+0x04], ecx
- je G_M30652_IG22
+ je G_M30652_IG28
;; size=9 bbWeight=0.65 PerfScore 2.61 G_M30652_IG12: ; bbWeight=0.65, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] @@ -261,28 +261,25 @@ G_M30652_IG13: ; bbWeight=0.65, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov eax, edi sar eax, 31 test eax, eax
- jne G_M30652_IG39 - cmp edi, 18
+ jne G_M30652_IG43 + mov eax, edi + cmp eax, 18
jne SHORT G_M30652_IG16
- ;; size=42 bbWeight=0.65 PerfScore 6.68 -G_M30652_IG14: ; bbWeight=0.33, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - push 18 - mov ecx, dword ptr [ebp-0x50] - mov edx, dword ptr [ebp-0x40] - call [<unknown method>] - jmp SHORT G_M30652_IG23 - ;; size=16 bbWeight=0.33 PerfScore 2.61
+ ;; size=44 bbWeight=0.65 PerfScore 6.84 +G_M30652_IG14: ; bbWeight=0.33, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + jmp G_M30652_IG29 + ;; size=5 bbWeight=0.33 PerfScore 0.65
G_M30652_IG15: ; bbWeight=0.17, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz mov edx, esi jmp SHORT G_M30652_IG13 ;; size=4 bbWeight=0.17 PerfScore 0.39
-G_M30652_IG16: ; bbWeight=0.33, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - push edi
+G_M30652_IG16: ; bbWeight=0.33, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + push eax
mov ecx, dword ptr [ebp-0x50] mov edx, dword ptr [ebp-0x40] call [<unknown method>]
- jmp SHORT G_M30652_IG23 - ;; size=15 bbWeight=0.33 PerfScore 2.61
+ jmp G_M30652_IG30 + ;; size=18 bbWeight=0.33 PerfScore 2.61
G_M30652_IG17: ; bbWeight=0.37, gcVars=0000000008000000 {V69}, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, gcvars, byref ; byrRegs +[edi] ; GC ptr vars -{V25} +{V69} @@ -295,13 +292,22 @@ G_M30652_IG18: ; bbWeight=0.37, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; byrRegs -[edi] xor eax, eax test edx, edx
- jle SHORT G_M30652_IG26
+ jg SHORT G_M30652_IG21
;; size=6 bbWeight=0.37 PerfScore 0.55
-G_M30652_IG19: ; bbWeight=0.26, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M30652_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; GC ptr vars -{V69} + cmp byte ptr [ebp+0x08], 0 + je SHORT G_M30652_IG25 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M30652_IG20: ; bbWeight=0.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + jmp G_M30652_IG38 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M30652_IG21: ; bbWeight=0.26, gcVars=0000000008000000 {V69}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V69}
mov esi, gword ptr [ebx+0x20] ; gcrRegs +[esi] ;; size=3 bbWeight=0.26 PerfScore 0.53
-G_M30652_IG20: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M30652_IG22: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x68], esi ; GC ptr vars +{V79} mov edi, esi @@ -315,21 +321,56 @@ G_M30652_IG20: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 movzx esi, word ptr [esi+2*eax] ; byrRegs -[esi] cmp ecx, dword ptr [edi+0x04]
- jae G_M30652_IG40
+ jae G_M30652_IG44
mov word ptr [edi+2*ecx+0x08], si inc eax cmp eax, edx mov esi, gword ptr [ebp-0x68] ; gcrRegs +[esi]
- jl SHORT G_M30652_IG20
+ jl SHORT G_M30652_IG22
;; size=43 bbWeight=0.96 PerfScore 14.65
-G_M30652_IG21: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M30652_IG23: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi edi] ; GC ptr vars -{V69 V79}
- jmp SHORT G_M30652_IG26
+ jmp SHORT G_M30652_IG19
;; size=2 bbWeight=0.26 PerfScore 0.53
-G_M30652_IG22: ; bbWeight=0.01, gcVars=0000000000010000 {V25}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V25}
+G_M30652_IG24: ; bbWeight=0.00, gcVars=0000080000000000 {V35}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi] + ; GC ptr vars +{V35 V43} + mov ecx, gword ptr [ebx+0x20] + ; gcrRegs +[ecx] + mov edx, dword ptr [ebx+0x28] + mov eax, edx + movzx esi, word ptr [esi+2*edi+0x08] + ; gcrRegs -[esi] + cmp eax, dword ptr [ecx+0x04] + jae G_M30652_IG44 + mov word ptr [ecx+2*eax+0x08], si + inc edx + mov dword ptr [ebx+0x28], edx + inc edi + mov esi, dword ptr [ebp-0x54] + cmp esi, edi + jg SHORT G_M30652_IG27 + ;; size=39 bbWeight=0.00 PerfScore 0.01 +G_M30652_IG25: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[ecx] + ; GC ptr vars -{V35 V43} + cmp byte ptr [ebx+0x30], 0 + je SHORT G_M30652_IG35 + ;; size=6 bbWeight=1 PerfScore 4.00 +G_M30652_IG26: ; bbWeight=0.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M30652_IG34 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M30652_IG27: ; bbWeight=0.00, gcVars=0000080000000000 {V35}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V35 V43} + mov esi, gword ptr [ebp-0x60] + ; gcrRegs +[esi] + jmp G_M30652_IG39 + ;; size=8 bbWeight=0.00 PerfScore 0.00 +G_M30652_IG28: ; bbWeight=0.01, gcVars=0000000000010000 {V25}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[esi] + ; GC ptr vars -{V35 V43} +{V25}
push 0 mov ecx, ebx ; gcrRegs +[ecx] @@ -341,44 +382,57 @@ G_M30652_IG22: ; bbWeight=0.01, gcVars=0000000000010000 {V25}, gcrefRegs= mov ecx, eax jmp G_M30652_IG12 ;; size=23 bbWeight=0.01 PerfScore 0.09
-G_M30652_IG23: ; bbWeight=0.65, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M30652_IG29: ; bbWeight=0.33, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + push 18 + mov ecx, dword ptr [ebp-0x50] + mov edx, dword ptr [ebp-0x40] + call [<unknown method>] + ;; size=14 bbWeight=0.33 PerfScore 1.96 +G_M30652_IG30: ; bbWeight=0.65, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [ebp-0x4C] add dword ptr [ebx+0x28], edi mov ecx, edi add ecx, dword ptr [ebp-0x44]
+ mov eax, ecx
mov edx, dword ptr [ebp-0x40] lea edx, [edx+2*edi] sub esi, edi test esi, esi mov dword ptr [ebp-0x40], edx
- mov eax, gword ptr [ebp-0x5C] - ; gcrRegs +[eax] - jg G_M30652_IG11 - ;; size=33 bbWeight=0.65 PerfScore 7.33 -G_M30652_IG24: ; bbWeight=0.63, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax]
+ mov ecx, eax + jg SHORT G_M30652_IG33 + ;; size=30 bbWeight=0.65 PerfScore 7.01 +G_M30652_IG31: ; bbWeight=0.63, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V25} xor ecx, ecx ...

libraries.crossgen2.windows.x86.checked.mch

-26 (-20.47%) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -9,13 +9,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) ref -> ecx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> edx class-hnd single-def <System.String> -; V02 arg2 [V02,T06] ( 2, 4.50) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T07] ( 3, 2.50) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> ebx -; V05 loc1 [V05,T00] ( 11, 27.50) int -> esi -; V06 cse0 [V06,T05] ( 5, 7 ) int -> [ebp-0x10] spill-single-def "CSE - moderate" -; V07 cse1 [V07,T01] ( 6, 13.50) int -> edi multi-def "CSE - aggressive"
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> edx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 1, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T08] ( 3, 2.50) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> ebx +; V05 loc1 [V05,T00] ( 8, 25.50) int -> esi +; V06 cse0 [V06,T05] ( 3, 8.50) int -> edi "CSE - moderate" +; V07 cse1 [V07,T06] ( 4, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate" +; V08 cse2 [V08,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
; ; Lcl frame size = 4 @@ -45,39 +46,38 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000 ;; size=4 bbWeight=2 PerfScore 2.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, ebx
- jge SHORT G_M6389_IG07
+ jge SHORT G_M6389_IG08
;; size=4 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, edi
- jae SHORT G_M6389_IG12
+ jae SHORT G_M6389_IG10
movzx eax, word ptr [ecx+2*esi+0x08] mov edi, esi add edi, dword ptr [ebp+0x0C] cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12 - cmp ax, word ptr [edx+2*edi+0x08]
+ jae SHORT G_M6389_IG10 + movzx edi, word ptr [edx+2*edi+0x08] + cmp eax, edi
je SHORT G_M6389_IG03
- ;; size=26 bbWeight=4 PerfScore 54.00 -G_M6389_IG06: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x10] - ;; size=3 bbWeight=2 PerfScore 2.00 -G_M6389_IG07: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, ebx - jge SHORT G_M6389_IG10 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, edi - jae SHORT G_M6389_IG12 - movzx ecx, word ptr [ecx+2*esi+0x08]
+ ;; size=28 bbWeight=4 PerfScore 51.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] + movzx eax, word ptr [ecx+2*esi+0x08] + sub eax, edi + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M6389_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- mov edi, esi - add edi, dword ptr [ebp+0x0C] - cmp edi, dword ptr [edx+0x04] - jae SHORT G_M6389_IG12 - movzx eax, word ptr [edx+2*edi+0x08] - sub ecx, eax - mov eax, ecx - ;; size=28 bbWeight=0.50 PerfScore 6.00
+ mov eax, edi + sub eax, dword ptr [ebp+0x08] + ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -86,24 +86,11 @@ G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edx] - sub edi, dword ptr [ebp+0x08] - mov eax, edi - ;; size=5 bbWeight=0.50 PerfScore 1.12 -G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6389_IG10: ; 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 127, prolog size 10, PerfScore 94.62, instruction count 57, allocated bytes for code 127 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 101, prolog size 10, PerfScore 83.50, instruction count 47, allocated bytes for code 101 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================

-20 (-15.75%) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -8,14 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -28,51 +30,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -80,25 +83,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -123,6 +119,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 127, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 127 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 107, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 107 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================

-23 (-11.33%) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)

@@ -8,18 +8,19 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 2, 2 ) struct ( 8) [ebp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> -; V01 arg1 [V01,T07] ( 4, 3.50) int -> [ebp-0x10] single-def -; V02 arg2 [V02,T08] ( 3, 2.50) int -> [ebp-0x14] single-def -; V03 arg3 [V03,T03] ( 4, 16 ) ushort -> eax single-def -; V04 loc0 [V04,T00] ( 24, 79 ) int -> edx -; V05 loc1 [V05,T06] ( 8, 10.50) int -> [ebp-0x18]
+; V00 arg0 [V00,T10] ( 2, 2 ) struct ( 8) [ebp+0x0C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> +; V01 arg1 [V01,T08] ( 4, 3.50) int -> [ebp-0x10] single-def +; V02 arg2 [V02,T09] ( 3, 2.50) int -> [ebp-0x14] single-def +; V03 arg3 [V03,T07] ( 2, 8 ) ushort -> [ebp+0x08] single-def +; V04 loc0 [V04,T00] ( 22, 77.50) int -> edx +; V05 loc1 [V05,T06] ( 8, 10.50) int -> registers
; V06 tmp0 [V06,T04] ( 2, 16 ) int -> edx "dup spill" ; V07 tmp1 [V07,T05] ( 2, 16 ) int -> edx "dup spill"
-; V08 tmp2 [V08,T02] ( 5, 17 ) byref -> esi single-def "V00.[000..004)" -; V09 tmp3 [V09,T01] ( 8, 25.50) int -> edi "V00.[004..008)"
+; V08 tmp2 [V08,T03] ( 5, 17 ) byref -> esi single-def "V00.[000..004)" +; V09 tmp3 [V09,T01] ( 7, 25 ) int -> edi "V00.[004..008)" +; V10 cse0 [V10,T02] ( 6, 24 ) int -> registers multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M48691_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,7 +28,7 @@ G_M48691_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 8
mov dword ptr [ebp-0x14], edx mov eax, dword ptr [ebp+0x08] ;; size=15 bbWeight=1 PerfScore 6.50 @@ -36,57 +37,52 @@ G_M48691_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; byrRegs +[esi] mov edi, dword ptr [ebp+0x10] xor ebx, ebx
- mov dword ptr [ebp-0x18], ebx
mov dword ptr [ebp-0x10], ecx lea edx, [ecx-0x01] jmp SHORT G_M48691_IG04
- ;; size=19 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M48691_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref dec edx
- ;; size=1 bbWeight=2 PerfScore 0.50
+ movzx eax, word ptr [ebp+0x08] + ;; size=5 bbWeight=2 PerfScore 2.50
G_M48691_IG04: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz test edx, edx
- jl SHORT G_M48691_IG06
+ jl SHORT G_M48691_IG12
;; size=4 bbWeight=8 PerfScore 10.00 G_M48691_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz cmp edx, edi
- jae G_M48691_IG22
+ jae G_M48691_IG21
movzx ecx, word ptr [esi+2*edx]
- movzx ebx, ax - cmp ecx, ebx
+ mov dword ptr [ebp+0x08], eax + movzx eax, ax + cmp ecx, eax
jne SHORT G_M48691_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00 -G_M48691_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - test edx, edx - jl SHORT G_M48691_IG13 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M48691_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - jmp SHORT G_M48691_IG09
+ ;; size=22 bbWeight=4 PerfScore 23.00 +G_M48691_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz + jmp SHORT G_M48691_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48691_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - mov ebx, dword ptr [ebp-0x18]
+G_M48691_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
inc ebx
- mov dword ptr [ebp-0x18], ebx - ;; size=7 bbWeight=2 PerfScore 4.50 -G_M48691_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ;; size=1 bbWeight=2 PerfScore 0.50 +G_M48691_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
dec edx
- js SHORT G_M48691_IG10
+ js SHORT G_M48691_IG09
cmp edx, edi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
movzx ecx, word ptr [esi+2*edx]
- movzx ebx, ax - cmp ecx, ebx - je SHORT G_M48691_IG08 - ;; size=18 bbWeight=4 PerfScore 24.00 -G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp dword ptr [ebp-0x18], 1 - jg SHORT G_M48691_IG13 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M48691_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ cmp ecx, eax + je SHORT G_M48691_IG07 + ;; size=15 bbWeight=4 PerfScore 23.00 +G_M48691_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz + cmp ebx, 1 + movzx eax, word ptr [ebp+0x08] + jg SHORT G_M48691_IG12 + ;; size=9 bbWeight=0.50 PerfScore 1.12 +G_M48691_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi] mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -94,58 +90,52 @@ G_M48691_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M48691_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M48691_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi] mov ecx, dword ptr [ebp-0x10] mov edx, ecx add edx, dword ptr [ebp-0x14]
- jmp SHORT G_M48691_IG15
+ jmp SHORT G_M48691_IG14
;; size=10 bbWeight=0.50 PerfScore 2.62
-G_M48691_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M48691_IG13: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
inc edx ;; size=1 bbWeight=2 PerfScore 0.50
-G_M48691_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp edx, edi - jge SHORT G_M48691_IG16 - cmp edx, edi - jae SHORT G_M48691_IG22 - movzx ecx, word ptr [esi+2*edx] - movzx ebx, ax - cmp ecx, ebx - jne SHORT G_M48691_IG14 - ;; size=19 bbWeight=4 PerfScore 24.00 -G_M48691_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - cmp edx, edi - jge SHORT G_M48691_IG20 - xor ebx, ebx - mov dword ptr [ebp-0x18], ebx - jmp SHORT G_M48691_IG18 - ;; size=11 bbWeight=0.50 PerfScore 2.25 -G_M48691_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref - mov ebx, dword ptr [ebp-0x18] - inc ebx - mov dword ptr [ebp-0x18], ebx - ;; size=7 bbWeight=2 PerfScore 4.50 -G_M48691_IG18: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz - inc edx
+G_M48691_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
cmp edx, edi jge SHORT G_M48691_IG19 cmp edx, edi
- jae SHORT G_M48691_IG22
+ jae SHORT G_M48691_IG21
movzx ecx, word ptr [esi+2*edx] movzx ebx, ax cmp ecx, ebx
- je SHORT G_M48691_IG17 - ;; size=20 bbWeight=4 PerfScore 25.00 -G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M48691_IG13 + ;; size=19 bbWeight=4 PerfScore 24.00 +G_M48691_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz + xor eax, eax + jmp SHORT G_M48691_IG17 + ;; size=4 bbWeight=0.50 PerfScore 1.12 +G_M48691_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref + inc eax + ;; size=1 bbWeight=2 PerfScore 0.50 +G_M48691_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz + inc edx + cmp edx, edi + jge SHORT G_M48691_IG18 + cmp edx, edi + jae SHORT G_M48691_IG21 + movzx ecx, word ptr [esi+2*edx] + cmp ecx, ebx + je SHORT G_M48691_IG16 + ;; size=17 bbWeight=4 PerfScore 24.00 +G_M48691_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[esi]
- cmp dword ptr [ebp-0x18], 1 - jle SHORT G_M48691_IG11 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M48691_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ cmp eax, 1 + jle SHORT G_M48691_IG10 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M48691_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M48691_IG20: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -153,11 +143,11 @@ G_M48691_IG21: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 12 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M48691_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M48691_IG21: ; 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 203, prolog size 15, PerfScore 140.12, instruction count 88, allocated bytes for code 203 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
+; Total bytes of code 180, prolog size 15, PerfScore 131.50, instruction count 79, allocated bytes for code 180 (MethodHash=af0b41cc) for method System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
; ============================================================

+3 (+3.53%) : 19134.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)

@@ -9,14 +9,14 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 5 ) ref -> esi this class-hnd single-def <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+; V00 this [V00,T00] ( 6, 4 ) ref -> esi this class-hnd single-def <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
; V01 arg1 [V01,T02] ( 3, 3 ) ubyte -> edx single-def
-; V02 arg2 [V02,T04] ( 1, 1 ) struct ( 4) [ebp+0x10] single-def <System.Threading.Tasks.VoidTaskResult> -; V03 arg3 [V03,T03] ( 2, 1.50) int -> eax single-def
+; V02 arg2 [V02,T05] ( 1, 0.50) struct ( 4) [ebp+0x10] single-def <System.Threading.Tasks.VoidTaskResult> +; V03 arg3 [V03,T03] ( 2, 1 ) int -> [ebp+0x0C] single-def
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V06 tmp1 [V06,T01] ( 5, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V07 tmp2 [V07,T05] ( 1, 0.50) ref -> [ebp+0x08] single-def "field V04._source (fldOffset=0x0)" P-INDEP
+; V07 tmp2 [V07,T04] ( 1, 0.50) ref -> [ebp+0x08] single-def "field V04._source (fldOffset=0x0)" P-INDEP
; ; Lcl frame size = 0 @@ -27,13 +27,13 @@ G_M31903_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push esi mov esi, ecx ; gcrRegs +[esi]
- mov eax, dword ptr [ebp+0x0C] - ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M31903_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test dl, dl je SHORT G_M31903_IG04 ;; size=4 bbWeight=1 PerfScore 1.25 G_M31903_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov eax, dword ptr [ebp+0x0C]
or eax, 0xD1FFAB1E mov dword ptr [esi+0x1C], eax call [CORINFO_HELP_READYTORUN_NEW] @@ -53,14 +53,15 @@ G_M31903_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[eax esi] ; byrRegs -[edx] jmp SHORT G_M31903_IG05
- ;; size=51 bbWeight=0.50 PerfScore 8.12 -G_M31903_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=54 bbWeight=0.50 PerfScore 8.62 +G_M31903_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
+ mov eax, dword ptr [ebp+0x0C]
or eax, 0xD1FFAB1E mov dword ptr [esi+0x1C], eax mov eax, dword ptr [ebp+0x10] mov byte ptr [esi+0x20], al
- ;; size=14 bbWeight=1 PerfScore 3.25
+ ;; size=17 bbWeight=0.50 PerfScore 2.12
G_M31903_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[esi] pop esi @@ -69,6 +70,6 @@ G_M31903_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ret 12 ;; size=6 bbWeight=1 PerfScore 3.50
-; Total bytes of code 85, prolog size 5, PerfScore 20.62, instruction count 27, allocated bytes for code 85 (MethodHash=05f08360) for method System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 88, prolog size 5, PerfScore 19.00, instruction count 28, allocated bytes for code 88 (MethodHash=05f08360) for method System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
; ============================================================

+17 (+4.01%) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)

@@ -27,8 +27,8 @@ ; V15 tmp3 [V15 ] ( 4, 9 ) ref -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._array (fldOffset=0x0)" P-DEP ; V16 tmp4 [V16 ] ( 4, 9 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._index (fldOffset=0x4)" P-DEP ; V17 tmp5 [V17 ] ( 2, 1 ) ref -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V06.array (fldOffset=0x0)" P-DEP
-; V18 tmp6 [V18,T07] ( 3, 10 ) ref -> [ebp-0x30] spill-single-def "field V10.Symbol (fldOffset=0x0)" P-INDEP -; V19 tmp7 [V19,T10] ( 2, 8 ) int -> [ebp-0x20] spill-single-def "field V10.ContainingSlot (fldOffset=0x4)" P-INDEP
+; V18 tmp6 [V18,T07] ( 3, 10 ) ref -> [ebp-0x30] "field V10.Symbol (fldOffset=0x0)" P-INDEP +; V19 tmp7 [V19,T10] ( 2, 8 ) int -> [ebp-0x20] "field V10.ContainingSlot (fldOffset=0x4)" P-INDEP
; V20 tmp8 [V20,T11] ( 3, 6 ) ref -> ecx single-def "arr expr" ; V21 tmp9 [V21,T12] ( 3, 6 ) byref -> ecx single-def "BlockOp address local" ;* V22 tmp10 [V22,T19] ( 0, 0 ) byref -> zero-ref single-def "argument with side effect" @@ -65,7 +65,7 @@ G_M7245_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov ecx, gword ptr [esi+eax] ; gcrRegs +[ecx] cmp edi, dword ptr [ecx+0x04]
- jae G_M7245_IG21
+ jae G_M7245_IG22
lea ecx, bword ptr [ecx+8*edi+0x08] ; gcrRegs -[ecx] ; byrRegs +[ecx] @@ -81,7 +81,7 @@ G_M7245_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 mov gword ptr [ebp-0x2C], eax ; GC ptr vars +{V04} cmp edi, -1
- je G_M7245_IG20
+ je G_M7245_IG14
;; size=52 bbWeight=1 PerfScore 20.50 G_M7245_IG03: ; bbWeight=0.50, gcVars=00020000 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref ; gcrRegs -[eax] @@ -158,14 +158,14 @@ G_M7245_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 G_M7245_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov edi, dword ptr [ebp-0x1C] test edi, edi
- jle G_M7245_IG17
+ jle G_M7245_IG21
;; size=11 bbWeight=1 PerfScore 2.25
-G_M7245_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M7245_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov eax, dword ptr [ebp-0x28] mov ecx, gword ptr [esi+eax] ; gcrRegs +[ecx] cmp edi, dword ptr [ecx+0x04]
- jae G_M7245_IG21
+ jae G_M7245_IG22
lea ecx, bword ptr [ecx+8*edi+0x08] ; gcrRegs -[ecx] ; byrRegs +[ecx] @@ -177,8 +177,8 @@ G_M7245_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 ; byrRegs -[ecx] mov dword ptr [ebp-0x20], ecx cmp edi, -1
- je G_M7245_IG19 - ;; size=39 bbWeight=4 PerfScore 61.00
+ je SHORT G_M7245_IG13 + ;; size=35 bbWeight=4 PerfScore 61.00
G_M7245_IG11: ; bbWeight=2, gcVars=00000080 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz ; gcrRegs -[edx] cmp byte ptr [ebx], bl @@ -188,43 +188,75 @@ G_M7245_IG11: ; bbWeight=2, gcVars=00000080 {V18}, gcrefRegs=00000040 {es call [<unknown method>] ; byrRegs -[ecx] test eax, eax
- jne SHORT G_M7245_IG18
+ jne SHORT G_M7245_IG12
mov ecx, ebx ; byrRegs +[ecx] mov edx, edi call [<unknown method>] ; byrRegs -[ecx] test eax, eax
+ je G_M7245_IG21 + mov eax, dword ptr [ebp-0x20] + mov ecx, gword ptr [ebp-0x30] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x30], ecx + mov dword ptr [ebp-0x20], eax + jmp SHORT G_M7245_IG17 + ;; size=48 bbWeight=2 PerfScore 37.00 +G_M7245_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + ; gcrRegs -[ecx]
mov edx, gword ptr [ebp-0x30] ; gcrRegs +[edx]
- je SHORT G_M7245_IG17 - ;; size=33 bbWeight=2 PerfScore 27.00 -G_M7245_IG12: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
+ jmp SHORT G_M7245_IG15 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M7245_IG13: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz + ; gcrRegs -[edx] + mov edx, gword ptr [ebp-0x30] + ; gcrRegs +[edx] + jmp SHORT G_M7245_IG15 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M7245_IG14: ; bbWeight=0.50, gcVars=00020000 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref + ; gcrRegs -[edx] + ; GC ptr vars -{V18} +{V04} + mov eax, gword ptr [ebp-0x2C] + ; gcrRegs +[eax] + jmp G_M7245_IG04 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M7245_IG15: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; gcrRegs -[eax] +[edx] + ; GC ptr vars -{V04}
cmp edi, -1
- je SHORT G_M7245_IG14
+ je SHORT G_M7245_IG18
;; size=5 bbWeight=4 PerfScore 5.00
-G_M7245_IG13: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref
+G_M7245_IG16: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref + mov gword ptr [ebp-0x30], edx + ; GC ptr vars +{V18} + ;; size=3 bbWeight=2 PerfScore 2.00 +G_M7245_IG17: ; bbWeight=2, gcVars=00000080 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref + ; gcrRegs -[edx]
cmp byte ptr [ebx], bl push 0 mov ecx, ebx ; byrRegs +[ecx] mov edx, edi
- ; gcrRegs -[edx]
call [<unknown method>] ; byrRegs -[ecx] mov edx, gword ptr [ebp-0x30] ; gcrRegs +[edx] ;; size=17 bbWeight=2 PerfScore 17.00
-G_M7245_IG14: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M7245_IG18: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz + ; GC ptr vars -{V18} + mov gword ptr [ebp-0x30], edx + ; GC ptr vars +{V18}
mov ecx, edx ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx edx] cmp eax, 8
- jne SHORT G_M7245_IG16 - ;; size=15 bbWeight=4 PerfScore 30.00 -G_M7245_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+ jne SHORT G_M7245_IG20 + ;; size=18 bbWeight=4 PerfScore 34.00 +G_M7245_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov ecx, gword ptr [ebp-0x30] ; gcrRegs +[ecx] ; GC ptr vars -{V18} @@ -236,7 +268,7 @@ G_M7245_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 call [<unknown method>] ; gcrRegs -[eax ecx] test eax, eax
- je SHORT G_M7245_IG16
+ je SHORT G_M7245_IG20
cmp byte ptr [ebx], bl push 0 mov ecx, ebx @@ -245,12 +277,12 @@ G_M7245_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 call [<unknown method>] ; byrRegs -[ecx] ;; size=40 bbWeight=2 PerfScore 38.00
-G_M7245_IG16: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M7245_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov edi, dword ptr [ebp-0x20] test edi, edi jg G_M7245_IG10 ;; size=11 bbWeight=4 PerfScore 9.00
-G_M7245_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M7245_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] ; byrRegs -[ebx] lea esp, [ebp-0x0C] @@ -260,35 +292,11 @@ G_M7245_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, pop ebp ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-G_M7245_IG18: ; bbWeight=1, gcVars=00000080 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ebx] - ; GC ptr vars +{V18} - mov edx, gword ptr [ebp-0x30] - ; gcrRegs +[edx] - jmp SHORT G_M7245_IG12 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M7245_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz - ; gcrRegs -[edx] - mov edx, gword ptr [ebp-0x30] - ; gcrRegs +[edx] - jmp SHORT G_M7245_IG12 - ;; size=5 bbWeight=2 PerfScore 6.00 -G_M7245_IG20: ; bbWeight=0.50, gcVars=00020000 {V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref - ; gcrRegs -[edx] - ; GC ptr vars -{V18} +{V04} - mov eax, gword ptr [ebp-0x2C] - ; gcrRegs +[eax] - jmp G_M7245_IG04 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M7245_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax esi] - ; byrRegs -[ebx] - ; GC ptr vars -{V04}
+G_M7245_IG22: ; 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 424, prolog size 20, PerfScore 325.38, instruction count 138, allocated bytes for code 424 (MethodHash=1c32e3b2) for method Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
+; Total bytes of code 441, prolog size 20, PerfScore 341.38, instruction count 144, allocated bytes for code 441 (MethodHash=1c32e3b2) for method Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
; ============================================================

+11 (+5.91%) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -9,24 +9,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T08] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T09] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T08] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T10] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T07] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T06] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T11] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T09] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T03] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T13] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T12] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr"
; V13 tmp6 [V13,T02] ( 2, 32 ) ref -> ecx "argument with side effect"
-; V14 tmp7 [V14,T05] ( 3, 24 ) byref -> edx "BlockOp address local" -; V15 cse0 [V15,T03] ( 5, 26 ) int -> registers multi-def "CSE - aggressive"
+; V14 tmp7 [V14,T04] ( 3, 24 ) byref -> edx "BlockOp address local" +; V15 cse0 [V15,T05] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - aggressive" +; V16 cse1 [V16,T13] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov ecx, eax call [CORINFO_HELP_READYTORUN_NEWARR_1] ; gcrRegs +[eax] @@ -53,87 +55,85 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=27 bbWeight=1 PerfScore 12.75
+ ;; size=34 bbWeight=1 PerfScore 14.00
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000600 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov ecx, gword ptr [edi+4*ecx+0x08]
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ecx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=35 bbWeight=8 PerfScore 148.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000200 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V10} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V01 V10}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -144,10 +144,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V10} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp SHORT G_M59545_IG03 + ;; size=5 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V10}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -155,11 +166,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG14: ; 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 186, prolog size 16, PerfScore 452.50, instruction count 73, allocated bytes for code 186 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 197, prolog size 16, PerfScore 475.75, instruction count 77, allocated bytes for code 197 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-26 (-20.63%) : 281911.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) ref -> ecx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> edx class-hnd single-def <System.String> -; V02 arg2 [V02,T06] ( 2, 4.50) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T07] ( 3, 2.50) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> ebx -; V05 loc1 [V05,T00] ( 11, 27.50) int -> esi -; V06 cse0 [V06,T05] ( 5, 7 ) int -> [ebp-0x10] spill-single-def "CSE - moderate" -; V07 cse1 [V07,T01] ( 6, 13.50) int -> edi multi-def "CSE - aggressive"
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> edx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 1, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T08] ( 3, 2.50) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> ebx +; V05 loc1 [V05,T00] ( 8, 25.50) int -> esi +; V06 cse0 [V06,T05] ( 3, 8.50) int -> edi "CSE - moderate" +; V07 cse1 [V07,T06] ( 4, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate" +; V08 cse2 [V08,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
; ; Lcl frame size = 4 @@ -44,39 +45,38 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000 ;; size=4 bbWeight=2 PerfScore 2.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, ebx
- jge SHORT G_M6389_IG07
+ jge SHORT G_M6389_IG08
;; size=4 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, edi
- jae SHORT G_M6389_IG12
+ jae SHORT G_M6389_IG10
movzx eax, word ptr [ecx+2*esi+0x08] mov edi, esi add edi, dword ptr [ebp+0x0C] cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12 - cmp ax, word ptr [edx+2*edi+0x08]
+ jae SHORT G_M6389_IG10 + movzx edi, word ptr [edx+2*edi+0x08] + cmp eax, edi
je SHORT G_M6389_IG03
- ;; size=26 bbWeight=4 PerfScore 54.00 -G_M6389_IG06: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x10] - ;; size=3 bbWeight=2 PerfScore 2.00 -G_M6389_IG07: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, ebx - jge SHORT G_M6389_IG10 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, edi - jae SHORT G_M6389_IG12 - movzx ecx, word ptr [ecx+2*esi+0x08]
+ ;; size=28 bbWeight=4 PerfScore 51.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] + movzx eax, word ptr [ecx+2*esi+0x08] + sub eax, edi + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M6389_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- mov edi, esi - add edi, dword ptr [ebp+0x0C] - cmp edi, dword ptr [edx+0x04] - jae SHORT G_M6389_IG12 - movzx eax, word ptr [edx+2*edi+0x08] - sub ecx, eax - mov eax, ecx - ;; size=28 bbWeight=0.50 PerfScore 6.00
+ mov eax, edi + sub eax, dword ptr [ebp+0x08] + ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -85,24 +85,11 @@ G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edx] - sub edi, dword ptr [ebp+0x08] - mov eax, edi - ;; size=5 bbWeight=0.50 PerfScore 1.12 -G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6389_IG10: ; 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 126, prolog size 10, PerfScore 94.62, instruction count 57, allocated bytes for code 126 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 100, prolog size 10, PerfScore 83.50, instruction count 47, allocated bytes for code 100 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================

-12 (-17.39%) : 177130.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 20 ) ref -> esi class-hnd <System.Xml.Schema.XmlSchemaObject> -; V01 tmp0 [V01,T01] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -; V02 tmp1 [V02,T02] ( 3, 2 ) ref -> eax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
+; V00 arg0 [V00,T00] ( 9, 19.50) ref -> esi class-hnd <System.Xml.Schema.XmlSchemaObject> +; V01 tmp0 [V01,T02] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable" +; V02 tmp1 [V02,T01] ( 2, 2 ) ref -> eax class-hnd "spilling QMark2" <System.Xml.Schema.XmlSchema>
; ; Lcl frame size = 0 @@ -29,7 +29,7 @@ G_M32300_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=3 bbWeight=2 PerfScore 4.00 G_M32300_IG04: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test esi, esi
- je SHORT G_M32300_IG06
+ je SHORT G_M32300_IG08
;; size=4 bbWeight=8 PerfScore 10.00 G_M32300_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edx, esi @@ -40,48 +40,31 @@ G_M32300_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 test eax, eax je SHORT G_M32300_IG03 ;; size=16 bbWeight=4 PerfScore 11.00
-G_M32300_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M32300_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- test esi, esi - je SHORT G_M32300_IG12 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M32300_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema - cmp dword ptr [esi], ecx - je SHORT G_M32300_IG09 - ;; size=9 bbWeight=0.50 PerfScore 2.12 -G_M32300_IG08: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov edx, esi - ; gcrRegs +[edx] - call CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[edx esi] +[eax] - jmp SHORT G_M32300_IG10 - ;; size=9 bbWeight=0.25 PerfScore 0.81 -G_M32300_IG09: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] +[esi]
+ mov eax, 0xD1FFAB1E ; System.Xml.Schema.XmlSchema + cmp dword ptr [esi], eax
mov eax, esi ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M32300_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi]
+ cmove eax, esi
mov eax, gword ptr [eax+0x1C]
- ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M32300_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=15 bbWeight=0.50 PerfScore 2.88 +G_M32300_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M32300_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax]
+G_M32300_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax esi]
mov eax, 0xD1FFAB1E ; gcrRegs +[eax] ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M32300_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M32300_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 69, prolog size 6, PerfScore 36.88, instruction count 30, allocated bytes for code 69 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
+; Total bytes of code 57, prolog size 6, PerfScore 34.50, instruction count 25, allocated bytes for code 57 (MethodHash=8b5f81d3) for method System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
; ============================================================

-20 (-15.87%) : 274154.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================

+13 (+5.78%) : 226768.dasm - System.Collections.Generic.SortedSet`1[ubyte]:SymmetricExceptWithSameComparer(ubyte[],int):this (FullOpts)

@@ -10,16 +10,16 @@ ; ; V00 this [V00,T03] ( 8, 8.50) ref -> esi this class-hnd single-def <System.Collections.Generic.SortedSet`1[ubyte]> ; V01 arg1 [V01,T04] ( 6, 7.50) ref -> edi class-hnd single-def <ubyte[]>
-; V02 arg2 [V02,T05] ( 4, 6 ) int -> ebx single-def
+; V02 arg2 [V02,T06] ( 3, 5.50) int -> [ebp+0x08] single-def
; V03 loc0 [V03,T07] ( 3, 5 ) ubyte -> [ebp-0x10]
-; V04 loc1 [V04,T00] ( 13, 23.50) int -> [ebp-0x14]
+; V04 loc1 [V04,T00] ( 12, 23 ) int -> [ebp-0x14]
; V05 loc2 [V05,T08] ( 5, 2.50) ubyte -> [ebp-0x18] spill-single-def ;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 tmp1 [V08,T01] ( 2, 16 ) ref -> edx "argument with side effect"
-; V09 tmp2 [V09,T02] ( 2, 16 ) int -> eax "argument with side effect"
+; V09 tmp2 [V09,T02] ( 2, 16 ) int -> ebx "argument with side effect"
; V10 cse0 [V10,T09] ( 3, 1.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
-; V11 cse1 [V11,T06] ( 4, 5.50) int -> [ebp-0x20] spill-single-def "CSE - moderate"
+; V11 cse1 [V11,T05] ( 4, 5.50) int -> [ebp-0x20] "CSE - moderate"
; TEMP_01 ref -> [ebp-0x24] ; ; Lcl frame size = 24 @@ -55,51 +55,54 @@ G_M2468_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, G_M2468_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi edi] mov eax, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x20], eax
test eax, eax
- je G_M2468_IG13
+ je G_M2468_IG12
movzx edx, byte ptr [edi+0x08]
- mov dword ptr [ebp-0x10], edx
xor ecx, ecx
- jmp G_M2468_IG12 - ;; size=28 bbWeight=0.50 PerfScore 4.75
+ jmp G_M2468_IG11 + ;; size=22 bbWeight=0.50 PerfScore 3.75
G_M2468_IG05: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x14] - inc ecx
+ mov ebx, dword ptr [ebp-0x14] + inc ebx + mov ecx, ebx
mov eax, dword ptr [ebp-0x20]
- ;; size=7 bbWeight=2 PerfScore 4.50
+ mov edx, dword ptr [ebp-0x10] + mov ebx, dword ptr [ebp+0x08] + ;; size=15 bbWeight=2 PerfScore 9.00
G_M2468_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp+0x08], ebx
cmp ecx, ebx
- jge SHORT G_M2468_IG08
+ mov dword ptr [ebp-0x10], edx + jge SHORT G_M2468_IG03 + mov ebx, dword ptr [ebp+0x08]
test ecx, ecx
- je SHORT G_M2468_IG09
+ mov dword ptr [ebp+0x08], ebx + je SHORT G_M2468_IG08
mov edx, gword ptr [esi+0x08] ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x20], eax
cmp ecx, eax
- jae G_M2468_IG13
+ jae G_M2468_IG12
mov dword ptr [ebp-0x14], ecx
- movzx eax, byte ptr [edi+ecx+0x08]
+ movzx ebx, byte ptr [edi+ecx+0x08]
push dword ptr [ebp-0x10] mov ecx, edx ; gcrRegs +[ecx]
- mov edx, eax
+ mov edx, ebx
; gcrRegs -[edx] call [<unknown method>] ; gcrRegs -[ecx] test eax, eax je SHORT G_M2468_IG05
- ;; size=44 bbWeight=4 PerfScore 58.00
+ ;; size=59 bbWeight=4 PerfScore 78.00
G_M2468_IG07: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x20] mov ecx, dword ptr [ebp-0x14] ;; size=6 bbWeight=2 PerfScore 4.00 G_M2468_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, ebx - jge SHORT G_M2468_IG03 - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M2468_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x20], eax
cmp ecx, eax
- jae SHORT G_M2468_IG13
+ jae SHORT G_M2468_IG12
mov dword ptr [ebp-0x14], ecx movzx edx, byte ptr [edi+ecx+0x08] mov dword ptr [ebp-0x18], edx @@ -112,11 +115,11 @@ G_M2468_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00 mov dword ptr [ebp-0x1C], ecx mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx]
- mov eax, dword ptr [ebp-0x1C] - call [eax+0x0C]<unknown method>
+ mov ebx, dword ptr [ebp-0x1C] + call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M2468_IG10
+ jne SHORT G_M2468_IG09
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -124,35 +127,34 @@ G_M2468_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00 mov eax, dword ptr [eax+0x30] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M2468_IG11 - ;; size=56 bbWeight=0.50 PerfScore 14.00 -G_M2468_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M2468_IG10 + ;; size=59 bbWeight=0.50 PerfScore 14.50 +G_M2468_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x18]
- mov eax, dword ptr [ebp-0x1C] - call [eax+0x04]<unknown method>
+ call [ebx+0x04]<unknown method>
; gcrRegs -[ecx]
- ;; size=11 bbWeight=0.50 PerfScore 2.62 -G_M2468_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - mov edx, dword ptr [ebp-0x18] - mov eax, edx
+ ;; size=8 bbWeight=0.50 PerfScore 2.12 +G_M2468_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov ebx, dword ptr [ebp-0x18]
mov ecx, dword ptr [ebp-0x14] inc ecx
- mov dword ptr [ebp-0x10], eax
+ mov edx, ebx
mov eax, dword ptr [ebp-0x20]
+ mov ebx, dword ptr [ebp+0x08]
;; size=15 bbWeight=0.50 PerfScore 2.25
-G_M2468_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M2468_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, ebx jl G_M2468_IG06 jmp G_M2468_IG03 ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M2468_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M2468_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 225, prolog size 14, PerfScore 105.38, instruction count 85, allocated bytes for code 225 (MethodHash=2252f65b) for method System.Collections.Generic.SortedSet`1[ubyte]:SymmetricExceptWithSameComparer(ubyte[],int):this (FullOpts)
+; Total bytes of code 238, prolog size 14, PerfScore 128.25, instruction count 89, allocated bytes for code 238 (MethodHash=2252f65b) for method System.Collections.Generic.SortedSet`1[ubyte]:SymmetricExceptWithSameComparer(ubyte[],int):this (FullOpts)
; ============================================================

+16 (+6.96%) : 179728.dasm - System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span1[ubyte],System.Span1[ubyte],byref,byref):this (FullOpts)

@@ -13,15 +13,15 @@ ; V02 arg2 [V02,T16] ( 1, 1 ) struct ( 8) [ebp+0x0C] do-not-enreg[S] single-def <System.Span`1[ubyte]> ; V03 arg3 [V03,T05] ( 3, 3 ) byref -> [ebp-0x18] single-def ; V04 arg4 [V04,T15] ( 1, 1 ) byref -> [ebp+0x08] single-def
-; V05 loc0 [V05,T08] ( 3, 3 ) int -> [ebp-0x10] spill-single-def
+; V05 loc0 [V05,T07] ( 4, 3 ) int -> [ebp-0x10] spill-single-def
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ubyte]> ;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ; V10 tmp2 [V10,T01] ( 4, 8 ) int -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V12 tmp4 [V12,T00] ( 5, 9 ) int -> [ebp-0x14] spill-single-def "Inlining Arg" -; V13 tmp5 [V13,T06] ( 3, 3.50) byref -> edi single-def "Inlining Arg"
+; V12 tmp4 [V12,T00] ( 5, 9.50) int -> [ebp-0x14] spill-single-def "Inlining Arg" +; V13 tmp5 [V13,T06] ( 3, 4 ) byref -> edi single-def "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp8 [V16,T03] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <ubyte[]> @@ -48,8 +48,8 @@ ;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP ;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP
-; V40 tmp32 [V40,T14] ( 4, 1.25) byref -> esi "field V17._reference (fldOffset=0x0)" P-INDEP -; V41 tmp33 [V41,T13] ( 3, 1.50) int -> ecx "field V17._length (fldOffset=0x4)" P-INDEP
+; V40 tmp32 [V40,T13] ( 4, 1.50) byref -> esi "field V17._reference (fldOffset=0x0)" P-INDEP +; V41 tmp33 [V41,T14] ( 3, 1.50) int -> ecx "field V17._length (fldOffset=0x4)" P-INDEP
;* V42 tmp34 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP ;* V43 tmp35 [V43 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP ;* V44 tmp36 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP @@ -58,7 +58,7 @@ ;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ; V48 tmp40 [V48,T10] ( 2, 2 ) byref -> ebx single-def "field V27._reference (fldOffset=0x0)" P-INDEP ; V49 tmp41 [V49,T12] ( 2, 2 ) int -> edi "field V27._length (fldOffset=0x4)" P-INDEP
-; V50 tmp42 [V50,T07] ( 3, 3 ) byref -> ebx single-def "V01.[000..004)"
+; V50 tmp42 [V50,T08] ( 3, 3 ) byref -> ebx single-def "V01.[000..004)"
; V51 tmp43 [V51,T04] ( 5, 5 ) int -> eax "V01.[004..008)" ; V52 cse0 [V52,T09] ( 3, 3 ) int -> ecx "CSE - moderate" ; @@ -87,7 +87,7 @@ G_M14337_IG02: ; bbWeight=1, gcVars=00000020 {V03}, gcrefRegs=00000040 {e sub ecx, dword ptr [esi+0x0C] mov dword ptr [ebp-0x10], ecx cmp ecx, eax
- ja G_M14337_IG15
+ ja G_M14337_IG16
lea edi, bword ptr [ebx+ecx] ; byrRegs +[edi] sub eax, ecx @@ -107,7 +107,7 @@ G_M14337_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000088 mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] test ecx, ecx
- je G_M14337_IG13
+ je G_M14337_IG14
;; size=11 bbWeight=1 PerfScore 3.25 G_M14337_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000088 {ebx edi}, byref ; gcrRegs -[esi] @@ -119,11 +119,11 @@ G_M14337_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000 G_M14337_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz mov eax, dword ptr [ebp-0x14] cmp eax, ecx
- ja SHORT G_M14337_IG14
+ ja G_M14337_IG15
cmp eax, 16 je SHORT G_M14337_IG11
- ;; size=12 bbWeight=1 PerfScore 3.50 -G_M14337_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M14337_IG07: ; bbWeight=0.75, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
push eax mov ecx, esi ; byrRegs +[ecx] @@ -131,11 +131,11 @@ G_M14337_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi edi]
- ;; size=11 bbWeight=0.50 PerfScore 2.25 -G_M14337_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz
mov edi, dword ptr [ebp-0x10] test edi, edi jge SHORT G_M14337_IG09
+ ;; size=18 bbWeight=0.75 PerfScore 5.06 +G_M14337_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -148,7 +148,7 @@ G_M14337_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {e ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=39 bbWeight=1 PerfScore 9.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M14337_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz push edi push ebx @@ -164,7 +164,7 @@ G_M14337_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {e call [<unknown method>] ; byrRegs -[ecx edx ebx] test eax, eax
- jne SHORT G_M14337_IG12
+ jne SHORT G_M14337_IG13
;; size=28 bbWeight=1 PerfScore 12.25 G_M14337_IG10: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] @@ -184,33 +184,38 @@ G_M14337_IG11: ; bbWeight=0.25, gcVars=00000020 {V03}, gcrefRegs=00000000 ; byrRegs +[edx] call [<unknown method>] ; byrRegs -[ecx edx esi edi]
- jmp SHORT G_M14337_IG08 - ;; size=14 bbWeight=0.25 PerfScore 1.62 -G_M14337_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ cmp dword ptr [ebp-0x10], 0 + mov edi, dword ptr [ebp-0x10] + jl SHORT G_M14337_IG08 + ;; size=21 bbWeight=0.25 PerfScore 2.12 +G_M14337_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref, isz + jmp SHORT G_M14337_IG09 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M14337_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx] ; GC ptr vars -{V03 V05} call [System.Security.Cryptography.ThrowHelper:ThrowBase64FormatException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M14337_IG13: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M14337_IG14: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref
; byrRegs +[ebx edi] ; GC ptr vars +{V03 V05} xor esi, esi ; byrRegs +[esi] xor ecx, ecx
- jmp SHORT G_M14337_IG06 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M14337_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jmp G_M14337_IG06 + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M14337_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx esi edi] ; GC ptr vars -{V03 V05} call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M14337_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M14337_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 9, PerfScore 57.38, instruction count 80, allocated bytes for code 230 (MethodHash=ac30c7fe) for method System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
+; Total bytes of code 246, prolog size 9, PerfScore 56.94, instruction count 83, allocated bytes for code 246 (MethodHash=ac30c7fe) for method System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
; ============================================================

+14 (+7.37%) : 295838.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr" -; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr" +; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local" -; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local" +; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov edx, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[edx] - mov ecx, edx
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ebx, gword ptr [edi+4*edx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx] - ; gcrRegs -[edx] - mov edx, dword ptr [edx+0x2C] - call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx] + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebx+0x2C] + call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] @@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=37 bbWeight=8 PerfScore 166.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01 V10} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V11} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp G_M59545_IG03 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V11}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_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 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-26 (-20.63%) : 296590.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) ref -> ecx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> edx class-hnd single-def <System.String> -; V02 arg2 [V02,T06] ( 2, 4.50) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T07] ( 3, 2.50) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> ebx -; V05 loc1 [V05,T00] ( 11, 27.50) int -> esi -; V06 cse0 [V06,T05] ( 5, 7 ) int -> [ebp-0x10] spill-single-def "CSE - moderate" -; V07 cse1 [V07,T01] ( 6, 13.50) int -> edi multi-def "CSE - aggressive"
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> edx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 1, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T08] ( 3, 2.50) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> ebx +; V05 loc1 [V05,T00] ( 8, 25.50) int -> esi +; V06 cse0 [V06,T05] ( 3, 8.50) int -> edi "CSE - moderate" +; V07 cse1 [V07,T06] ( 4, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate" +; V08 cse2 [V08,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
; ; Lcl frame size = 4 @@ -44,39 +45,38 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000 ;; size=4 bbWeight=2 PerfScore 2.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, ebx
- jge SHORT G_M6389_IG07
+ jge SHORT G_M6389_IG08
;; size=4 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, edi
- jae SHORT G_M6389_IG12
+ jae SHORT G_M6389_IG10
movzx eax, word ptr [ecx+2*esi+0x08] mov edi, esi add edi, dword ptr [ebp+0x0C] cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12 - cmp ax, word ptr [edx+2*edi+0x08]
+ jae SHORT G_M6389_IG10 + movzx edi, word ptr [edx+2*edi+0x08] + cmp eax, edi
je SHORT G_M6389_IG03
- ;; size=26 bbWeight=4 PerfScore 54.00 -G_M6389_IG06: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x10] - ;; size=3 bbWeight=2 PerfScore 2.00 -G_M6389_IG07: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, ebx - jge SHORT G_M6389_IG10 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, edi - jae SHORT G_M6389_IG12 - movzx ecx, word ptr [ecx+2*esi+0x08]
+ ;; size=28 bbWeight=4 PerfScore 51.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] + movzx eax, word ptr [ecx+2*esi+0x08] + sub eax, edi + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M6389_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- mov edi, esi - add edi, dword ptr [ebp+0x0C] - cmp edi, dword ptr [edx+0x04] - jae SHORT G_M6389_IG12 - movzx eax, word ptr [edx+2*edi+0x08] - sub ecx, eax - mov eax, ecx - ;; size=28 bbWeight=0.50 PerfScore 6.00
+ mov eax, edi + sub eax, dword ptr [ebp+0x08] + ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -85,24 +85,11 @@ G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edx] - sub edi, dword ptr [ebp+0x08] - mov eax, edi - ;; size=5 bbWeight=0.50 PerfScore 1.12 -G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6389_IG10: ; 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 126, prolog size 10, PerfScore 94.62, instruction count 57, allocated bytes for code 126 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
+; Total bytes of code 100, prolog size 10, PerfScore 83.50, instruction count 47, allocated bytes for code 100 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
; ============================================================

-20 (-15.87%) : 97190.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (Tier0-FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
; ============================================================

-32 (-11.59%) : 396538.dasm - System.Xml.Linq.XAttribute:set_Value(System.String):this (Tier1)

@@ -9,26 +9,27 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 8, 13 ) ref -> [ebp-0x14] this class-hnd single-def <System.Xml.Linq.XAttribute> -; V01 arg1 [V01,T12] ( 5, 5 ) ref -> [ebp-0x18] class-hnd single-def <System.String>
+; V00 this [V00,T11] ( 8, 13 ) ref -> esi this class-hnd single-def <System.Xml.Linq.XAttribute> +; V01 arg1 [V01,T13] ( 5, 5 ) ref -> [ebp-0x14] class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref ;* V03 tmp0 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp1 [V04,T11] ( 3, 10 ) ubyte -> [ebp-0x10] "Inline stloc first use temp" -; V05 tmp2 [V05,T03] ( 9, 49 ) ref -> [ebp-0x1C] class-hnd "Inline stloc first use temp" <System.Xml.Linq.XObject>
+; V04 tmp1 [V04,T12] ( 3, 10 ) ubyte -> [ebp-0x10] "Inline stloc first use temp" +; V05 tmp2 [V05,T08] ( 5, 25 ) ref -> [ebp-0x18] class-hnd "Inline stloc first use temp" <System.Xml.Linq.XObject>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 4, 64 ) ref -> [ebp-0x20] class-hnd exact "dup spill" <<unknown class>>
+; V07 tmp4 [V07,T02] ( 4, 64 ) ref -> [ebp-0x1C] class-hnd exact "dup spill" <<unknown class>>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp6 [V09,T08] ( 2, 18 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Xml.Linq.XObjectChangeEventArgs> -; V10 tmp7 [V10,T06] ( 6, 32 ) ref -> edx class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 tmp6 [V09,T09] ( 2, 18 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Xml.Linq.XObjectChangeEventArgs> +; V10 tmp7 [V10,T05] ( 6, 32 ) ref -> edx class-hnd "Inline return value spill temp" <<unknown class>>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-; V12 tmp9 [V12,T04] ( 4, 44 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>>
+; V12 tmp9 [V12,T03] ( 4, 44 ) ref -> eax class-hnd "Inline stloc first use temp" <<unknown class>>
; V13 tmp10 [V13,T00] ( 5,132 ) int -> edx "Inline stloc first use temp"
-; V14 tmp11 [V14,T01] ( 4,112 ) ref -> esi class-hnd "Inline stloc first use temp" <System.Object>
+; V14 tmp11 [V14,T01] ( 4,112 ) ref -> edi class-hnd "Inline stloc first use temp" <System.Object>
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V16 tmp13 [V16,T07] ( 2, 20 ) ref -> esi class-hnd exact "Inline stloc first use temp" <<unknown class>> -; V17 tmp14 [V17,T09] ( 2, 16 ) ref -> edx "CASTCLASS eval op1"
+; V16 tmp13 [V16,T07] ( 2, 20 ) ref -> edi class-hnd exact "Inline stloc first use temp" <<unknown class>> +; V17 tmp14 [V17,T10] ( 2, 16 ) ref -> edx "CASTCLASS eval op1"
;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V19 cse0 [V19,T05] ( 3, 40 ) int -> edi "CSE - moderate"
+; V19 cse0 [V19,T06] ( 5, 32 ) ref -> [ebp-0x20] spill-single-def "CSE - moderate" +; V20 cse1 [V20,T04] ( 3, 40 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 20 @@ -53,7 +54,7 @@ G_M34169_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs -[ecx edx] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], edi
+ mov gword ptr [ebp-0x14], edi
; GC ptr vars +{V01} mov edx, edi ; gcrRegs +[edx] @@ -63,144 +64,123 @@ G_M34169_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[ebx] xor eax, eax mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi - ; GC ptr vars +{V00}
mov ecx, esi ; gcrRegs +[ecx]
- mov esi, gword ptr [ebp-0x14]
jmp SHORT G_M34169_IG04
- ;; size=48 bbWeight=1 PerfScore 17.25
+ ;; size=42 bbWeight=1 PerfScore 15.25
G_M34169_IG03: ; bbWeight=4, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
- ; GC ptr vars -{V00}
mov ecx, gword ptr [ecx+0x04]
- ;; size=3 bbWeight=4 PerfScore 8.00 -G_M34169_IG04: ; bbWeight=8, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - test ecx, ecx - je SHORT G_M34169_IG05 - cmp gword ptr [ecx+0x08], 0 - je SHORT G_M34169_IG03 - ;; size=10 bbWeight=8 PerfScore 42.00 -G_M34169_IG05: ; bbWeight=8, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - test ecx, ecx - je G_M34169_IG15 - cmp gword ptr [ecx+0x08], 0 - je SHORT G_M34169_IG07 - ;; size=14 bbWeight=8 PerfScore 42.00 -G_M34169_IG06: ; bbWeight=4, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V05}
+ mov ecx, gword ptr [ebp-0x18] + ;; size=9 bbWeight=4 PerfScore 16.00 +G_M34169_IG04: ; bbWeight=8, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz + ; GC ptr vars -{V05} + test ecx, ecx + je G_M34169_IG13
mov edx, gword ptr [ecx+0x08] ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
+ mov gword ptr [ebp-0x20], edx + ; GC ptr vars +{V19} + test edx, edx + je SHORT G_M34169_IG03 + test edx, edx + mov gword ptr [ebp-0x18], ecx + ; GC ptr vars +{V05} + je SHORT G_M34169_IG10 + ;; size=25 bbWeight=8 PerfScore 62.00 +G_M34169_IG05: ; bbWeight=4, gcVars=00002140 {V01 V05 V19}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFARRAY ; gcrRegs -[edx] +[eax] test eax, eax
- jne SHORT G_M34169_IG08 - mov ecx, gword ptr [ebp-0x1C] - ; gcrRegs +[ecx] - mov edx, gword ptr [ecx+0x08]
+ jne SHORT G_M34169_IG06 + mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx] cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M34169_IG14 - mov gword ptr [ebp-0x14], esi - ; GC ptr vars +{V00} - jmp SHORT G_M34169_IG12 - ;; size=39 bbWeight=4 PerfScore 62.00 -G_M34169_IG07: ; bbWeight=4, gcVars=00001000 {V01}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax edx] - ; GC ptr vars -{V00 V05} - mov gword ptr [ebp-0x1C], ecx - ; GC ptr vars +{V05} - mov gword ptr [ebp-0x14], esi - ; GC ptr vars +{V00} - jmp SHORT G_M34169_IG12 - ;; size=8 bbWeight=4 PerfScore 16.00 -G_M34169_IG08: ; bbWeight=4, gcVars=00001008 {V01 V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] +[eax] - ; GC ptr vars -{V00} - xor edx, edx - mov edi, dword ptr [eax+0x04] - test edi, edi - mov gword ptr [ebp-0x14], esi - ; GC ptr vars +{V00} - jle SHORT G_M34169_IG12 - ;; size=12 bbWeight=4 PerfScore 18.00 -G_M34169_IG09: ; bbWeight=32, gcVars=00001408 {V00 V01 V05}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[esi] - mov esi, gword ptr [eax+4*edx+0x08] - ; gcrRegs +[esi] - test esi, esi
je SHORT G_M34169_IG12
- cmp dword ptr [esi], 0xD1FFAB1E - jne SHORT G_M34169_IG11
+ jmp SHORT G_M34169_IG10 + ;; size=27 bbWeight=4 PerfScore 38.00 +G_M34169_IG06: ; bbWeight=4, gcVars=00002100 {V01 V05}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edx] + ; GC ptr vars -{V19} + xor edx, edx + mov ecx, dword ptr [eax+0x04] + test ecx, ecx + jle SHORT G_M34169_IG10 + ;; size=9 bbWeight=4 PerfScore 14.00 +G_M34169_IG07: ; bbWeight=32, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + mov edi, gword ptr [eax+4*edx+0x08] + ; gcrRegs +[edi] + test edi, edi + je SHORT G_M34169_IG10 + cmp dword ptr [edi], 0xD1FFAB1E + jne SHORT G_M34169_IG09
;; size=16 bbWeight=32 PerfScore 232.00
-G_M34169_IG10: ; bbWeight=16, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M34169_IG08: ; bbWeight=16, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- jmp SHORT G_M34169_IG13
+ jmp SHORT G_M34169_IG11
;; size=2 bbWeight=16 PerfScore 32.00
-G_M34169_IG11: ; bbWeight=32, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[esi] +[eax]
+G_M34169_IG09: ; bbWeight=32, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi] +[eax]
inc edx
- cmp edi, edx - jg SHORT G_M34169_IG09
+ cmp ecx, edx + jg SHORT G_M34169_IG07
;; size=5 bbWeight=32 PerfScore 48.00
-G_M34169_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M34169_IG10: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] xor edx, edx ; gcrRegs +[edx]
- mov esi, gword ptr [ebp-0x14] - ; gcrRegs +[esi] - jmp SHORT G_M34169_IG14 - ;; size=7 bbWeight=4 PerfScore 13.00 -G_M34169_IG13: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edx] - mov edx, esi
+ jmp SHORT G_M34169_IG12 + ;; size=4 bbWeight=4 PerfScore 9.00 +G_M34169_IG11: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] +[edi] + mov edx, edi
; gcrRegs +[edx]
- mov esi, gword ptr [ebp-0x14] - ;; size=5 bbWeight=4 PerfScore 5.00 -G_M34169_IG14: ; bbWeight=8, gcVars=00001008 {V01 V05}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V00}
+ ;; size=2 bbWeight=4 PerfScore 1.00 +G_M34169_IG12: ; bbWeight=8, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[edi]
test edx, edx
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] je SHORT G_M34169_IG03 mov dword ptr [ebp-0x10], 1 mov edx, gword ptr [edx+0x04] test edx, edx
- mov gword ptr [ebp-0x20], edx
+ mov gword ptr [ebp-0x1C], edx
; GC ptr vars +{V07}
- je G_M34169_IG03 - mov gword ptr [ebp-0x1C], ecx
+ je SHORT G_M34169_IG03 + mov gword ptr [ebp-0x18], ecx
push ebx ; gcr arg push 0 mov edx, esi
- mov edi, gword ptr [ebp-0x20]
+ mov edi, gword ptr [ebp-0x1C]
; gcrRegs +[edi] mov ecx, gword ptr [edi+0x04] ; GC ptr vars -{V07} call [edi+0x0C]<unknown method> ; gcrRegs -[ecx edx edi] ; gcr arg pop 1
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] jmp G_M34169_IG03
- ;; size=51 bbWeight=8 PerfScore 150.00 -G_M34169_IG15: ; bbWeight=1, gcVars=00001000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=8 PerfScore 150.00 +G_M34169_IG13: ; bbWeight=1, gcVars=00002000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx ebx] ; GC ptr vars -{V05} lea edx, bword ptr [esi+0x14] ; byrRegs +[edx]
- mov edi, gword ptr [ebp-0x18]
+ mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi] ; GC ptr vars -{V01} call CORINFO_HELP_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx] cmp dword ptr [ebp-0x10], 0 ...

+8 (+6.84%) : 51203.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,17 +9,17 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5.44) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> edi
+; V00 this [V00,T00] ( 9, 5.44) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> edi
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V04 tmp1 [V04,T06] ( 5, 4 ) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V05 tmp2 [V05,T04] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" -; V06 tmp3 [V06,T07] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -; V07 tmp4 [V07,T00] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V08 tmp5 [V08,T05] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" -; V09 tmp6 [V09,T08] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -; V10 tmp7 [V10,T01] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V04 tmp1 [V04,T05] ( 5, 4 ) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V05 tmp2 [V05,T03] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" +; V06 tmp3 [V06,T06] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +; V07 tmp4 [V07,T01] ( 5, 5.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V08 tmp5 [V08,T04] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" +; V09 tmp6 [V09,T07] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +; V10 tmp7 [V10,T02] ( 5, 5.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 0 @@ -38,11 +38,11 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ebx, gword ptr [esi+0x44] ; gcrRegs +[ebx] test ebx, ebx
- je SHORT G_M4380_IG16
+ je SHORT G_M4380_IG14
;; size=9 bbWeight=1 PerfScore 3.50 G_M4380_IG03: ; bbWeight=1.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz test byte ptr [ebx+0x0C], 2
- je SHORT G_M4380_IG16
+ je SHORT G_M4380_IG14
;; size=6 bbWeight=1.00 PerfScore 4.00 G_M4380_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebx+0x04] @@ -50,28 +50,26 @@ G_M4380_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000 mov eax, edx ; gcrRegs +[eax] test eax, eax
- je SHORT G_M4380_IG08
+ je SHORT G_M4380_IG07
;; size=9 bbWeight=1 PerfScore 3.50 G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ebx] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp dword ptr [eax], ecx
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG15
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [eax+0x48] - ;; size=3 bbWeight=1 PerfScore 2.00 -G_M4380_IG08: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M4380_IG15 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG07: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] cmp gword ptr [esi+0x48], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG13
;; size=6 bbWeight=1.00 PerfScore 4.00
-G_M4380_IG09: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x48] ; gcrRegs +[ecx] mov edx, gword ptr [ecx+0x04] @@ -79,34 +77,32 @@ G_M4380_IG09: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov eax, edx ; gcrRegs +[eax] test eax, eax
- je SHORT G_M4380_IG13
+ je SHORT G_M4380_IG11
;; size=12 bbWeight=1.00 PerfScore 5.50
-G_M4380_IG10: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx esi] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp dword ptr [eax], ecx
- je SHORT G_M4380_IG12
+ je SHORT G_M4380_IG16
;; size=9 bbWeight=0.50 PerfScore 2.13
-G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG12: ; bbWeight=1.00, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref - or edi, dword ptr [eax+0x48] - ;; size=3 bbWeight=1.00 PerfScore 3.00 -G_M4380_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M4380_IG16 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov eax, edi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M4380_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG12: ; bbWeight=1, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret ;; size=5 bbWeight=1 PerfScore 3.00
-G_M4380_IG15: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4380_IG13: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi] lea edx, bword ptr [esi+0x48] ; byrRegs +[edx] @@ -115,9 +111,9 @@ G_M4380_IG15: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000040 {es call [<unknown method>] ; gcrRegs -[ecx] ; byrRegs -[edx]
- jmp SHORT G_M4380_IG09
+ jmp SHORT G_M4380_IG08
;; size=13 bbWeight=0.22 PerfScore 1.25
-G_M4380_IG16: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG14: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this] @@ -126,7 +122,17 @@ G_M4380_IG16: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=000000 ; gcrRegs +[ebx] jmp SHORT G_M4380_IG04 ;; size=13 bbWeight=0.00 PerfScore 0.01
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] +[eax] + mov edi, dword ptr [eax+0x48] + jmp SHORT G_M4380_IG07 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M4380_IG16: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + or edi, dword ptr [eax+0x48] + jmp SHORT G_M4380_IG11 + ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 6, PerfScore 39.25, instruction count 47, allocated bytes for code 117 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 125, prolog size 6, PerfScore 35.25, instruction count 51, allocated bytes for code 125 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================

+8 (+6.84%) : 81656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)

@@ -9,17 +9,17 @@ ; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 9, 5.29) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> edi
+; V00 this [V00,T00] ( 9, 5.29) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V01 loc0 [V01,T08] ( 5, 2 ) int -> edi
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
-; V04 tmp1 [V04,T06] ( 5, 4.00) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> -; V05 tmp2 [V05,T04] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" -; V06 tmp3 [V06,T07] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -; V07 tmp4 [V07,T00] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> -; V08 tmp5 [V08,T05] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" -; V09 tmp6 [V09,T08] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -; V10 tmp7 [V10,T01] ( 5, 7.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
+; V04 tmp1 [V04,T05] ( 5, 4.00) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> +; V05 tmp2 [V05,T03] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" +; V06 tmp3 [V06,T06] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +; V07 tmp4 [V07,T01] ( 5, 5.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> +; V08 tmp5 [V08,T04] ( 3, 4.50) ref -> edx single-def "CASTCLASS eval op1" +; V09 tmp6 [V09,T07] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +; V10 tmp7 [V10,T02] ( 5, 5.50) ref -> eax class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]> ; ; Lcl frame size = 0 @@ -38,11 +38,11 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ebx, gword ptr [esi+0x44] ; gcrRegs +[ebx] test ebx, ebx
- je SHORT G_M4380_IG16
+ je SHORT G_M4380_IG14
;; size=9 bbWeight=1 PerfScore 3.50 G_M4380_IG03: ; bbWeight=0.99, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz test byte ptr [ebx+0x0C], 2
- je SHORT G_M4380_IG16
+ je SHORT G_M4380_IG14
;; size=6 bbWeight=0.99 PerfScore 3.96 G_M4380_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebx+0x04] @@ -50,28 +50,26 @@ G_M4380_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000 mov eax, edx ; gcrRegs +[eax] test eax, eax
- je SHORT G_M4380_IG08
+ je SHORT G_M4380_IG07
;; size=9 bbWeight=1 PerfScore 3.50 G_M4380_IG05: ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ebx] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp dword ptr [eax], ecx
- je SHORT G_M4380_IG07
+ je SHORT G_M4380_IG15
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M4380_IG06: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [eax+0x48] - ;; size=3 bbWeight=1 PerfScore 2.00 -G_M4380_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M4380_IG15 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] cmp gword ptr [esi+0x48], 0
- je SHORT G_M4380_IG15
+ je SHORT G_M4380_IG13
;; size=6 bbWeight=1 PerfScore 4.00
-G_M4380_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x48] ; gcrRegs +[ecx] mov edx, gword ptr [ecx+0x04] @@ -79,34 +77,32 @@ G_M4380_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov eax, edx ; gcrRegs +[eax] test eax, eax
- je SHORT G_M4380_IG13
+ je SHORT G_M4380_IG11
;; size=12 bbWeight=1 PerfScore 5.50
-G_M4380_IG10: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx esi] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] cmp dword ptr [eax], ecx
- je SHORT G_M4380_IG12
+ je SHORT G_M4380_IG16
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M4380_IG11: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[edx] +[eax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref - or edi, dword ptr [eax+0x48] - ;; size=3 bbWeight=1 PerfScore 3.00 -G_M4380_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M4380_IG16 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M4380_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov eax, edi ;; size=2 bbWeight=1 PerfScore 0.25
-G_M4380_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG12: ; bbWeight=1, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret ;; size=5 bbWeight=1 PerfScore 3.00
-G_M4380_IG15: ; bbWeight=0.14, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4380_IG13: ; bbWeight=0.14, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi] lea edx, bword ptr [esi+0x48] ; byrRegs +[edx] @@ -115,9 +111,9 @@ G_M4380_IG15: ; bbWeight=0.14, gcVars=00000000 {}, gcrefRegs=00000040 {es call [<unknown method>] ; gcrRegs -[ecx] ; byrRegs -[edx]
- jmp SHORT G_M4380_IG09
+ jmp SHORT G_M4380_IG08
;; size=13 bbWeight=0.14 PerfScore 0.78
-G_M4380_IG16: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M4380_IG14: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:EnsureAttributesAreBound():this] @@ -126,7 +122,17 @@ G_M4380_IG16: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=000000 ; gcrRegs +[ebx] jmp SHORT G_M4380_IG04 ;; size=13 bbWeight=0.01 PerfScore 0.07
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[ebx] +[eax] + mov edi, dword ptr [eax+0x48] + jmp SHORT G_M4380_IG07 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M4380_IG16: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + or edi, dword ptr [eax+0x48] + jmp SHORT G_M4380_IG11 + ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 6, PerfScore 38.81, instruction count 47, allocated bytes for code 117 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
+; Total bytes of code 125, prolog size 6, PerfScore 34.81, instruction count 51, allocated bytes for code 125 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================

+14 (+7.37%) : 102465.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr" -; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr" +; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local" -; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local" +; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov edx, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[edx] - mov ecx, edx
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ebx, gword ptr [edi+4*edx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx] - ; gcrRegs -[edx] - mov edx, dword ptr [edx+0x2C] - call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx] + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebx+0x2C] + call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] @@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=37 bbWeight=8 PerfScore 166.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01 V10} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V11} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp G_M59545_IG03 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V11}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_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 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-26 (-20.63%) : 97737.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 5, 7.50) ref -> ecx class-hnd single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 11 ) ref -> edx class-hnd single-def <System.String> -; V02 arg2 [V02,T06] ( 2, 4.50) int -> [ebp+0x0C] single-def -; V03 arg3 [V03,T07] ( 3, 2.50) int -> [ebp+0x08] single-def -; V04 loc0 [V04,T03] ( 6, 13 ) int -> ebx -; V05 loc1 [V05,T00] ( 11, 27.50) int -> esi -; V06 cse0 [V06,T05] ( 5, 7 ) int -> [ebp-0x10] spill-single-def "CSE - moderate" -; V07 cse1 [V07,T01] ( 6, 13.50) int -> edi multi-def "CSE - aggressive"
+; V01 arg1 [V01,T02] ( 4, 10 ) ref -> edx class-hnd single-def <System.String> +; V02 arg2 [V02,T07] ( 1, 4 ) int -> [ebp+0x0C] single-def +; V03 arg3 [V03,T08] ( 3, 2.50) int -> [ebp+0x08] single-def +; V04 loc0 [V04,T01] ( 5, 12 ) int -> ebx +; V05 loc1 [V05,T00] ( 8, 25.50) int -> esi +; V06 cse0 [V06,T05] ( 3, 8.50) int -> edi "CSE - moderate" +; V07 cse1 [V07,T06] ( 4, 6.50) int -> [ebp-0x10] spill-single-def "CSE - moderate" +; V08 cse2 [V08,T03] ( 3, 12 ) int -> edi "CSE - aggressive"
; ; Lcl frame size = 4 @@ -44,39 +45,38 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000 ;; size=4 bbWeight=2 PerfScore 2.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, ebx
- jge SHORT G_M6389_IG07
+ jge SHORT G_M6389_IG08
;; size=4 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz cmp esi, edi
- jae SHORT G_M6389_IG12
+ jae SHORT G_M6389_IG10
movzx eax, word ptr [ecx+2*esi+0x08] mov edi, esi add edi, dword ptr [ebp+0x0C] cmp edi, dword ptr [edx+0x04]
- jae SHORT G_M6389_IG12 - cmp ax, word ptr [edx+2*edi+0x08]
+ jae SHORT G_M6389_IG10 + movzx edi, word ptr [edx+2*edi+0x08] + cmp eax, edi
je SHORT G_M6389_IG03
- ;; size=26 bbWeight=4 PerfScore 54.00 -G_M6389_IG06: ; bbWeight=2, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref - mov edi, dword ptr [ebp-0x10] - ;; size=3 bbWeight=2 PerfScore 2.00 -G_M6389_IG07: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, ebx - jge SHORT G_M6389_IG10 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M6389_IG08: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - cmp esi, edi - jae SHORT G_M6389_IG12 - movzx ecx, word ptr [ecx+2*esi+0x08]
+ ;; size=28 bbWeight=4 PerfScore 51.00 +G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref + ; gcrRegs -[edx] + movzx eax, word ptr [ecx+2*esi+0x08] + sub eax, edi + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M6389_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
- mov edi, esi - add edi, dword ptr [ebp+0x0C] - cmp edi, dword ptr [edx+0x04] - jae SHORT G_M6389_IG12 - movzx eax, word ptr [edx+2*edi+0x08] - sub ecx, eax - mov eax, ecx - ;; size=28 bbWeight=0.50 PerfScore 6.00
+ mov eax, edi + sub eax, dword ptr [ebp+0x08] + ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -85,24 +85,11 @@ G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M6389_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edx] - sub edi, dword ptr [ebp+0x08] - mov eax, edi - ;; size=5 bbWeight=0.50 PerfScore 1.12 -G_M6389_IG11: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M6389_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M6389_IG10: ; 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 126, prolog size 10, PerfScore 94.62, instruction count 57, allocated bytes for code 126 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 100, prolog size 10, PerfScore 83.50, instruction count 47, allocated bytes for code 100 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================

-20 (-15.87%) : 32042.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint]):int (FullOpts)

@@ -7,14 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T07] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V02 loc0 [V02,T00] ( 8, 28.50) int -> registers -; V03 tmp0 [V03,T01] ( 7, 21 ) int -> eax "dup spill" -; V04 tmp1 [V04,T04] ( 3, 5.50) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" -; V05 tmp2 [V05,T03] ( 5, 7 ) int -> ecx "V00.[004..008)" -; V06 tmp3 [V06,T05] ( 3, 5.50) byref -> esi single-def "V01.[000..004)" -; V07 tmp4 [V07,T02] ( 6, 7.50) int -> edi "V01.[004..008)"
+; V00 arg0 [V00,T08] ( 2, 2 ) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T09] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V02 loc0 [V02,T00] ( 8, 28.50) int -> edi +; V03 tmp0 [V03,T01] ( 2, 16 ) int -> edi "dup spill" +; V04 tmp1 [V04,T06] ( 2, 5 ) byref -> [ebp-0x10] spill-single-def "V00.[000..004)" +; V05 tmp2 [V05,T05] ( 4, 6.50) int -> edx "V00.[004..008)" +; V06 tmp3 [V06,T07] ( 2, 5 ) byref -> ecx single-def "V01.[000..004)" +; V07 tmp4 [V07,T04] ( 5, 7 ) int -> esi "V01.[004..008)" +; V08 cse0 [V08,T02] ( 3, 8.50) int -> ebx "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 8.50) int -> eax "CSE - aggressive"
; ; Lcl frame size = 4 @@ -27,51 +29,52 @@ G_M264_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push eax ;; size=7 bbWeight=1 PerfScore 5.25 G_M264_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, bword ptr [ebp+0x10] - ; byrRegs +[edx] - mov bword ptr [ebp-0x10], edx
+ mov eax, bword ptr [ebp+0x10] + ; byrRegs +[eax] + mov bword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
- mov ecx, dword ptr [ebp+0x14] - mov esi, bword ptr [ebp+0x08] - ; byrRegs +[esi] - mov edi, dword ptr [ebp+0x0C] - cmp ecx, edi
+ mov edx, dword ptr [ebp+0x14] + mov ecx, bword ptr [ebp+0x08] + ; byrRegs +[ecx] + mov esi, dword ptr [ebp+0x0C] + cmp edx, esi
je SHORT G_M264_IG04 ;; size=19 bbWeight=1 PerfScore 6.25 G_M264_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edx esi]
+ ; byrRegs -[eax ecx]
; GC ptr vars -{V04}
- cmp ecx, edi
+ cmp edx, esi
jl SHORT G_M264_IG12
- jmp SHORT G_M264_IG10
+ jmp SHORT G_M264_IG07
;; size=6 bbWeight=0.50 PerfScore 1.62
-G_M264_IG04: ; bbWeight=0.50, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref - ; byrRegs +[edx esi] - ; GC ptr vars +{V04} - mov eax, edi
+G_M264_IG04: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, gcvars, byref + ; byrRegs +[eax ecx] + ; GC ptr vars +{V04 V06} + mov edi, esi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - dec eax - mov ebx, eax - test ebx, ebx - jl SHORT G_M264_IG06 - cmp ebx, ecx
+G_M264_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000003 {eax ecx}, byref, isz + dec edi + js SHORT G_M264_IG10 + cmp edi, edx
jae SHORT G_M264_IG14
- mov edx, dword ptr [edx+4*ebx] - ; byrRegs -[edx] - cmp ebx, edi
+ mov ebx, dword ptr [eax+4*edi] + cmp edi, esi
jae SHORT G_M264_IG14
- cmp edx, dword ptr [esi+4*ebx] - mov edx, bword ptr [ebp-0x10] - ; byrRegs +[edx] - je SHORT G_M264_IG08 - ;; size=26 bbWeight=4 PerfScore 45.00 -G_M264_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - test eax, eax - jge SHORT G_M264_IG09 - xor eax, eax - ;; size=6 bbWeight=0.50 PerfScore 0.75 -G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov eax, dword ptr [ecx+4*edi] + ; byrRegs -[eax] + cmp ebx, eax + je SHORT G_M264_IG09 + ;; size=21 bbWeight=4 PerfScore 36.00 +G_M264_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz + ; byrRegs -[ecx] + ; GC ptr vars -{V04 V06} + cmp eax, ebx + ja SHORT G_M264_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.62 +G_M264_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M264_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop ebx pop esi @@ -79,25 +82,18 @@ G_M264_IG07: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 16 ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M264_IG08: ; bbWeight=2, gcVars=00000010 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, gcvars, byref, isz - mov eax, ebx
+G_M264_IG09: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V04 V06} + mov eax, bword ptr [ebp-0x10] + ; byrRegs +[eax]
jmp SHORT G_M264_IG05
- ;; size=4 bbWeight=2 PerfScore 4.50 -G_M264_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000044 {edx esi}, byref, isz - cmp eax, ecx - jae SHORT G_M264_IG14 - mov edx, dword ptr [edx+4*eax] - ; byrRegs -[edx] - cmp eax, edi - jae SHORT G_M264_IG14 - cmp edx, dword ptr [esi+4*eax] - jb SHORT G_M264_IG12 - ;; size=16 bbWeight=0.50 PerfScore 4.25
+ ;; size=5 bbWeight=2 PerfScore 6.00
G_M264_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi] - ; GC ptr vars -{V04} - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
+ ; byrRegs -[eax ecx] + ; GC ptr vars -{V04 V06} + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M264_IG11: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -122,6 +118,6 @@ G_M264_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byr int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 126, prolog size 7, PerfScore 74.75, instruction count 63, allocated bytes for code 126 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 63.00, instruction count 54, allocated bytes for code 106 (MethodHash=ba31fef7) for method System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
; ============================================================

-22 (-10.58%) : 218.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================

+31 (+5.56%) : 164094.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (FullOpts)

@@ -17,14 +17,14 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V07 loc6 [V07,T02] ( 6, 20.80) int -> [ebp-0x14] ; V08 loc7 [V08,T04] ( 5, 17.82) ref -> [ebp-0x20] class-hnd exact spill-single-def <System.String>
-; V09 loc8 [V09,T00] ( 16, 33.66) ref -> [ebp-0x24] class-hnd exact spill-single-def <System.String>
+; V09 loc8 [V09,T00] ( 13, 27.72) ref -> [ebp-0x24] class-hnd exact spill-single-def <System.String>
; V10 tmp0 [V10,T14] ( 5, 10 ) ref -> esi class-hnd exact single-def "dup spill" <<unknown class>> ; V11 tmp1 [V11,T15] ( 5, 10 ) ref -> edi class-hnd exact single-def "dup spill" <<unknown class>> ; V12 tmp2 [V12,T18] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection> ; V13 tmp3 [V13,T32] ( 2, 4 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>> ;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp5 [V15,T31] ( 5, 5 ) ref -> ecx
-; V16 tmp6 [V16,T06] ( 7, 13.86) ref -> edx class-hnd "Inline return value spill temp" <System.String>
+; V16 tmp6 [V16,T11] ( 7, 11.88) ref -> edx class-hnd "Inline return value spill temp" <System.String>
;* V17 tmp7 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp8 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V19 tmp9 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -40,8 +40,8 @@ ; V29 tmp19 [V29,T20] ( 2, 7.92) byref -> ecx "Inlining Arg" ;* V30 tmp20 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp21 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V32 tmp22 [V32,T12] ( 2, 11.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> -; V33 tmp23 [V33,T07] ( 7, 13.86) ref -> edx class-hnd "Inline return value spill temp" <System.String>
+; V32 tmp22 [V32,T09] ( 2, 11.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> +; V33 tmp23 [V33,T12] ( 7, 11.88) ref -> edx class-hnd "Inline return value spill temp" <System.String>
;* V34 tmp24 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V35 tmp25 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V36 tmp26 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -57,8 +57,8 @@ ; V46 tmp36 [V46,T22] ( 2, 7.92) byref -> ecx "Inlining Arg" ;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp38 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp39 [V49,T13] ( 2, 11.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> -; V50 tmp40 [V50,T08] ( 7, 13.86) ref -> edx class-hnd "Inline return value spill temp" <System.String>
+; V49 tmp39 [V49,T10] ( 2, 11.88) ref -> edx class-hnd exact "Inlining Arg" <System.String> +; V50 tmp40 [V50,T13] ( 7, 11.88) ref -> edx class-hnd "Inline return value spill temp" <System.String>
;* V51 tmp41 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V52 tmp42 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp43 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -117,9 +117,9 @@ ;* V106 tmp96 [V106 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP ;* V107 tmp97 [V107 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x4)" P-INDEP ; V108 tmp98 [V108,T05] ( 2, 15.84) ref -> edx "argument with side effect"
-; V109 tmp99 [V109,T09] ( 3, 11.88) ref -> ecx "argument with side effect" -; V110 tmp100 [V110,T10] ( 3, 11.88) ref -> ecx "argument with side effect" -; V111 tmp101 [V111,T11] ( 3, 11.88) ref -> ecx "argument with side effect"
+; V109 tmp99 [V109,T06] ( 3, 11.88) ref -> ecx "argument with side effect" +; V110 tmp100 [V110,T07] ( 3, 11.88) ref -> ecx "argument with side effect" +; V111 tmp101 [V111,T08] ( 3, 11.88) ref -> ecx "argument with side effect"
; ; Lcl frame size = 32 @@ -222,21 +222,102 @@ G_M20362_IG07: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=0 mov edx, eax ; gcrRegs +[edx] ;; size=16 bbWeight=1.98 PerfScore 20.29
-G_M20362_IG08: ; bbWeight=3.96, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz
+G_M20362_IG08: ; bbWeight=3.96, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov eax, gword ptr [ebp-0x24] ; gcrRegs +[eax]
- mov ecx, eax - ; gcrRegs +[ecx] - or ecx, edx - ; gcrRegs -[ecx] - je SHORT G_M20362_IG12 - ;; size=9 bbWeight=3.96 PerfScore 9.90 -G_M20362_IG09: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref
test eax, eax
- je G_M20362_IG24
+ jne G_M20362_IG20 + ;; size=11 bbWeight=3.96 PerfScore 8.91 +G_M20362_IG09: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref
test edx, edx
- je G_M20362_IG24
+ jne G_M20362_IG25 + ;; size=8 bbWeight=1.98 PerfScore 2.48 +G_M20362_IG10: ; bbWeight=3.96, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + mov edx, gword ptr [ebp-0x20] + ; gcrRegs +[edx] + cmp byte ptr [edx], dl + mov ecx, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[ecx] + cmp dword ptr [ecx], ecx + call [System.Globalization.TextInfo:ToUpper(System.String):System.String:this] + ; gcrRegs -[ecx edx] +[eax] + mov edx, eax + ; gcrRegs +[edx] + cmp gword ptr [ebx+0x28], 0 + jne G_M20362_IG21 + ;; size=31 bbWeight=3.96 PerfScore 64.35 +G_M20362_IG11: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + xor edx, edx + ; gcrRegs +[edx] + ;; size=2 bbWeight=1.98 PerfScore 0.49 +G_M20362_IG12: ; bbWeight=3.96, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref + mov eax, gword ptr [ebp-0x24] + ; gcrRegs +[eax] + test eax, eax + jne G_M20362_IG22 + ;; size=11 bbWeight=3.96 PerfScore 8.91 +G_M20362_IG13: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref + test edx, edx + jne G_M20362_IG26 + ;; size=8 bbWeight=1.98 PerfScore 2.48 +G_M20362_IG14: ; bbWeight=3.96, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + mov ecx, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[ecx] + mov edx, gword ptr [ebp-0x20] + ; gcrRegs +[edx] + cmp dword ptr [ecx], ecx + ; GC ptr vars -{V08} + call [System.Globalization.TextInfo:ToLower(System.String):System.String:this] + ; gcrRegs -[ecx edx] +[eax] + mov edx, eax + ; gcrRegs +[edx] + cmp gword ptr [ebx+0x28], 0 + jne G_M20362_IG23 + ;; size=29 bbWeight=3.96 PerfScore 52.47 +G_M20362_IG15: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + xor edx, edx + ; gcrRegs +[edx] + ;; size=2 bbWeight=1.98 PerfScore 0.49 +G_M20362_IG16: ; bbWeight=3.96, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref + mov eax, gword ptr [ebp-0x24] + ; gcrRegs +[eax] + test eax, eax + jne G_M20362_IG24 + ;; size=11 bbWeight=3.96 PerfScore 8.91 +G_M20362_IG17: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref + test edx, edx + jne G_M20362_IG27 + ;; size=8 bbWeight=1.98 PerfScore 2.48 +G_M20362_IG18: ; bbWeight=3.96, gcVars=0000000000010000 {V01}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax edx] + ; GC ptr vars -{V09} + mov eax, dword ptr [ebp-0x14] + inc eax + cmp eax, 3 + mov esi, gword ptr [ebp-0x1C] + ; gcrRegs +[esi] + jl G_M20362_IG05 + ;; size=16 bbWeight=3.96 PerfScore 13.86 +G_M20362_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc + ; gcrRegs -[ebx esi edi] + ; GC ptr vars -{V01} + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=1 PerfScore 3.50 +G_M20362_IG20: ; bbWeight=1.98, gcVars=0000000000010011 {V01 V08 V09}, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs +[eax edx ebx edi] + ; GC ptr vars +{V01 V04 V08 V09 V16} + test edx, edx + je G_M20362_IG25
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] mov esi, dword ptr [eax+0x04] @@ -254,36 +335,13 @@ G_M20362_IG09: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byr xor ecx, ecx ; byrRegs -[ecx] xor edx, edx
- ; GC ptr vars -{V66}
+ ; GC ptr vars -{V04 V16 V66}
call [<unknown method>] ; gcrRegs -[eax]
- ;; size=51 bbWeight=1.98 PerfScore 35.64 -G_M20362_IG10: ; bbWeight=3.96, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - mov edx, gword ptr [ebp-0x20]
+ jmp G_M20362_IG10 + ;; size=48 bbWeight=1.98 PerfScore 37.13 +G_M20362_IG21: ; bbWeight=1.98, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edx]
- cmp byte ptr [edx], dl - mov ecx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[ecx] - cmp dword ptr [ecx], ecx - call [System.Globalization.TextInfo:ToUpper(System.String):System.String:this] - ; gcrRegs -[ecx edx] +[eax] - mov edx, eax - ; gcrRegs +[edx] - cmp gword ptr [ebx+0x28], 0 - jne SHORT G_M20362_IG13 - ;; size=27 bbWeight=3.96 PerfScore 64.35 -G_M20362_IG11: ; bbWeight=1.98, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax edx] - xor edx, edx - ; gcrRegs +[edx] - jmp SHORT G_M20362_IG14 - ;; size=4 bbWeight=1.98 PerfScore 4.46 -G_M20362_IG12: ; bbWeight=1.98, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edx] +[eax] - jmp SHORT G_M20362_IG10 - ;; size=2 bbWeight=1.98 PerfScore 3.96 -G_M20362_IG13: ; bbWeight=1.98, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] +[edx]
mov ecx, gword ptr [ebx+0x28] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -292,22 +350,11 @@ G_M20362_IG13: ; bbWeight=1.98, gcrefRegs=0000008C {edx ebx edi}, byrefRe ; gcrRegs -[ecx edx] +[eax] mov edx, eax ; gcrRegs +[edx]
- ;; size=13 bbWeight=1.98 PerfScore 18.32 -G_M20362_IG14: ; bbWeight=3.96, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov eax, gword ptr [ebp-0x24] - ; gcrRegs +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - or ecx, edx - ; gcrRegs -[ecx] - je SHORT G_M20362_IG18 - ;; size=9 bbWeight=3.96 PerfScore 9.90 -G_M20362_IG15: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref - test eax, eax - je G_M20362_IG25
+ jmp G_M20362_IG12 + ;; size=18 bbWeight=1.98 PerfScore 22.28 +G_M20362_IG22: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
- je G_M20362_IG25
+ je SHORT G_M20362_IG26
lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] mov esi, dword ptr [eax+0x04] @@ -328,35 +375,11 @@ G_M20362_IG15: ; bbWeight=1.98, gcrefRegs=0000008D {eax edx ebx edi}, byr ; GC ptr vars -{V80} call [<unknown method>] ; gcrRegs -[eax]
- ;; size=51 bbWeight=1.98 PerfScore 35.64 -G_M20362_IG16: ; bbWeight=3.96, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[ecx] - mov edx, gword ptr [ebp-0x20]
+ jmp G_M20362_IG14 + ;; size=44 bbWeight=1.98 PerfScore 37.13 +G_M20362_IG23: ; bbWeight=1.98, gcVars=0000000000010001 {V01 V09}, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx]
- cmp dword ptr [ecx], ecx
; GC ptr vars -{V08}
- call [System.Globalization.TextInfo:ToLower(System.String):System.String:this] - ; gcrRegs -[ecx edx] +[eax]
...

+13 (+5.86%) : 78024.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (FullOpts)

@@ -10,16 +10,16 @@ ; ; V00 this [V00,T03] ( 8, 8.50) ref -> esi this class-hnd single-def <System.Collections.Generic.SortedSet`1[int]> ; V01 arg1 [V01,T04] ( 6, 7.50) ref -> edi class-hnd single-def <int[]>
-; V02 arg2 [V02,T05] ( 4, 6 ) int -> ebx single-def
+; V02 arg2 [V02,T06] ( 3, 5.50) int -> [ebp+0x08] single-def
; V03 loc0 [V03,T07] ( 3, 5 ) int -> [ebp-0x10]
-; V04 loc1 [V04,T00] ( 13, 23.50) int -> [ebp-0x14]
+; V04 loc1 [V04,T00] ( 12, 23 ) int -> [ebp-0x14]
; V05 loc2 [V05,T08] ( 5, 2.50) int -> [ebp-0x18] spill-single-def ;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 tmp1 [V08,T01] ( 2, 16 ) ref -> edx "argument with side effect"
-; V09 tmp2 [V09,T02] ( 2, 16 ) int -> eax "argument with side effect"
+; V09 tmp2 [V09,T02] ( 2, 16 ) int -> ebx "argument with side effect"
; V10 cse0 [V10,T09] ( 3, 1.50) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
-; V11 cse1 [V11,T06] ( 4, 5.50) int -> [ebp-0x20] spill-single-def "CSE - moderate"
+; V11 cse1 [V11,T05] ( 4, 5.50) int -> [ebp-0x20] "CSE - moderate"
; TEMP_01 ref -> [ebp-0x24] ; ; Lcl frame size = 24 @@ -55,51 +55,54 @@ G_M32292_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M32292_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi edi] mov eax, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x20], eax
test eax, eax
- je G_M32292_IG13
+ je G_M32292_IG12
mov edx, dword ptr [edi+0x08]
- mov dword ptr [ebp-0x10], edx
xor ecx, ecx
- jmp G_M32292_IG12 - ;; size=27 bbWeight=0.50 PerfScore 4.75
+ jmp G_M32292_IG11 + ;; size=21 bbWeight=0.50 PerfScore 3.75
G_M32292_IG05: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x14] - inc ecx
+ mov ebx, dword ptr [ebp-0x14] + inc ebx + mov ecx, ebx
mov eax, dword ptr [ebp-0x20]
- ;; size=7 bbWeight=2 PerfScore 4.50
+ mov edx, dword ptr [ebp-0x10] + mov ebx, dword ptr [ebp+0x08] + ;; size=15 bbWeight=2 PerfScore 9.00
G_M32292_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp+0x08], ebx
cmp ecx, ebx
- jge SHORT G_M32292_IG08
+ mov dword ptr [ebp-0x10], edx + jge SHORT G_M32292_IG03 + mov ebx, dword ptr [ebp+0x08]
test ecx, ecx
- je SHORT G_M32292_IG09
+ mov dword ptr [ebp+0x08], ebx + je SHORT G_M32292_IG08
mov edx, gword ptr [esi+0x08] ; gcrRegs +[edx]
+ mov dword ptr [ebp-0x20], eax
cmp ecx, eax
- jae G_M32292_IG13
+ jae G_M32292_IG12
mov dword ptr [ebp-0x14], ecx
- mov eax, dword ptr [edi+4*ecx+0x08]
+ mov ebx, dword ptr [edi+4*ecx+0x08]
push dword ptr [ebp-0x10] mov ecx, edx ; gcrRegs +[ecx]
- mov edx, eax
+ mov edx, ebx
; gcrRegs -[edx] call [<unknown method>] ; gcrRegs -[ecx] test eax, eax je SHORT G_M32292_IG05
- ;; size=43 bbWeight=4 PerfScore 58.00
+ ;; size=58 bbWeight=4 PerfScore 78.00
G_M32292_IG07: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x20] mov ecx, dword ptr [ebp-0x14] ;; size=6 bbWeight=2 PerfScore 4.00 G_M32292_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, ebx - jge SHORT G_M32292_IG03 - ;; size=4 bbWeight=0.50 PerfScore 0.62 -G_M32292_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x20], eax
cmp ecx, eax
- jae SHORT G_M32292_IG13
+ jae SHORT G_M32292_IG12
mov dword ptr [ebp-0x14], ecx mov edx, dword ptr [edi+4*ecx+0x08] mov dword ptr [ebp-0x18], edx @@ -112,11 +115,11 @@ G_M32292_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov dword ptr [ebp-0x1C], ecx mov ecx, gword ptr [ebp-0x24] ; gcrRegs +[ecx]
- mov eax, dword ptr [ebp-0x1C] - call [eax+0x0C]<unknown method>
+ mov ebx, dword ptr [ebp-0x1C] + call [ebx+0x0C]<unknown method>
; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M32292_IG10
+ jne SHORT G_M32292_IG09
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x18] @@ -124,35 +127,34 @@ G_M32292_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x30] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M32292_IG11 - ;; size=55 bbWeight=0.50 PerfScore 14.00 -G_M32292_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M32292_IG10 + ;; size=58 bbWeight=0.50 PerfScore 14.50 +G_M32292_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x18]
- mov eax, dword ptr [ebp-0x1C] - call [eax+0x04]<unknown method>
+ call [ebx+0x04]<unknown method>
; gcrRegs -[ecx]
- ;; size=11 bbWeight=0.50 PerfScore 2.62 -G_M32292_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - mov edx, dword ptr [ebp-0x18] - mov eax, edx
+ ;; size=8 bbWeight=0.50 PerfScore 2.12 +G_M32292_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov ebx, dword ptr [ebp-0x18]
mov ecx, dword ptr [ebp-0x14] inc ecx
- mov dword ptr [ebp-0x10], eax
+ mov edx, ebx
mov eax, dword ptr [ebp-0x20]
+ mov ebx, dword ptr [ebp+0x08]
;; size=15 bbWeight=0.50 PerfScore 2.25
-G_M32292_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M32292_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, ebx jl G_M32292_IG06 jmp G_M32292_IG03 ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M32292_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M32292_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 222, prolog size 14, PerfScore 105.38, instruction count 85, allocated bytes for code 222 (MethodHash=59c481db) for method System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (FullOpts)
+; Total bytes of code 235, prolog size 14, PerfScore 128.25, instruction count 89, allocated bytes for code 235 (MethodHash=59c481db) for method System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (FullOpts)
; ============================================================

+14 (+7.37%) : 35095.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)

@@ -8,25 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 15 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> -; V01 arg1 [V01,T10] ( 5, 11 ) ref -> [ebp-0x18] class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T09] ( 4, 11 ) ref -> edi class-hnd single-def <System.Reflection.ParameterInfo[]> +; V01 arg1 [V01,T11] ( 4, 7 ) ref -> [ebp-0x20] class-hnd single-def <System.Type[]>
; V02 arg2 [V02,T08] ( 3, 21 ) byref -> esi single-def ; V03 loc0 [V03,T07] ( 6, 21 ) int -> [ebp-0x10] ;* V04 loc1 [V04,T12] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc2 [V05,T11] ( 2, 12 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Type>
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> [ebp-0x24] class-hnd spill-single-def <System.Type>
; V06 loc3 [V06,T00] ( 9,100 ) int -> [ebp-0x14] ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-; V08 tmp1 [V08,T05] ( 3, 24 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp1 [V08,T04] ( 3, 24 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp3 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp3 [V10,T15] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
; V11 tmp4 [V11,T13] ( 2, 8 ) int -> ebx "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> edx "arr expr" -; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> edx "argument with side effect"
+; V12 tmp5 [V12,T01] ( 3, 96 ) ref -> ebx "arr expr" +; V13 tmp6 [V13,T02] ( 3, 48 ) ref -> ebx "argument with side effect"
; V14 tmp7 [V14,T03] ( 3, 48 ) ref -> eax "argument with side effect"
-; V15 tmp8 [V15,T06] ( 3, 24 ) byref -> edx "BlockOp address local" -; V16 cse0 [V16,T04] ( 5, 26 ) int -> registers multi-def "CSE - moderate"
+; V15 tmp8 [V15,T05] ( 3, 24 ) byref -> edx "BlockOp address local" +; V16 cse0 [V16,T06] ( 4, 22 ) int -> [ebp-0x18] spill-single-def "CSE - moderate" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -34,7 +35,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 24
mov edi, ecx ; gcrRegs +[edi] mov ebx, edx @@ -44,6 +45,7 @@ G_M59545_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov eax, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x18], eax
mov edx, eax mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -54,47 +56,47 @@ G_M59545_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 ; gcrRegs -[eax] ; byrRegs -[edx] xor eax, eax
- cmp dword ptr [ebx+0x04], 0
+ mov edx, dword ptr [ebx+0x04] + mov dword ptr [ebp-0x1C], edx + test edx, edx
jle SHORT G_M59545_IG09
- ;; size=30 bbWeight=1 PerfScore 9.00
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M59545_IG03: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- mov gword ptr [ebp-0x18], ebx
+ mov gword ptr [ebp-0x20], ebx
; GC ptr vars +{V01} mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebx+4*eax+0x08] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1C], edx
+ mov ecx, gword ptr [ebx+4*eax+0x08] + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V05}
- xor ecx, ecx - mov ebx, dword ptr [edi+0x04] - ; gcrRegs -[ebx] - test ebx, ebx - jle SHORT G_M59545_IG11 - ;; size=22 bbWeight=4 PerfScore 34.00
+ xor edx, edx + cmp dword ptr [ebp-0x18], 0 + jle SHORT G_M59545_IG12 + ;; size=21 bbWeight=4 PerfScore 33.00
G_M59545_IG04: ; bbWeight=16, gcVars=00000C00 {V01 V05}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs -[edx] - mov edx, gword ptr [esi] - ; gcrRegs +[edx] - cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - cmp byte ptr [edx+8*ecx+0x08], 0
+ ; gcrRegs -[ecx ebx] + mov ebx, gword ptr [esi] + ; gcrRegs +[ebx] + cmp edx, dword ptr [ebx+0x04] + jae SHORT G_M59545_IG14 + cmp byte ptr [ebx+8*edx+0x08], 0
jne SHORT G_M59545_IG06 ;; size=14 bbWeight=16 PerfScore 160.00 G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x14], ecx - mov edx, gword ptr [edi+4*ecx+0x08] - ; gcrRegs +[edx] - mov ecx, edx
+ ; gcrRegs -[ebx] + mov dword ptr [ebp-0x14], edx + mov ebx, gword ptr [edi+4*edx+0x08] + ; gcrRegs +[ebx] + mov ecx, ebx
; gcrRegs +[ecx]
- mov edx, dword ptr [edx] - ; gcrRegs -[edx] - mov edx, dword ptr [edx+0x2C] - call [edx+0x1C]<unknown method>
+ mov ebx, dword ptr [ebx] + ; gcrRegs -[ebx] + mov ebx, dword ptr [ebx+0x2C] + call [ebx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]
+ mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx] mov eax, dword ptr [eax] ; gcrRegs -[eax] @@ -102,45 +104,43 @@ G_M59545_IG05: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- mov ecx, dword ptr [ebp-0x14]
+ mov edx, dword ptr [ebp-0x14]
jne SHORT G_M59545_IG08 ;; size=37 bbWeight=8 PerfScore 166.00 G_M59545_IG06: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx - cmp ebx, ecx
+ inc edx + cmp dword ptr [ebp-0x18], edx
jg SHORT G_M59545_IG04
- ;; size=5 bbWeight=16 PerfScore 24.00
+ ;; size=6 bbWeight=16 PerfScore 52.00
G_M59545_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edi] ; byrRegs -[esi] ; GC ptr vars -{V01 V05}
- jmp SHORT G_M59545_IG11
+ jmp SHORT G_M59545_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59545_IG08: ; bbWeight=4, gcVars=00000400 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+G_M59545_IG08: ; bbWeight=4, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[edi] ; byrRegs +[esi]
- ; GC ptr vars +{V01 V10} - mov edx, gword ptr [esi] - ; gcrRegs +[edx]
+ ; GC ptr vars +{V01 V11} + mov ecx, gword ptr [esi] + ; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x10] mov ebx, eax
- cmp ecx, dword ptr [edx+0x04] - jae SHORT G_M59545_IG13 - lea edx, bword ptr [edx+8*ecx+0x08] - ; gcrRegs -[edx]
+ cmp edx, dword ptr [ecx+0x04] + jae SHORT G_M59545_IG14 + lea edx, bword ptr [ecx+8*edx+0x08]
; byrRegs +[edx] mov byte ptr [edx], 1 mov dword ptr [edx+0x04], ebx inc eax
- mov ebx, gword ptr [ebp-0x18] - ; gcrRegs +[ebx] - cmp dword ptr [ebx+0x04], eax - jg SHORT G_M59545_IG03 - ;; size=31 bbWeight=4 PerfScore 62.00
+ mov ebx, dword ptr [ebp-0x1C] + cmp ebx, eax + jg SHORT G_M59545_IG11 + ;; size=30 bbWeight=4 PerfScore 51.00
G_M59545_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx edi]
+ ; gcrRegs -[ecx edi]
; byrRegs -[edx esi]
- ; GC ptr vars -{V01 V10}
+ ; GC ptr vars -{V01 V11}
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend @@ -151,10 +151,21 @@ G_M59545_IG10: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_IG11: ; bbWeight=2, gcVars=00000800 {V01}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref + ; gcrRegs +[edi] + ; byrRegs +[esi] + ; GC ptr vars +{V01 V11} + mov ebx, gword ptr [ebp-0x20] + ; gcrRegs +[ebx] + jmp G_M59545_IG03 + ;; size=8 bbWeight=2 PerfScore 6.00 +G_M59545_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx edi] + ; byrRegs -[esi] + ; GC ptr vars -{V01 V11}
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59545_IG13: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -162,11 +173,11 @@ G_M59545_IG12: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 4 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M59545_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M59545_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 190, prolog size 16, PerfScore 466.75, instruction count 77, allocated bytes for code 190 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 490.00, instruction count 81, allocated bytes for code 204 (MethodHash=29c21766) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-22 (-10.58%) : 20653.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)

@@ -14,8 +14,8 @@ ; V03 loc2 [V03,T00] ( 10, 33 ) int -> ebx ; V04 loc3 [V04,T01] ( 8, 25 ) int -> eax ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V06 tmp0 [V06,T06] ( 2, 16 ) int -> eax "dup spill" -; V07 tmp1 [V07,T03] ( 3, 17 ) int -> ecx "dup spill"
+; V06 tmp0 [V06,T05] ( 2, 16 ) int -> eax "dup spill" +; V07 tmp1 [V07,T06] ( 2, 16 ) int -> eax "dup spill"
; V08 tmp2 [V08,T07] ( 2, 16 ) int -> ebx "dup spill" ; V09 tmp3 [V09,T08] ( 2, 16 ) int -> esi "dup spill" ; V10 tmp4 [V10,T09] ( 2, 16 ) int -> ebx "dup spill" @@ -27,12 +27,12 @@ ;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V17 tmp11 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T14] ( 3, 6 ) ref -> esi single-def "arr expr"
-; V19 tmp13 [V19,T04] ( 2, 16 ) ref -> ecx "arr expr" -; V20 tmp14 [V20,T05] ( 2, 16 ) ref -> esi "arr expr"
+; V19 tmp13 [V19,T03] ( 2, 16 ) ref -> ecx "arr expr" +; V20 tmp14 [V20,T04] ( 2, 16 ) ref -> ecx "arr expr"
; V21 cse0 [V21,T11] ( 5, 10.50) ref -> edx "CSE - moderate"
-; V22 cse1 [V22,T12] ( 4, 10 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V22 cse1 [V22,T12] ( 4, 10 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -40,8 +40,8 @@ G_M61853_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 8 - ;; size=9 bbWeight=1 PerfScore 4.50
+ push eax + ;; size=7 bbWeight=1 PerfScore 5.25
G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref, isz ; byrRegs +[ecx] mov eax, dword ptr [ecx+0x2C] @@ -51,14 +51,13 @@ G_M61853_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], edi
cmp eax, edi jae G_M61853_IG15 movzx esi, word ptr [esi+2*eax+0x08] ; gcrRegs -[esi] cmp esi, 123 je SHORT G_M61853_IG04
- ;; size=35 bbWeight=1 PerfScore 12.75
+ ;; size=32 bbWeight=1 PerfScore 11.75
G_M61853_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] ; byrRegs -[ecx] @@ -104,69 +103,65 @@ G_M61853_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000 mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M61853_IG07: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz cmp esi, 44 jne SHORT G_M61853_IG13 ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M61853_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax-0x01] - mov eax, ecx
+ dec eax
test eax, eax
- jle SHORT G_M61853_IG10
+ jle SHORT G_M61853_IG13
inc ebx
- mov esi, edx - ; gcrRegs +[esi]
+ mov ecx, edx + ; gcrRegs +[ecx]
cmp ebx, edi jae SHORT G_M61853_IG15
- movzx esi, word ptr [esi+2*ebx+0x08] - ; gcrRegs -[esi] - lea edi, [esi-0x30] - cmp edi, 9 - mov edi, dword ptr [ebp-0x14]
+ movzx esi, word ptr [ecx+2*ebx+0x08] + lea ecx, [esi-0x30] + ; gcrRegs -[ecx] + cmp ecx, 9
jbe SHORT G_M61853_IG09
- ;; size=32 bbWeight=4 PerfScore 34.00 -G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=25 bbWeight=4 PerfScore 28.00 +G_M61853_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
- test ecx, ecx - jle SHORT G_M61853_IG13
xor ebx, ebx cmp esi, 125 sete bl
- ;; size=12 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M61853_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref movzx eax, bl ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M61853_IG12: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M61853_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
G_M61853_IG15: ; 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 208, prolog size 9, PerfScore 96.25, instruction count 88, allocated bytes for code 208 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
+; Total bytes of code 186, prolog size 7, PerfScore 89.38, instruction count 83, allocated bytes for code 186 (MethodHash=38980e62) for method System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
; ============================================================

-13 (-7.03%) : 21965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)

@@ -8,19 +8,21 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
+; V00 this [V00,T06] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder>
; V01 arg1 [V01,T02] ( 8, 8.50) int -> esi
-; V02 loc0 [V02,T00] ( 13, 28.50) ref -> edi class-hnd <<unknown class>>
+; V02 loc0 [V02,T00] ( 11, 27 ) ref -> edi class-hnd <<unknown class>>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]>
-; V04 tmp0 [V04,T05] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
+; V04 tmp0 [V04,T07] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol>
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V07 tmp3 [V07,T06] ( 3, 1.50) ref -> eax "field V03.array (fldOffset=0x0)" P-INDEP -; V08 tmp4 [V08,T03] ( 2, 8 ) ref -> edx "argument with side effect" -; V09 cse0 [V09,T01] ( 9, 16.50) int -> ebx multi-def "CSE - aggressive" -; TEMP_01 int -> [ebp-0x10]
+; V07 tmp3 [V07,T08] ( 3, 1.50) ref -> eax "field V03.array (fldOffset=0x0)" P-INDEP +; V08 tmp4 [V08,T05] ( 2, 8 ) ref -> edx "argument with side effect" +; V09 cse0 [V09,T03] ( 4, 9 ) int -> [ebp-0x10] "CSE - aggressive" +; V10 cse1 [V10,T04] ( 4, 9 ) int -> [ebp-0x14] "CSE - aggressive" +; V11 cse2 [V11,T01] ( 4, 14 ) int -> ebx "CSE - aggressive" +; TEMP_01 int -> [ebp-0x18]
;
-; Lcl frame size = 4
+; Lcl frame size = 12
G_M4215_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -28,9 +30,9 @@ G_M4215_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 12
mov esi, edx
- ;; size=9 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.75
G_M4215_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov edi, gword ptr [ecx+0x14] @@ -55,41 +57,38 @@ G_M4215_IG03: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000000 G_M4215_IG04: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] test edi, edi
- je SHORT G_M4215_IG06
+ je SHORT G_M4215_IG07
;; size=4 bbWeight=8 PerfScore 10.00 G_M4215_IG05: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz mov ecx, edi ; gcrRegs +[ecx] mov ebx, dword ptr [edi] mov eax, dword ptr [ebx+0xA0]
+ mov dword ptr [ebp-0x10], eax
call [eax+0x18]<unknown method> ; gcrRegs -[ecx]
- mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x18], eax
mov ecx, edi ; gcrRegs +[ecx] mov edx, dword ptr [ebx+0x88]
+ mov dword ptr [ebp-0x14], edx
call [edx+0x10]<unknown method> ; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10]
+ mov ecx, dword ptr [ebp-0x18]
sub ecx, eax cmp ecx, esi jg SHORT G_M4215_IG03
- ;; size=36 bbWeight=4 PerfScore 64.00 -G_M4215_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - test edi, edi - je SHORT G_M4215_IG08 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=42 bbWeight=4 PerfScore 72.00 +G_M4215_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi ; gcrRegs +[ecx]
- mov ebx, dword ptr [edi] - mov eax, dword ptr [ebx+0xA0] - call [eax+0x18]<unknown method>
+ mov ebx, dword ptr [ebp-0x10] + call [ebx+0x18]<unknown method>
; gcrRegs -[ecx] cmp eax, esi
- jg SHORT G_M4215_IG11 - ;; size=17 bbWeight=0.50 PerfScore 4.25 -G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M4215_IG10 + ;; size=12 bbWeight=0.50 PerfScore 2.75 +G_M4215_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi] mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.UnsupportedMetadataTypeSymbol call CORINFO_HELP_NEWSFAST @@ -98,57 +97,56 @@ G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ; gcrRegs +[ecx] mov gword ptr [eax+0x10], ecx ;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M4215_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M4215_IG08: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov gword ptr [eax+0x20], ecx ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M4215_IG10: ; bbWeight=0.50, epilog, nogc, extend - pop ecx
+G_M4215_IG09: ; bbWeight=0.50, epilog, nogc, extend + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=0.50 PerfScore 1.75 -G_M4215_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 1.75 +G_M4215_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[edi] mov ecx, edi ; gcrRegs +[ecx]
- mov eax, dword ptr [ebx+0xA0] - call [eax+0x18]<unknown method>
+ call [ebx+0x18]<unknown method>
; gcrRegs -[ecx]
- mov dword ptr [ebp-0x10], eax
+ mov ebx, eax
mov ecx, edi ; gcrRegs +[ecx]
- mov edx, dword ptr [ebx+0x88] - call [edx+0x10]<unknown method>
+ mov eax, dword ptr [ebp-0x14] + call [eax+0x10]<unknown method>
; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10] - sub ecx, eax - sub esi, ecx
+ sub ebx, eax + sub esi, ebx
mov ecx, edi ; gcrRegs +[ecx]
- mov eax, dword ptr [ebx+0x88] - call [eax+0x14]<unknown method> - ; gcrRegs -[ecx edi] +[eax]
+ mov edi, dword ptr [ebp-0x14] + ; gcrRegs -[edi] + call [edi+0x14]<unknown method> + ; gcrRegs -[ecx] +[eax]
cmp esi, dword ptr [eax+0x04]
- jae SHORT G_M4215_IG13
+ jae SHORT G_M4215_IG12
mov eax, gword ptr [eax+4*esi+0x08]
- ;; size=52 bbWeight=0.50 PerfScore 12.12 -G_M4215_IG12: ; bbWeight=0.50, epilog, nogc, extend - pop ecx
+ ;; size=36 bbWeight=0.50 PerfScore 9.25 +G_M4215_IG11: ; bbWeight=0.50, epilog, nogc, extend + lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=0.50 PerfScore 1.75 -G_M4215_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.75 +G_M4215_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 185, prolog size 7, PerfScore 120.38, instruction count 73, allocated bytes for code 185 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
+; Total bytes of code 172, prolog size 9, PerfScore 122.00, instruction count 70, allocated bytes for code 172 (MethodHash=5d77ef88) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
; ============================================================

-35 (-3.73%) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 RetBuf [V00,T17] ( 4, 4 ) byref -> [ebp-0x50] single-def -; V01 arg0 [V01,T04] ( 13, 25 ) ref -> [ebp-0x54] class-hnd single-def <System.String>
+; V00 RetBuf [V00,T17] ( 4, 4 ) byref -> [ebp-0x54] single-def +; V01 arg0 [V01,T03] ( 12, 24.50) ref -> [ebp-0x58] class-hnd single-def <System.String>
; V02 loc0 [V02,T01] ( 22, 42 ) ref -> ebx class-hnd exact single-def <System.Text.StringBuilder> ; V03 loc1 [V03,T11] ( 8, 8 ) int -> [ebp-0x10]
-; V04 loc2 [V04,T00] ( 31, 73.50) int -> [ebp-0x14]
+; V04 loc2 [V04,T00] ( 29, 72 ) int -> [ebp-0x14]
; V05 loc3 [V05,T02] ( 22, 41 ) int -> edi ;* V06 loc4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString> ; V07 loc5 [V07,T32] ( 4, 2 ) ushort -> [ebp-0x18] @@ -23,7 +23,7 @@ ; V12 tmp1 [V12,T43] ( 2, 1 ) int -> esi ; V13 tmp2 [V13,T15] ( 2, 8 ) int -> ecx "dup spill" ;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V15 tmp4 [V15,T18] ( 3, 6 ) ref -> [ebp-0x58] class-hnd spill-single-def "Inline stloc first use temp" <ushort[]>
+; V15 tmp4 [V15,T18] ( 3, 6 ) ref -> [ebp-0x5C] class-hnd spill-single-def "Inline stloc first use temp" <ushort[]>
; V16 tmp5 [V16,T08] ( 5, 10 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" ;* V17 tmp6 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -31,9 +31,9 @@ ;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder> ; V21 tmp10 [V21,T22] ( 3, 6 ) int -> [ebp-0x24] spill-single-def "Inline stloc first use temp" ; V22 tmp11 [V22,T19] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <ushort[]>
-; V23 tmp12 [V23,T06] ( 3, 12 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V23 tmp12 [V23,T05] ( 3, 12 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg"
;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.StringBuilder>
-; V25 tmp14 [V25,T20] ( 3, 6 ) ref -> [ebp-0x5C] class-hnd spill-single-def "Inline stloc first use temp" <ushort[]>
+; V25 tmp14 [V25,T20] ( 3, 6 ) ref -> [ebp-0x60] class-hnd spill-single-def "Inline stloc first use temp" <ushort[]>
; V26 tmp15 [V26,T09] ( 5, 10 ) int -> [ebp-0x2C] spill-single-def "Inline stloc first use temp" ;* V27 tmp16 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V28 tmp17 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> @@ -41,7 +41,7 @@ ;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder> ; V31 tmp20 [V31,T23] ( 3, 6 ) int -> [ebp-0x30] spill-single-def "Inline stloc first use temp" ; V32 tmp21 [V32,T21] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <ushort[]>
-; V33 tmp22 [V33,T07] ( 3, 12 ) ushort -> [ebp-0x34] spill-single-def "Inlining Arg"
+; V33 tmp22 [V33,T06] ( 3, 12 ) ushort -> [ebp-0x34] spill-single-def "Inlining Arg"
; V34 tmp23 [V34,T26] ( 4, 4 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String> ;* V35 tmp24 [V35,T46] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V36 tmp25 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> @@ -51,7 +51,7 @@ ; V40 tmp29 [V40,T35] ( 2, 2 ) byref -> esi single-def "Inlining Arg" ;* V41 tmp30 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> ;* V42 tmp31 [V42 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V43 tmp32 [V43,T36] ( 2, 2 ) ref -> [ebp-0x60] spill-single-def "field V06.Mantissa (fldOffset=0x0)" P-INDEP
+; V43 tmp32 [V43,T36] ( 2, 2 ) ref -> [ebp-0x64] spill-single-def "field V06.Mantissa (fldOffset=0x0)" P-INDEP
; V44 tmp33 [V44,T39] ( 2, 2 ) int -> ecx single-def "field V06.Exponent (fldOffset=0x4)" P-INDEP ;* V45 tmp34 [V45 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp35 [V46 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP @@ -69,19 +69,19 @@ ;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ; V59 tmp48 [V59,T47] ( 2, 0 ) ref -> edx "argument with side effect" ; V60 tmp49 [V60,T37] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V61 cse0 [V61,T10] ( 3, 10 ) int -> [ebp-0x38] spill-single-def "CSE - aggressive" -; V62 cse1 [V62,T05] ( 6, 15 ) int -> eax multi-def "CSE - aggressive"
+; V61 cse0 [V61,T07] ( 4, 10.50) int -> [ebp-0x38] spill-single-def "CSE - aggressive" +; V62 cse1 [V62,T10] ( 3, 10 ) int -> [ebp-0x3C] spill-single-def "CSE - aggressive"
; V63 cse2 [V63,T16] ( 2, 8 ) int -> eax "CSE - moderate" ; V64 cse3 [V64,T34] ( 4, 2 ) int -> edx "CSE - conservative" ; V65 cse4 [V65,T40] ( 3, 1.50) int -> edx "CSE - conservative"
-; V66 cse5 [V66,T24] ( 3, 6 ) int -> [ebp-0x3C] spill-single-def "CSE - conservative" -; V67 cse6 [V67,T25] ( 3, 6 ) int -> [ebp-0x40] spill-single-def "CSE - conservative" -; V68 cse7 [V68,T03] ( 8, 27.50) int -> [ebp-0x44] spill-single-def hoist "CSE - aggressive" -; V69 cse8 [V69,T13] ( 4, 8 ) int -> [ebp-0x48] spill-single-def "CSE - conservative" -; V70 cse9 [V70,T14] ( 4, 8 ) int -> [ebp-0x4C] spill-single-def "CSE - conservative" -; TEMP_01 int -> [ebp-0x64]
+; V66 cse5 [V66,T24] ( 3, 6 ) int -> [ebp-0x40] spill-single-def "CSE - conservative" +; V67 cse6 [V67,T25] ( 3, 6 ) int -> [ebp-0x44] spill-single-def "CSE - conservative" +; V68 cse7 [V68,T04] ( 7, 26.50) int -> [ebp-0x48] spill-single-def hoist "CSE - aggressive" +; V69 cse8 [V69,T13] ( 4, 8 ) int -> [ebp-0x4C] spill-single-def "CSE - conservative" +; V70 cse9 [V70,T14] ( 4, 8 ) int -> [ebp-0x50] spill-single-def "CSE - conservative" +; TEMP_01 int -> [ebp-0x68]
;
-; Lcl frame size = 88
+; Lcl frame size = 92
G_M59022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -89,10 +89,10 @@ G_M59022_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 88
+ sub esp, 92
xor eax, eax mov dword ptr [ebp-0x1C], eax
- mov bword ptr [ebp-0x50], ecx
+ mov bword ptr [ebp-0x54], ecx
; GC ptr vars +{V00} mov esi, edx ; gcrRegs +[esi] @@ -116,7 +116,7 @@ G_M59022_IG02: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=000 mov dword ptr [ebp-0x10], eax xor ecx, ecx mov edx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x44], edx
+ mov dword ptr [ebp-0x48], edx
jmp SHORT G_M59022_IG04 ;; size=57 bbWeight=1 PerfScore 12.00 G_M59022_IG03: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref @@ -134,44 +134,44 @@ G_M59022_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 xor edi, edi jmp G_M59022_IG14 ;; size=7 bbWeight=1 PerfScore 2.25
-G_M59022_IG07: ; bbWeight=2, gcVars=0000000000020010 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M59022_IG07: ; bbWeight=2, gcVars=0000000000020008 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
- ; GC ptr vars +{V01 V04} - cmp eax, 48
+ ; GC ptr vars +{V01 V03} + cmp dword ptr [ebp-0x38], 48
jne SHORT G_M59022_IG08 inc edi jmp G_M59022_IG13
- ;; size=11 bbWeight=2 PerfScore 7.00
+ ;; size=12 bbWeight=2 PerfScore 10.50
G_M59022_IG08: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz test edi, edi
- jl G_M59022_IG42
+ jl G_M59022_IG40
test edi, edi je SHORT G_M59022_IG11 mov eax, gword ptr [ebx+0x04] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x58], eax
+ mov gword ptr [ebp-0x5C], eax
; GC ptr vars +{V15} mov eax, dword ptr [ebx+0x0C] ; gcrRegs -[eax] mov dword ptr [ebp-0x20], eax add eax, edi
- mov dword ptr [ebp-0x64], eax - mov eax, gword ptr [ebp-0x58]
+ mov dword ptr [ebp-0x68], eax + mov eax, gword ptr [ebp-0x5C]
; gcrRegs +[eax] mov eax, dword ptr [eax+0x04] ; gcrRegs -[eax]
- mov dword ptr [ebp-0x48], eax - mov eax, dword ptr [ebp-0x64] - cmp eax, dword ptr [ebp-0x48]
+ mov dword ptr [ebp-0x4C], eax + mov eax, dword ptr [ebp-0x68] + cmp eax, dword ptr [ebp-0x4C]
ja SHORT G_M59022_IG09
- mov eax, dword ptr [ebp-0x48]
+ mov eax, dword ptr [ebp-0x4C]
mov esi, dword ptr [ebp-0x20] cmp eax, esi
- jb G_M59022_IG43
+ jb G_M59022_IG41
sub eax, esi cmp eax, edi
- jb G_M59022_IG43 - mov eax, gword ptr [ebp-0x58]
+ jb G_M59022_IG41 + mov eax, gword ptr [ebp-0x5C]
; gcrRegs +[eax] lea eax, bword ptr [eax+2*esi+0x08] ; gcrRegs -[eax] @@ -181,7 +181,7 @@ G_M59022_IG08: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 mov ecx, eax ; byrRegs +[ecx] mov edx, esi
- ; GC ptr vars -{V04 V15}
+ ; GC ptr vars -{V03 V15}
call [<unknown method>] ; byrRegs -[eax ecx] add dword ptr [ebx+0x0C], edi @@ -203,13 +203,13 @@ G_M59022_IG10: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 ;; size=8 bbWeight=2 PerfScore 6.50 G_M59022_IG11: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz xor edi, edi
- mov esi, gword ptr [ebp-0x54]
+ mov esi, gword ptr [ebp-0x58]
; gcrRegs +[esi] mov ecx, dword ptr [ebp-0x14] movzx eax, word ptr [esi+2*ecx+0x08] mov dword ptr [ebp-0x28], eax mov eax, dword ptr [ebx+0x0C]
- mov dword ptr [ebp-0x3C], eax
+ mov dword ptr [ebp-0x40], eax
mov dword ptr [ebp-0x24], eax mov eax, gword ptr [ebx+0x04] ; gcrRegs +[eax] @@ -219,7 +219,7 @@ G_M59022_IG11: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 jbe SHORT G_M59022_IG12 mov edx, dword ptr [ebp-0x28] mov word ptr [eax+2*esi+0x08], dx
- mov eax, dword ptr [ebp-0x3C]
+ mov eax, dword ptr [ebp-0x40]
; gcrRegs -[eax] inc eax mov dword ptr [ebx+0x0C], eax @@ -238,99 +238,79 @@ G_M59022_IG13: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 mov dword ptr [ebp-0x10], eax mov ecx, dword ptr [ebp-0x14] inc ecx
- mov edx, dword ptr [ebp-0x44] - mov esi, gword ptr [ebp-0x54]
+ mov edx, dword ptr [ebp-0x48] + mov esi, gword ptr [ebp-0x58]
; gcrRegs +[esi] ;; size=17 bbWeight=2 PerfScore 11.00 G_M59022_IG14: ; bbWeight=8, gcVars=0000000000020000 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars -{V01} cmp edx, ecx
- jle SHORT G_M59022_IG17
+ jle SHORT G_M59022_IG18
;; size=4 bbWeight=8 PerfScore 10.00
-G_M59022_IG15: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - mov gword ptr [ebp-0x54], esi
+G_M59022_IG15: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov gword ptr [ebp-0x58], esi
; GC ptr vars +{V01} mov dword ptr [ebp-0x14], ecx movzx eax, word ptr [esi+2*ecx+0x08]
- cmp eax, 48 - jl SHORT G_M59022_IG19 - cmp eax, 57 - jle G_M59022_IG07 - ;; size=25 bbWeight=4 PerfScore 26.00 -G_M59022_IG16: ; bbWeight=2, gcVars=0000000000020010 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+ mov dword ptr [ebp-0x38], eax + sub eax, 48 + cmp eax, 9 + jbe G_M59022_IG07 + ;; size=26 bbWeight=4 PerfScore 26.00 +G_M59022_IG16: ; bbWeight=0.50, gcVars=0000000000020008 {V00 V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
- mov ecx, dword ptr [ebp-0x14] - mov esi, gword ptr [ebp-0x54]
+ cmp dword ptr [ebp-0x38], 46 + jne SHORT G_M59022_IG17 + jmp G_M59022_IG25 + ;; size=11 bbWeight=0.50 PerfScore 2.50 +G_M59022_IG17: ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + mov esi, gword ptr [ebp-0x58]
; gcrRegs +[esi]
- ;; size=6 bbWeight=2 PerfScore 4.00 -G_M59022_IG17: ; bbWeight=1, gcVars=0000000000020000 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V01} - mov edx, dword ptr [ebp-0x44] - cmp edx, ecx - mov dword ptr [ebp-0x14], ecx
...

+19 (+1.82%) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 this [V00,T00] ( 28, 57.50) byref -> esi this single-def ; V01 arg1 [V01,T17] ( 4, 3.50) byref -> [ebp-0x2C] single-def
-; V02 loc0 [V02,T01] ( 18, 55.50) ushort -> [ebp-0x14]
+; V02 loc0 [V02,T01] ( 18, 57.50) ushort -> [ebp-0x14]
; V03 loc1 [V03 ] ( 36, 70.50) struct (16) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-; V04 loc2 [V04,T04] ( 8, 16 ) ushort -> [ebp-0x28]
+; V04 loc2 [V04,T08] ( 6, 8 ) ushort -> [ebp-0x28]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[ushort]> ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V08 tmp1 [V08,T07] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
+; V08 tmp1 [V08,T06] ( 5, 14.50) ushort -> ebx "Inline stloc first use temp"
; V09 tmp2 [V09,T09] ( 4, 8 ) int -> ecx "Inline stloc first use temp" ;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V11 tmp4 [V11,T30] ( 2, 2 ) int -> eax "Inlining Arg" @@ -36,10 +36,10 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ; V26 tmp19 [V26,T15] ( 4, 8 ) int -> eax "Inline stloc first use temp" ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V28 tmp21 [V28,T08] ( 4, 10 ) ushort -> edx "Inline stloc first use temp"
+; V28 tmp21 [V28,T07] ( 4, 10 ) ushort -> edx "Inline stloc first use temp"
; V29 tmp22 [V29,T16] ( 4, 8 ) int -> eax "Inline stloc first use temp" ;* V30 tmp23 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp24 [V31,T05] ( 4, 16 ) int -> esi "Inlining Arg"
+; V31 tmp24 [V31,T04] ( 4, 16 ) int -> esi "Inlining Arg"
; V32 tmp25 [V32,T03] ( 4, 32 ) int -> esi "Inlining Arg" ;* V33 tmp26 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V34 tmp27 [V34 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP @@ -58,7 +58,7 @@ ; V47 GsCookie [V47 ] ( 1, 1 ) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V48 LocAllocSP [V48,T33] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar" ; V49 cse0 [V49,T31] ( 3, 1.50) int -> eax "CSE - conservative"
-; V50 cse1 [V50,T06] ( 4, 16 ) int -> ecx "CSE - moderate"
+; V50 cse1 [V50,T05] ( 4, 16 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 40 @@ -80,40 +80,36 @@ G_M25128_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; byrRegs +[edi] ;; size=31 bbWeight=1 PerfScore 9.25 G_M25128_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov bword ptr [ebp-0x2C], edi - ; GC ptr vars +{V01}
mov gword ptr [edi], 0xD1FFAB1E
- mov edi, bword ptr [ebp-0x2C] - ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=6 bbWeight=1 PerfScore 1.00
G_M25128_IG03: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- ; GC ptr vars -{V01}
mov ecx, dword ptr [esi+0x08] cmp ecx, dword ptr [esi+0x04]
- jge G_M25128_IG27
+ jge G_M25128_IG23
;; size=12 bbWeight=8 PerfScore 48.00 G_M25128_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ecx, dword ptr [esi+0x08] lea eax, [ecx+0x01] mov dword ptr [esi+0x08], eax cmp ecx, dword ptr [esi+0x04]
- jae G_M25128_IG58
+ jae G_M25128_IG56
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx ebx, word ptr [eax+2*ecx] test ebx, ebx
- je G_M25128_IG59
+ je G_M25128_IG57
;; size=32 bbWeight=2 PerfScore 25.50 G_M25128_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref ; byrRegs -[eax] mov eax, ebx test eax, eax
- je G_M25128_IG32
+ je G_M25128_IG28
;; size=10 bbWeight=8 PerfScore 12.00 G_M25128_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz cmp eax, 44
- je G_M25128_IG28
+ je G_M25128_IG24
cmp eax, 61
- je G_M25128_IG30
+ je G_M25128_IG26
mov dword ptr [ebp-0x14], eax mov ecx, eax call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte] @@ -155,137 +151,143 @@ G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 mov ecx, ebx mov eax, dword ptr [esi+0x08] cmp eax, dword ptr [esi+0x04]
- jge G_M25128_IG34
+ jge G_M25128_IG30
lea edx, [eax+0x01] mov dword ptr [esi+0x08], edx cmp eax, dword ptr [esi+0x04]
- jae G_M25128_IG58
+ jae G_M25128_IG56
mov edx, bword ptr [esi] ; byrRegs +[edx] movzx edx, word ptr [edx+2*eax] ; byrRegs -[edx] test edx, edx
- je G_M25128_IG59
+ je G_M25128_IG57
;; size=43 bbWeight=0.50 PerfScore 8.50 G_M25128_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov ebx, edx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
test edx, edx
- je G_M25128_IG51
+ je G_M25128_IG49
test ecx, ecx
- je SHORT G_M25128_IG15 - ;; size=12 bbWeight=4 PerfScore 10.00
+ je G_M25128_IG31 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M25128_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref cmp edx, ecx
- je G_M25128_IG52
+ je G_M25128_IG50
;; size=8 bbWeight=2 PerfScore 2.50
-G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - test ecx, ecx - jne SHORT G_M25128_IG17 - ;; size=4 bbWeight=4 PerfScore 5.00 -G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 44 - je G_M25128_IG56 - cmp edx, 61 - je G_M25128_IG56 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz - mov dword ptr [ebp-0x28], ecx - test ecx, ecx - jne SHORT G_M25128_IG19 - ;; size=7 bbWeight=4 PerfScore 9.00 -G_M25128_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref - cmp edx, 39 - je G_M25128_IG59 - cmp edx, 34 - je G_M25128_IG59 - ;; size=18 bbWeight=2 PerfScore 5.00 -G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp edx, 92
- jne G_M25128_IG48
+ jne G_M25128_IG46
;; size=9 bbWeight=4 PerfScore 5.00
-G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov edx, dword ptr [esi+0x08] cmp edx, dword ptr [esi+0x04]
- jge G_M25128_IG35
+ jge G_M25128_IG33
mov edx, dword ptr [esi+0x08] lea eax, [edx+0x01] mov dword ptr [esi+0x08], eax cmp edx, dword ptr [esi+0x04]
- jae G_M25128_IG58
+ jae G_M25128_IG56
mov eax, bword ptr [esi] ; byrRegs +[eax] movzx edx, word ptr [eax+2*edx] test edx, edx
- je G_M25128_IG59
+ je G_M25128_IG57
;; size=44 bbWeight=2 PerfScore 37.50
-G_M25128_IG21: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M25128_IG17: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; byrRegs -[eax] cmp edx, 61
- ja G_M25128_IG38 - cmp edx, 39
ja G_M25128_IG36
+ cmp edx, 39 + ja G_M25128_IG34
cmp edx, 34
- je SHORT G_M25128_IG26
+ je SHORT G_M25128_IG22
cmp edx, 39 mov bword ptr [ebp-0x2C], edi ; GC ptr vars +{V01}
- jne G_M25128_IG59
+ jne G_M25128_IG57
;; size=35 bbWeight=2 PerfScore 12.00
-G_M25128_IG22: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M25128_IG18: ; bbWeight=2, gcVars=0000000000020000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref
; byrRegs -[edi] mov eax, dword ptr [ebp-0x20] mov ebx, bword ptr [ebp-0x1C] ; byrRegs +[ebx] mov edi, dword ptr [ebp-0x18] cmp eax, edi
- jae G_M25128_IG41
+ jae G_M25128_IG39
mov word ptr [ebx+2*eax], dx inc eax mov dword ptr [ebp-0x20], eax ;; size=25 bbWeight=2 PerfScore 13.00
-G_M25128_IG23: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M25128_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
; byrRegs -[ebx] mov eax, dword ptr [esi+0x08] cmp eax, dword ptr [esi+0x04]
- jge G_M25128_IG50
+ jge G_M25128_IG48
;; size=12 bbWeight=4 PerfScore 24.00
-G_M25128_IG24: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M25128_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov eax, dword ptr [esi+0x08] lea edx, [eax+0x01] mov dword ptr [esi+0x08], edx cmp eax, dword ptr [esi+0x04]
- jae G_M25128_IG58
+ jae G_M25128_IG56
mov edx, bword ptr [esi] ; byrRegs +[edx] movzx edx, word ptr [edx+2*eax] ; byrRegs -[edx] test edx, edx
- je G_M25128_IG59
+ je G_M25128_IG57
;; size=32 bbWeight=2 PerfScore 25.50
-G_M25128_IG25: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+G_M25128_IG21: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov ebx, edx
- mov ecx, dword ptr [ebp-0x28]
mov edi, bword ptr [ebp-0x2C] ; byrRegs +[edi] jmp G_M25128_IG13
- ;; size=13 bbWeight=4 PerfScore 17.00 -G_M25128_IG26: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
+ ;; size=10 bbWeight=4 PerfScore 13.00 +G_M25128_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; GC ptr vars -{V01} mov bword ptr [ebp-0x2C], edi ; GC ptr vars +{V01}
- jmp SHORT G_M25128_IG22
+ jmp SHORT G_M25128_IG18
;; size=5 bbWeight=1 PerfScore 3.00
-G_M25128_IG27: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M25128_IG23: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
; GC ptr vars -{V01} xor ebx, ebx jmp G_M25128_IG05 ;; size=7 bbWeight=2 PerfScore 4.50
-G_M25128_IG28: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
...

+14 (+2.10%) : 14524.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)

@@ -8,58 +8,58 @@ ; 0 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T21] ( 6, 6 ) ref -> [ebp-0x4C] this class-hnd single-def <SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree> -; V01 arg1 [V01,T41] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> -; V02 loc0 [V02,T18] ( 3, 11 ) int -> [ebp-0x24] spill-single-def -; V03 loc1 [V03,T08] ( 5, 45 ) byref -> [ebp-0x50] spill-single-def -; V04 loc2 [V04,T06] ( 8, 76 ) byref -> [ebp-0x54] spill-single-def -; V05 loc3 [V05,T20] ( 8, 8 ) int -> [ebp-0x28] spill-single-def -; V06 loc4 [V06,T31] ( 4, 4 ) int -> [ebp-0x2C] spill-single-def -; V07 loc5 [V07,T43] ( 2, 1.50) int -> [ebp-0x30] spill-single-def -; V08 loc6 [V08,T04] ( 10,107 ) int -> esi
+; V00 this [V00,T23] ( 6, 6 ) ref -> [ebp-0x50] this class-hnd single-def <SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree> +; V01 arg1 [V01,T42] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]> +; V02 loc0 [V02,T21] ( 3, 11 ) int -> [ebp-0x24] spill-single-def +; V03 loc1 [V03,T08] ( 5, 45 ) byref -> [ebp-0x54] spill-single-def +; V04 loc2 [V04,T06] ( 8, 83 ) byref -> [ebp-0x58] spill-single-def +; V05 loc3 [V05,T17] ( 8, 18.50) int -> [ebp-0x28] spill-single-def +; V06 loc4 [V06,T34] ( 4, 4 ) int -> [ebp-0x2C] spill-single-def +; V07 loc5 [V07,T31] ( 2, 5 ) int -> [ebp-0x30] spill-single-def +; V08 loc6 [V08,T04] ( 9,110 ) int -> esi
; V09 loc7 [V09,T02] ( 10,188.50) int -> edx
-; V10 loc8 [V10,T11] ( 3, 32.50) int -> registers -; V11 loc9 [V11,T37] ( 5, 2 ) ref -> [ebp-0x58] class-hnd EH-live spill-single-def <<unknown class>> -; V12 loc10 [V12,T17] ( 6, 11 ) byref -> [ebp-0x5C] spill-single-def
+; V10 loc8 [V10,T11] ( 3, 36 ) int -> registers +; V11 loc9 [V11,T38] ( 5, 2 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>> +; V12 loc10 [V12,T20] ( 6, 11 ) byref -> [ebp-0x60] spill-single-def
; V13 loc11 [V13 ] ( 4, 3 ) struct (12) [ebp-0x3C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Memory`1[int]>
-; V14 loc12 [V14,T12] ( 12, 30 ) int -> edi -; V15 loc13 [V15,T19] ( 5, 10 ) int -> ecx
+; V14 loc12 [V14,T13] ( 12, 30 ) int -> edi +; V15 loc13 [V15,T22] ( 5, 10 ) int -> [ebp-0x40]
;* V16 loc14 [V16 ] ( 0, 0 ) int -> zero-ref ;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref
-; V18 loc16 [V18,T13] ( 7, 25 ) int -> ebx
+; V18 loc16 [V18,T12] ( 7, 32 ) int -> ebx
; V19 loc17 [V19,T09] ( 5, 40 ) int -> eax ; V20 loc18 [V20,T10] ( 3, 40 ) int -> esi ;* V21 tmp0 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>
-; V22 tmp1 [V22,T26] ( 3, 6 ) ref -> edi single-def "LDVIRTFTN this pointer" -; V23 tmp2 [V23,T33] ( 2, 4 ) int -> eax "VirtualCall through function pointer"
+; V22 tmp1 [V22,T28] ( 3, 6 ) ref -> edi single-def "LDVIRTFTN this pointer" +; V23 tmp2 [V23,T36] ( 2, 4 ) int -> eax "VirtualCall through function pointer"
;* V24 tmp3 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>
-; V25 tmp4 [V25,T14] ( 3, 24 ) int -> ecx "Span.get_Item index" -; V26 tmp5 [V26,T16] ( 3, 12 ) byref -> ecx "dup spill" -; V27 tmp6 [V27,T23] ( 2, 8 ) byref -> [ebp-0x60] spill-single-def "impSpillLclRefs" -; V28 tmp7 [V28,T24] ( 2, 8 ) byref -> ebx "impSpillLclRefs" -; V29 tmp8 [V29,T15] ( 2, 16 ) int -> edx "dup spill"
+; V25 tmp4 [V25,T16] ( 3, 24 ) int -> ecx "Span.get_Item index" +; V26 tmp5 [V26,T19] ( 3, 12 ) byref -> ecx "dup spill" +; V27 tmp6 [V27,T25] ( 2, 8 ) byref -> [ebp-0x64] spill-single-def "impSpillLclRefs" +; V28 tmp7 [V28,T26] ( 2, 8 ) byref -> ecx "impSpillLclRefs" +; V29 tmp8 [V29,T18] ( 2, 16 ) int -> edx "dup spill"
; V30 tmp9 [V30,T00] ( 3,192 ) byref -> ecx "dup spill" ; V31 tmp10 [V31,T03] ( 2,128 ) int -> edx "dup spill" ; V32 tmp11 [V32,T01] ( 3,192 ) byref -> ecx "dup spill"
-; V33 tmp12 [V33,T34] ( 3, 3 ) byref -> eax single-def "dup spill" -; V34 tmp13 [V34,T35] ( 3, 3 ) byref -> eax single-def "dup spill"
+; V33 tmp12 [V33,T14] ( 3, 24 ) byref -> eax single-def "dup spill" +; V34 tmp13 [V34,T15] ( 3, 24 ) byref -> edx single-def "dup spill"
; V35 tmp14 [V35,T05] ( 3, 96 ) int -> esi "impSpillLclRefs" ;* V36 tmp15 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>
-; V37 tmp16 [V37,T25] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <int[]>
+; V37 tmp16 [V37,T27] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <int[]>
;* V38 tmp17 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V39 tmp18 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V40 tmp19 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[int]>
-; V41 tmp20 [V41,T30] ( 6, 4 ) byref -> registers "Inline stloc first use temp" -; V42 tmp21 [V42,T29] ( 7, 4.50) int -> registers "Inline stloc first use temp" -; V43 tmp22 [V43,T28] ( 9, 5.50) ref -> [ebp-0x64] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
+; V41 tmp20 [V41,T33] ( 6, 4 ) byref -> registers "Inline stloc first use temp" +; V42 tmp21 [V42,T32] ( 7, 4.50) int -> registers "Inline stloc first use temp" +; V43 tmp22 [V43,T30] ( 9, 5.50) ref -> [ebp-0x68] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
;* V44 tmp23 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V46 tmp25 [V46 ] ( 3, 1.50) struct ( 8) [ebp-0x44] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[int]> -; V47 tmp26 [V47,T38] ( 4, 2 ) int -> ecx single-def "Inline stloc first use temp" -; V48 tmp27 [V48,T42] ( 3, 1.50) int -> edi single-def "Inline stloc first use temp"
+; V46 tmp25 [V46 ] ( 3, 1.50) struct ( 8) [ebp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[int]> +; V47 tmp26 [V47,T39] ( 4, 2 ) int -> ecx single-def "Inline stloc first use temp" +; V48 tmp27 [V48,T43] ( 3, 1.50) int -> edi single-def "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <int[]> ;* V50 tmp29 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <int[]>
-; V51 tmp30 [V51,T40] ( 2, 2 ) byref -> edx single-def "Inlining Arg"
+; V51 tmp30 [V51,T41] ( 2, 2 ) byref -> edx single-def "Inlining Arg"
;* V52 tmp31 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp32 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp33 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> @@ -75,7 +75,7 @@ ;* V64 tmp43 [V64 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V65 tmp44 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V66 tmp45 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x4)" P-INDEP
-; V67 tmp46 [V67,T39] ( 3, 2 ) byref -> registers "field V38._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp46 [V67,T40] ( 3, 2 ) byref -> registers "field V38._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp47 [V68 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP ;* V69 tmp48 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp49 [V70 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP @@ -83,21 +83,21 @@ ;* V72 tmp51 [V72 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP ;* V73 tmp52 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP ;* V74 tmp53 [V74 ] ( 0, 0 ) int -> zero-ref single-def "field V44._length (fldOffset=0x4)" P-INDEP
-; V75 tmp54 [V75 ] ( 2, 1 ) byref -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V46._reference (fldOffset=0x0)" P-DEP -; V76 tmp55 [V76 ] ( 2, 1 ) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V46._length (fldOffset=0x4)" P-DEP
+; V75 tmp54 [V75 ] ( 2, 1 ) byref -> [ebp-0x48] do-not-enreg[X] addr-exposed "field V46._reference (fldOffset=0x0)" P-DEP +; V76 tmp55 [V76 ] ( 2, 1 ) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V46._length (fldOffset=0x4)" P-DEP
; V77 tmp56 [V77,T44] ( 2, 1 ) byref -> eax single-def "field V54._reference (fldOffset=0x0)" P-INDEP ;* V78 tmp57 [V78 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP ;* V79 tmp58 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp59 [V80 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x4)" P-INDEP
-; V81 tmp60 [V81,T22] ( 5, 8 ) byref -> [ebp-0x68] spill-single-def "V01.[000..004)" -; V82 tmp61 [V82,T27] ( 3, 6 ) int -> [ebp-0x48] spill-single-def "V01.[004..008)" -; V83 tmp62 [V83,T32] ( 2, 4 ) ref -> edi single-def "argument with side effect"
+; V81 tmp60 [V81,T24] ( 5, 8 ) byref -> [ebp-0x6C] spill-single-def "V01.[000..004)" +; V82 tmp61 [V82,T29] ( 3, 6 ) int -> [ebp-0x4C] spill-single-def "V01.[004..008)" +; V83 tmp62 [V83,T35] ( 2, 4 ) ref -> edi single-def "argument with side effect"
; V84 EHSlots [V84 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V85 cse0 [V85,T36] ( 3, 3 ) ref -> [ebp-0x6C] spill-single-def "CSE - conservative"
+; V85 cse0 [V85,T37] ( 3, 3 ) ref -> [ebp-0x70] spill-single-def "CSE - conservative"
; V86 cse1 [V86,T07] ( 4, 49 ) int -> eax "CSE - moderate"
-; TEMP_01 int -> [ebp-0x70]
+; TEMP_01 int -> [ebp-0x74]
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M27110_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -105,34 +105,35 @@ G_M27110_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 100
+ sub esp, 104
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x44], ymm4 - vmovdqu xmmword ptr [ebp-0x24], xmm4
+ vmovdqu ymmword ptr [ebp-0x48], ymm4 + vmovdqu xmmword ptr [ebp-0x28], xmm4
xor eax, eax
+ mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax mov esi, ecx ; gcrRegs +[esi]
- ;; size=30 bbWeight=1 PerfScore 10.33
+ ;; size=33 bbWeight=1 PerfScore 11.33
G_M27110_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edi, bword ptr [ebp+0x08] ; byrRegs +[edi]
- mov bword ptr [ebp-0x68], edi
+ mov bword ptr [ebp-0x6C], edi
; GC ptr vars +{V81} mov ebx, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x48], ebx
+ mov dword ptr [ebp-0x4C], ebx
mov eax, dword ptr [esi+0x30] mov dword ptr [ebp-0x24], eax
- mov bword ptr [ebp-0x50], edi
+ mov bword ptr [ebp-0x54], edi
; GC ptr vars +{V03} mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x6C], ecx
+ mov gword ptr [ebp-0x70], ecx
; GC ptr vars +{V85} test ecx, ecx jne SHORT G_M27110_IG04 ;; size=31 bbWeight=1 PerfScore 12.25
-G_M27110_IG03: ; bbWeight=0.50, gcVars=0000001000400100 {V03 V81 V85}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M27110_IG03: ; bbWeight=0.50, gcVars=0000002001000100 {V03 V81 V85}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx] ; byrRegs -[edi] xor ecx, ecx @@ -151,13 +152,13 @@ G_M27110_IG04: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 ;; size=8 bbWeight=0.50 PerfScore 1.38 G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref ; byrRegs -[ebx]
- mov bword ptr [ebp-0x54], ecx
+ mov bword ptr [ebp-0x58], ecx
; GC ptr vars +{V04}
- mov gword ptr [ebp-0x4C], esi
+ mov gword ptr [ebp-0x50], esi
; GC ptr vars +{V00} mov ebx, dword ptr [esi+0x1C] mov dword ptr [ebp-0x28], ebx
- mov esi, dword ptr [ebp-0x48]
+ mov esi, dword ptr [ebp-0x4C]
; gcrRegs -[esi] sar esi, 1 mov dword ptr [ebp-0x2C], esi @@ -165,7 +166,7 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 sar esi, 1 mov dword ptr [ebp-0x30], esi xor esi, esi
- mov edi, gword ptr [ebp-0x6C]
+ mov edi, gword ptr [ebp-0x70]
; gcrRegs +[edi] push ebx mov ecx, edi @@ -175,7 +176,7 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 ; GC ptr vars -{V85} call [<unknown method>] ; gcrRegs -[ecx edi]
- mov edi, gword ptr [ebp-0x4C]
+ mov edi, gword ptr [ebp-0x50]
; gcrRegs +[edi] mov edi, gword ptr [edi+0x08] push 0xD1FFAB1E @@ -191,10 +192,10 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 mov edx, dword ptr [ebp-0x2C] call eax ; gcrRegs -[ecx edi] +[eax]
- mov gword ptr [ebp-0x58], eax
+ mov gword ptr [ebp-0x5C], eax
; GC ptr vars +{V11} ;; size=77 bbWeight=1 PerfScore 26.75
-G_M27110_IG06: ; bbWeight=1, gcVars=0000002000400140 {V03 V04 V11 V81}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+G_M27110_IG06: ; bbWeight=1, gcVars=0000004001000140 {V03 V04 V11 V81}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
lea edx, [ebp-0x3C] mov ecx, eax ; gcrRegs +[ecx] @@ -205,12 +206,12 @@ G_M27110_IG06: ; bbWeight=1, gcVars=0000002000400140 {V03 V04 V11 V81}, g xor eax, eax mov ecx, gword ptr [ebp-0x3C] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x64], ecx
+ mov gword ptr [ebp-0x68], ecx
; GC ptr vars +{V43} test ecx, ecx je G_M27110_IG12 ;; size=29 bbWeight=1 PerfScore 7.50
-G_M27110_IG07: ; bbWeight=0.50, gcVars=0000002010400140 {V03 V04 V11 V43 V81}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M27110_IG07: ; bbWeight=0.50, gcVars=0000004041000140 {V03 V04 V11 V43 V81}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[edi] mov edx, dword ptr [ecx] test dword ptr [edx], 0xD1FFAB1E @@ -231,7 +232,7 @@ G_M27110_IG07: ; bbWeight=0.50, gcVars=0000002010400140 {V03 V04 V11 V43 ; gcrRegs -[eax ecx edx] ;; size=42 bbWeight=0.50 PerfScore 6.12 G_M27110_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [ebp-0x64]
+ mov edi, gword ptr [ebp-0x68]
; gcrRegs +[edi] lea edx, bword ptr [edi+0x08] ; byrRegs +[edx] @@ -260,38 +261,38 @@ G_M27110_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000 ; gcrRegs -[eax ecx edx] ;; size=32 bbWeight=0.50 PerfScore 3.12 ...

+12 (+2.91%) : 19362.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:g_getInterpolationCloseToken|4342(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)

@@ -36,8 +36,8 @@ ; V25 tmp17 [V25,T09] ( 3, 3 ) int -> eax single-def "field V03.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ; V26 tmp18 [V26,T11] ( 3, 2.50) int -> ecx single-def "field V03.<End>k__BackingField (fldOffset=0x4)" P-INDEP ;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref "field V07._value (fldOffset=0x0)" P-INDEP
-; V28 cse0 [V28,T19] ( 3, 1.50) int -> [ebp-0x10] spill-single-def "CSE - conservative" -; V29 cse1 [V29,T20] ( 3, 1.50) int -> [ebp-0x14] spill-single-def "CSE - conservative"
+; V28 cse0 [V28,T19] ( 3, 1.50) int -> [ebp-0x10] "CSE - conservative" +; V29 cse1 [V29,T20] ( 3, 1.50) int -> [ebp-0x14] "CSE - conservative"
; V30 cse2 [V30,T21] ( 2, 1 ) int -> edx "CSE - conservative" ; ; Lcl frame size = 8 @@ -144,8 +144,12 @@ G_M58175_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; byrRegs -[ecx edx] test eax, eax je SHORT G_M58175_IG08
+ mov eax, dword ptr [ebp-0x10] + mov edx, dword ptr [ebp-0x14]
mov ecx, dword ptr [edi+0x04] cmp ecx, dword ptr [ebx+0x04]
+ mov dword ptr [ebp-0x10], eax + mov dword ptr [ebp-0x14], edx
jne SHORT G_M58175_IG08 mov ecx, 1 call [<unknown method>] @@ -163,7 +167,7 @@ G_M58175_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; byrRegs -[ecx edx] test eax, eax jne SHORT G_M58175_IG10
- ;; size=176 bbWeight=0.50 PerfScore 31.25
+ ;; size=188 bbWeight=0.50 PerfScore 33.25
G_M58175_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -234,6 +238,6 @@ G_M58175_IG14: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 413, prolog size 9, PerfScore 88.12, instruction count 125, allocated bytes for code 413 (MethodHash=a2b31cc0) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
+; Total bytes of code 425, prolog size 9, PerfScore 90.12, instruction count 129, allocated bytes for code 425 (MethodHash=a2b31cc0) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 60 48 6 6 -477 +128
benchmarks.run_pgo.windows.x86.checked.mch 407 88 107 212 -835 +1,570
benchmarks.run_tiered.windows.x86.checked.mch 60 48 6 6 -477 +128
coreclr_tests.run.windows.x86.checked.mch 447 303 80 64 -1,880 +1,612
libraries.crossgen2.windows.x86.checked.mch 186 145 29 12 -1,524 +437
libraries.pmi.windows.x86.checked.mch 330 224 68 38 -2,024 +649
libraries_tests.run.windows.x86.Release.mch 1,872 895 577 400 -8,493 +6,318
librariestestsnotieredcompilation.run.windows.x86.Release.mch 929 495 260 174 -4,407 +3,828
realworld.run.windows.x86.checked.mch 52 27 20 5 -316 +536
4,343 2,273 1,153 917 -20,433 +15,206

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,491 4 24,487 0 (0.00%) 2 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 117,805 41,904 75,901 0 (0.00%) 2 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 47,881 28,747 19,134 0 (0.00%) 2 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,665 319,847 254,818 1 (0.00%) 3 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,617 15 242,602 0 (0.00%) 2 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,768 6 305,762 0 (0.00%) 5 (0.00%)
libraries_tests.run.windows.x86.Release.mch 627,809 427,222 200,587 0 (0.00%) 24 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,421 21,910 294,511 0 (0.00%) 14 (0.00%)
realworld.run.windows.x86.checked.mch 35,982 3 35,979 0 (0.00%) 3 (0.01%)
2,293,439 839,658 1,453,781 1 (0.00%) 57 (0.00%)

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: 7121152 (overridden on cmd)
Total bytes of diff: 7120803 (overridden on cmd)
Total bytes of delta: -349 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          70 : 10039.dasm (2.41 % of base)
          19 : 19251.dasm (0.38 % of base)
          19 : 2817.dasm (1.79 % of base)
          14 : 3588.dasm (7.37 % of base)
           4 : 16685.dasm (0.05 % of base)
           2 : 5081.dasm (0.35 % of base)

Top file improvements (bytes):
         -43 : 20657.dasm (-10.31 % of base)
         -43 : 8505.dasm (-0.52 % of base)
         -38 : 3008.dasm (-1.68 % of base)
         -33 : 6218.dasm (-1.11 % of base)
         -25 : 2418.dasm (-2.17 % of base)
         -24 : 23714.dasm (-1.71 % of base)
         -22 : 1247.dasm (-10.58 % of base)
         -20 : 7648.dasm (-15.87 % of base)
         -18 : 10146.dasm (-0.90 % of base)
         -12 : 18620.dasm (-0.45 % of base)
         -12 : 8238.dasm (-2.39 % of base)
         -10 : 15721.dasm (-1.77 % of base)
          -9 : 17565.dasm (-1.48 % of base)
          -8 : 13310.dasm (-3.40 % of base)
          -8 : 813.dasm (-0.15 % of base)
          -8 : 23344.dasm (-0.92 % of base)
          -8 : 8365.dasm (-1.86 % of base)
          -8 : 404.dasm (-3.08 % of base)
          -7 : 18142.dasm (-0.43 % of base)
          -6 : 16155.dasm (-3.08 % of base)

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

Top method regressions (bytes):
          70 (2.41 % of base) : 10039.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          19 (0.38 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          19 (1.79 % of base) : 2817.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           4 (0.05 % of base) : 16685.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (bytes):
         -43 (-0.52 % of base) : 8505.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -43 (-10.31 % of base) : 20657.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -38 (-1.68 % of base) : 3008.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
         -33 (-1.11 % of base) : 6218.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (FullOpts)
         -25 (-2.17 % of base) : 2418.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -24 (-1.71 % of base) : 23714.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
         -22 (-10.58 % of base) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -20 (-15.87 % of base) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-0.90 % of base) : 10146.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
         -12 (-0.45 % of base) : 18620.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-2.39 % of base) : 8238.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
         -10 (-1.77 % of base) : 15721.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (FullOpts)
          -9 (-1.48 % of base) : 17565.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          -8 (-0.92 % of base) : 23344.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
          -8 (-3.40 % of base) : 13310.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
          -8 (-1.86 % of base) : 8365.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
          -8 (-0.15 % of base) : 813.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -7 (-0.43 % of base) : 18142.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
          -6 (-1.79 % of base) : 13649.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)

Top method regressions (percentages):
          14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          70 (2.41 % of base) : 10039.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          19 (1.79 % of base) : 2817.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          19 (0.38 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           4 (0.05 % of base) : 16685.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -20 (-15.87 % of base) : 7648.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -22 (-10.58 % of base) : 1247.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -43 (-10.31 % of base) : 20657.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
          -4 (-3.60 % of base) : 2578.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -8 (-3.40 % of base) : 13310.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (FullOpts)
          -4 (-3.28 % of base) : 9388.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (FullOpts)
          -8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -6 (-3.08 % of base) : 16155.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (FullOpts)
          -4 (-2.76 % of base) : 661.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -12 (-2.39 % of base) : 8238.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
          -4 (-2.19 % of base) : 21547.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
         -25 (-2.17 % of base) : 2418.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
          -4 (-1.95 % of base) : 14443.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
          -8 (-1.86 % of base) : 8365.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (FullOpts)
          -6 (-1.79 % of base) : 13649.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (FullOpts)
         -10 (-1.77 % of base) : 15721.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (FullOpts)
         -24 (-1.71 % of base) : 23714.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
         -38 (-1.68 % of base) : 3008.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (FullOpts)
          -4 (-1.53 % of base) : 8074.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (FullOpts)
          -4 (-1.53 % of base) : 7373.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():this (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: 44984638 (overridden on cmd)
Total bytes of diff: 44985373 (overridden on cmd)
Total bytes of delta: 735 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          73 : 116688.dasm (7.53 % of base)
          71 : 14290.dasm (12.52 % of base)
          66 : 35047.dasm (2.27 % of base)
          60 : 70252.dasm (11.24 % of base)
          50 : 51741.dasm (5.35 % of base)
          42 : 18132.dasm (15.61 % of base)
          42 : 39276.dasm (15.61 % of base)
          42 : 62415.dasm (15.61 % of base)
          42 : 101037.dasm (15.61 % of base)
          42 : 114742.dasm (15.61 % of base)
          42 : 31473.dasm (15.61 % of base)
          40 : 106891.dasm (2.86 % of base)
          34 : 107227.dasm (6.71 % of base)
          30 : 108528.dasm (7.63 % of base)
          27 : 116859.dasm (0.83 % of base)
          26 : 52069.dasm (2.37 % of base)
          25 : 114888.dasm (3.70 % of base)
          23 : 54258.dasm (4.47 % of base)
          23 : 89319.dasm (1.89 % of base)
          21 : 111696.dasm (1.22 % of base)

Top file improvements (bytes):
         -44 : 22965.dasm (-3.78 % of base)
         -43 : 27417.dasm (-0.52 % of base)
         -43 : 71115.dasm (-10.31 % of base)
         -38 : 7763.dasm (-1.68 % of base)
         -33 : 5725.dasm (-1.09 % of base)
         -27 : 103030.dasm (-0.83 % of base)
         -24 : 107290.dasm (-1.71 % of base)
         -22 : 5089.dasm (-10.58 % of base)
         -20 : 13323.dasm (-15.87 % of base)
         -18 : 35131.dasm (-1.23 % of base)
         -18 : 35355.dasm (-0.83 % of base)
         -14 : 104821.dasm (-0.64 % of base)
         -12 : 25909.dasm (-2.39 % of base)
         -12 : 43772.dasm (-5.19 % of base)
         -12 : 84132.dasm (-2.26 % of base)
         -12 : 74500.dasm (-0.44 % of base)
         -11 : 97171.dasm (-0.84 % of base)
         -11 : 57783.dasm (-0.84 % of base)
         -11 : 35586.dasm (-0.84 % of base)
         -11 : 58228.dasm (-0.84 % of base)

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

Top method regressions (bytes):
          73 (7.53 % of base) : 116688.dasm - System.Net.Sockets.SocketAddressExtensions:Equals(System.Net.SocketAddress,System.Net.EndPoint):ubyte (Tier1)
          71 (12.52 % of base) : 14290.dasm - System.Net.Security.SslStream:ProcessTlsFrame(int):System.Net.Security.ProtocolToken:this (Tier0-FullOpts)
          66 (2.27 % of base) : 35047.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          60 (11.24 % of base) : 70252.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          50 (5.35 % of base) : 51741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          42 (15.61 % of base) : 62415.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 114742.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 18132.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 39276.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 101037.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 31473.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          40 (2.86 % of base) : 106891.dasm - System.Net.IPEndPoint:Create(System.Net.SocketAddress):System.Net.EndPoint:this (Tier1)
          34 (6.71 % of base) : 107227.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          30 (7.63 % of base) : 108528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          27 (0.83 % of base) : 116859.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:CreateTypeInfoCore(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier1)
          26 (2.37 % of base) : 52069.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,System.Reflection.Emit.LocalBuilder):this (Tier1)
          25 (3.70 % of base) : 114888.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          23 (4.47 % of base) : 54258.dasm - System.Linq.Enumerable:ToDictionary[int,int](System.Collections.Generic.IEnumerable`1[int],System.Func`2[int,int],System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.Dictionary`2[int,int] (Tier0-FullOpts)
          23 (1.89 % of base) : 89319.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (Tier0-FullOpts)
          21 (1.22 % of base) : 111696.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ushort],int):this (Tier1)

Top method improvements (bytes):
         -44 (-3.78 % of base) : 22965.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
         -43 (-0.52 % of base) : 27417.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         -43 (-10.31 % of base) : 71115.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -38 (-1.68 % of base) : 7763.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
         -33 (-1.09 % of base) : 5725.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
         -27 (-0.83 % of base) : 103030.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:CreateTypeInfoCore(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier1)
         -24 (-1.71 % of base) : 107290.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -22 (-10.58 % of base) : 5089.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -20 (-15.87 % of base) : 13323.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -18 (-0.83 % of base) : 35355.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
         -18 (-1.23 % of base) : 35131.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (Tier0-FullOpts)
         -14 (-0.64 % of base) : 104821.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
         -12 (-2.26 % of base) : 84132.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
         -12 (-0.44 % of base) : 74500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
         -12 (-5.19 % of base) : 43772.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -12 (-2.39 % of base) : 25909.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
         -11 (-0.84 % of base) : 97171.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
         -11 (-0.84 % of base) : 57783.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
         -11 (-0.84 % of base) : 35586.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)
         -11 (-0.84 % of base) : 58228.dasm - System.Number:<TryFormatInt32>g__TryFormatInt32Slow|42_0[ushort](int,int,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.Span`1[ushort],byref):ubyte (Tier1)

Top method regressions (percentages):
          42 (15.61 % of base) : 62415.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 114742.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 18132.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 39276.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 101037.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          42 (15.61 % of base) : 31473.dasm - System.Text.Ascii:ChangeCase[ushort,ushort,System.Text.Ascii+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):int (Tier1)
          71 (12.52 % of base) : 14290.dasm - System.Net.Security.SslStream:ProcessTlsFrame(int):System.Net.Security.ProtocolToken:this (Tier0-FullOpts)
          60 (11.24 % of base) : 70252.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (8.70 % of base) : 16567.dasm - System.Runtime.CompilerServices.ConfiguredTaskAwaitable:.ctor(System.Threading.Tasks.Task,int):this (Tier1)
           8 (8.16 % of base) : 101644.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
           8 (8.16 % of base) : 102515.dasm - System.Threading.Tasks.Task:ConfigureAwait(ubyte):System.Runtime.CompilerServices.ConfiguredTaskAwaitable:this (Tier1)
          10 (8.00 % of base) : 79673.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          30 (7.63 % of base) : 108528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          73 (7.53 % of base) : 116688.dasm - System.Net.Sockets.SocketAddressExtensions:Equals(System.Net.SocketAddress,System.Net.EndPoint):ubyte (Tier1)
          14 (7.37 % of base) : 10814.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
          34 (6.71 % of base) : 107227.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          12 (6.38 % of base) : 80199.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_IsDelaySigned():ubyte:this (Tier1)
          50 (5.35 % of base) : 51741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          14 (4.76 % of base) : 106896.dasm - System.Net.Sockets.SocketAddressExtensions:GetPort(System.Net.SocketAddress):int (Tier1)
          23 (4.47 % of base) : 54258.dasm - System.Linq.Enumerable:ToDictionary[int,int](System.Collections.Generic.IEnumerable`1[int],System.Func`2[int,int],System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.Dictionary`2[int,int] (Tier0-FullOpts)

Top method improvements (percentages):
         -20 (-15.87 % of base) : 13323.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -22 (-10.58 % of base) : 5089.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -43 (-10.31 % of base) : 71115.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -12 (-5.19 % of base) : 43772.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
         -44 (-3.78 % of base) : 22965.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
          -4 (-3.60 % of base) : 11765.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
          -4 (-3.28 % of base) : 26565.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
          -8 (-3.08 % of base) : 1108.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
          -6 (-3.08 % of base) : 60637.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
          -4 (-2.76 % of base) : 1868.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
         -12 (-2.39 % of base) : 25909.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
         -12 (-2.26 % of base) : 84132.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          -4 (-2.19 % of base) : 87632.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
          -4 (-1.95 % of base) : 51234.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
          -8 (-1.82 % of base) : 26673.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier0-FullOpts)
          -6 (-1.79 % of base) : 40612.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier0-FullOpts)
         -10 (-1.77 % of base) : 54038.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier0-FullOpts)
         -24 (-1.71 % of base) : 107290.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -38 (-1.68 % of base) : 7763.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
          -4 (-1.53 % of base) : 26510.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (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: 9468675 (overridden on cmd)
Total bytes of diff: 9468326 (overridden on cmd)
Total bytes of delta: -349 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          70 : 21856.dasm (2.42 % of base)
          19 : 41122.dasm (0.38 % of base)
          19 : 6999.dasm (1.79 % of base)
          14 : 6624.dasm (7.37 % of base)
           4 : 32394.dasm (0.05 % of base)
           2 : 16456.dasm (0.35 % of base)

Top file improvements (bytes):
         -43 : 19126.dasm (-0.52 % of base)
         -43 : 33876.dasm (-10.31 % of base)
         -38 : 8053.dasm (-1.68 % of base)
         -33 : 10260.dasm (-1.11 % of base)
         -25 : 5174.dasm (-2.17 % of base)
         -24 : 46756.dasm (-1.71 % of base)
         -22 : 3752.dasm (-10.58 % of base)
         -20 : 17441.dasm (-15.87 % of base)
         -18 : 23718.dasm (-0.90 % of base)
         -12 : 36802.dasm (-0.45 % of base)
         -12 : 18825.dasm (-2.39 % of base)
         -10 : 29886.dasm (-1.77 % of base)
          -8 : 13472.dasm (-0.94 % of base)
          -8 : 18397.dasm (-1.86 % of base)
          -8 : 45961.dasm (-0.92 % of base)
          -8 : 1038.dasm (-3.08 % of base)
          -8 : 2174.dasm (-0.15 % of base)
          -8 : 26548.dasm (-3.40 % of base)
          -7 : 35665.dasm (-0.43 % of base)
          -6 : 26747.dasm (-1.79 % of base)

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

Top method regressions (bytes):
          70 (2.42 % of base) : 21856.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          19 (0.38 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
          19 (1.79 % of base) : 6999.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          14 (7.37 % of base) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
           4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
           2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)

Top method improvements (bytes):
         -43 (-0.52 % of base) : 19126.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         -43 (-10.31 % of base) : 33876.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -38 (-1.68 % of base) : 8053.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
         -33 (-1.11 % of base) : 10260.dasm - Utf8Json.Internal.Emit.MetaType:.ctor(System.Type,System.Func`2[System.String,System.String],ubyte):this (Tier0-FullOpts)
         -25 (-2.17 % of base) : 5174.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
         -24 (-1.71 % of base) : 46756.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -22 (-10.58 % of base) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -20 (-15.87 % of base) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -18 (-0.90 % of base) : 23718.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
         -12 (-0.45 % of base) : 36802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
         -12 (-2.39 % of base) : 18825.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
         -10 (-1.77 % of base) : 29886.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier0-FullOpts)
          -8 (-0.92 % of base) : 45961.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier0-FullOpts)
          -8 (-3.40 % of base) : 26548.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
          -8 (-1.86 % of base) : 18397.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier0-FullOpts)
          -8 (-0.15 % of base) : 2174.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
          -8 (-3.08 % of base) : 1038.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
          -8 (-0.94 % of base) : 13472.dasm - System.Text.Json.Tests.Perf_Reader:ReadReturnBytes():ubyte[]:this (Tier0-FullOpts)
          -7 (-0.43 % of base) : 35665.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (Tier0-FullOpts)
          -6 (-1.79 % of base) : 26747.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier0-FullOpts)

Top method regressions (percentages):
          14 (7.37 % of base) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
          70 (2.42 % of base) : 21856.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          19 (1.79 % of base) : 6999.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier0-FullOpts)
          19 (0.38 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
           2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
           4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)

Top method improvements (percentages):
         -20 (-15.87 % of base) : 17441.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -22 (-10.58 % of base) : 3752.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -43 (-10.31 % of base) : 33876.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
          -4 (-3.60 % of base) : 10837.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (Tier0-FullOpts)
          -8 (-3.40 % of base) : 26548.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0-FullOpts)
          -4 (-3.28 % of base) : 20560.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:SeekMultiSegment(System.Buffers.ReadOnlySequenceSegment`1[ubyte],System.Object,int,long,int):System.SequencePosition (Tier0-FullOpts)
          -8 (-3.08 % of base) : 1038.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier0-FullOpts)
          -6 (-3.08 % of base) : 31724.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)
          -4 (-2.76 % of base) : 1714.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier0-FullOpts)
         -12 (-2.39 % of base) : 18825.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (Tier0-FullOpts)
          -4 (-2.19 % of base) : 43317.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
         -25 (-2.17 % of base) : 5174.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
          -4 (-1.95 % of base) : 29021.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
          -8 (-1.86 % of base) : 18397.dasm - System.Diagnostics.Tracing.EventSource:LogEventArgsMismatches(int,System.Object[]):this (Tier0-FullOpts)
          -6 (-1.79 % of base) : 26747.dasm - System.Globalization.DateTimeFormatInfo:get_DateTimeOffsetPattern():System.String:this (Tier0-FullOpts)
         -10 (-1.77 % of base) : 29886.dasm - Microsoft.Extensions.Configuration.ConfigurationKeyComparer:Compare(System.String,System.String):int:this (Tier0-FullOpts)
         -24 (-1.71 % of base) : 46756.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -38 (-1.68 % of base) : 8053.dasm - Sigil.Impl.VerifiableTracker:CollapseAndVerify():Sigil.Impl.VerificationResult:this (Tier0-FullOpts)
          -4 (-1.53 % of base) : 20494.dasm - System.Text.Json.Tests.Perf_Reader:ReadMultiSpanSequenceEmptyLoop():this (Tier0-FullOpts)
          -4 (-1.53 % of base) : 16162.dasm - System.Text.Json.Tests.Perf_Reader:ReadSingleSpanSequenceEmptyLoop():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: 309389409 (overridden on cmd)
Total bytes of diff: 309389141 (overridden on cmd)
Total bytes of delta: -268 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          88 : 419356.dasm (2.83 % of base)
          88 : 165818.dasm (2.87 % of base)
          88 : 167894.dasm (2.87 % of base)
          70 : 189465.dasm (2.33 % of base)
          70 : 450605.dasm (2.33 % of base)
          59 : 167910.dasm (1.82 % of base)
          59 : 165834.dasm (1.82 % of base)
          56 : 566678.dasm (2.81 % of base)
          54 : 419369.dasm (1.62 % of base)
          53 : 302592.dasm (2.68 % of base)
          47 : 165847.dasm (4.35 % of base)
          47 : 167923.dasm (4.37 % of base)
          47 : 419377.dasm (4.20 % of base)
          46 : 457185.dasm (2.32 % of base)
          46 : 205374.dasm (2.32 % of base)
          37 : 482261.dasm (4.74 % of base)
          24 : 481981.dasm (0.41 % of base)
          24 : 233711.dasm (0.41 % of base)
          21 : 443191.dasm (1.84 % of base)
          21 : 458894.dasm (1.84 % of base)

Top file improvements (bytes):
         -44 : 545906.dasm (-6.14 % of base)
         -44 : 282661.dasm (-6.14 % of base)
         -34 : 132749.dasm (-7.91 % of base)
         -34 : 132758.dasm (-7.91 % of base)
         -34 : 396715.dasm (-7.91 % of base)
         -34 : 396723.dasm (-7.91 % of base)
         -26 : 454574.dasm (-2.25 % of base)
         -24 : 189320.dasm (-1.71 % of base)
         -24 : 450389.dasm (-1.71 % of base)
         -22 : 564.dasm (-10.58 % of base)
         -22 : 281099.dasm (-0.18 % of base)
         -22 : 542997.dasm (-0.18 % of base)
         -22 : 305383.dasm (-10.58 % of base)
         -20 : 190697.dasm (-15.87 % of base)
         -20 : 452464.dasm (-15.87 % of base)
         -19 : 484211.dasm (-2.40 % of base)
         -19 : 321865.dasm (-2.40 % of base)
         -18 : 110692.dasm (-0.84 % of base)
         -18 : 191113.dasm (-0.84 % of base)
         -18 : 372402.dasm (-0.84 % of base)

63 total files with Code Size differences (38 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          88 (2.87 % of base) : 165818.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          88 (2.87 % of base) : 167894.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          88 (2.83 % of base) : 419356.dasm - NetClient.StringTests:Marshal_LPString():this (Tier0-FullOpts)
          70 (2.33 % of base) : 189465.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          70 (2.33 % of base) : 450605.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          59 (1.82 % of base) : 167910.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
          59 (1.82 % of base) : 165834.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
          56 (2.81 % of base) : 566678.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
          54 (1.62 % of base) : 419369.dasm - NetClient.StringTests:Marshal_LPWString():this (Tier0-FullOpts)
          53 (2.68 % of base) : 302592.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          47 (4.35 % of base) : 165847.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          47 (4.37 % of base) : 167923.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          47 (4.20 % of base) : 419377.dasm - NetClient.StringTests:Marshal_BStrString():this (Tier0-FullOpts)
          46 (2.32 % of base) : 205374.dasm - BinderTracingTests.Helpers:ValidateResolutionAttempts(System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt],System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt]) (FullOpts)
          46 (2.32 % of base) : 457185.dasm - BinderTracingTests.Helpers:ValidateResolutionAttempts(System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt],System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt]) (Tier0-FullOpts)
          37 (4.74 % of base) : 482261.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
          24 (0.41 % of base) : 233711.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (FullOpts)
          24 (0.41 % of base) : 481981.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (Tier0-FullOpts)
          21 (1.84 % of base) : 443191.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          21 (1.84 % of base) : 458894.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

Top method improvements (bytes):
         -44 (-6.14 % of base) : 282661.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (FullOpts)
         -44 (-6.14 % of base) : 545906.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (Tier0-FullOpts)
         -34 (-7.91 % of base) : 132749.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
         -34 (-7.91 % of base) : 396715.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
         -34 (-7.91 % of base) : 132758.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
         -34 (-7.91 % of base) : 396723.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
         -26 (-2.25 % of base) : 454574.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
         -24 (-1.71 % of base) : 189320.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
         -24 (-1.71 % of base) : 450389.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -22 (-0.18 % of base) : 281099.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (FullOpts)
         -22 (-0.18 % of base) : 542997.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<ValidateTypeWorker>d__10:MoveNext():this (Tier0-FullOpts)
         -22 (-10.58 % of base) : 564.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -22 (-10.58 % of base) : 305383.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -20 (-15.87 % of base) : 190697.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -20 (-15.87 % of base) : 452464.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -19 (-2.40 % of base) : 484211.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
         -19 (-2.40 % of base) : 321865.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
         -18 (-0.84 % of base) : 110692.dasm - JIT.HardwareIntrinsics.X86._Avx512BW.handwritten.SimpleUnaryOpTest__ConvertToVector512Int16SByte:ValidateResult(byte[],short[],System.String):this (FullOpts)
         -18 (-0.84 % of base) : 372402.dasm - JIT.HardwareIntrinsics.X86._Avx512BW.handwritten.SimpleUnaryOpTest__ConvertToVector512Int16SByte:ValidateResult(byte[],short[],System.String):this (Tier0-FullOpts)
         -18 (-0.84 % of base) : 191113.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)

Top method regressions (percentages):
          37 (4.74 % of base) : 482261.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
          47 (4.37 % of base) : 167923.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          47 (4.35 % of base) : 165847.dasm - NetClient.StringTests:Marshal_BStrString():this (FullOpts)
          47 (4.20 % of base) : 419377.dasm - NetClient.StringTests:Marshal_BStrString():this (Tier0-FullOpts)
          88 (2.87 % of base) : 167894.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          88 (2.87 % of base) : 165818.dasm - NetClient.StringTests:Marshal_LPString():this (FullOpts)
          88 (2.83 % of base) : 419356.dasm - NetClient.StringTests:Marshal_LPString():this (Tier0-FullOpts)
          56 (2.81 % of base) : 566678.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
          53 (2.68 % of base) : 302592.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          12 (2.58 % of base) : 545786.dasm - System.Environment:get_CurrentDirectoryCore():System.String (Tier0-FullOpts)
          70 (2.33 % of base) : 189465.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          70 (2.33 % of base) : 450605.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          46 (2.32 % of base) : 205374.dasm - BinderTracingTests.Helpers:ValidateResolutionAttempts(System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt],System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt]) (FullOpts)
          46 (2.32 % of base) : 457185.dasm - BinderTracingTests.Helpers:ValidateResolutionAttempts(System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt],System.Collections.Generic.List`1[BinderTracingTests.ResolutionAttempt]) (Tier0-FullOpts)
           8 (2.24 % of base) : 440500.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
          15 (2.01 % of base) : 167219.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.ComInterop.ComObject,System.Object):System.Object (FullOpts)
          21 (1.86 % of base) : 568139.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          21 (1.86 % of base) : 565439.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          21 (1.84 % of base) : 443191.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
          21 (1.84 % of base) : 458894.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)

Top method improvements (percentages):
         -20 (-15.87 % of base) : 190697.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -20 (-15.87 % of base) : 452464.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -22 (-10.58 % of base) : 564.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -22 (-10.58 % of base) : 305383.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -34 (-7.91 % of base) : 132749.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
         -34 (-7.91 % of base) : 396715.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
         -34 (-7.91 % of base) : 132758.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (FullOpts)
         -34 (-7.91 % of base) : 396723.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector256+TestTable`2[float,int]:CheckResult(System.Func`3[float,float,ubyte],int[]):ubyte:this (Tier0-FullOpts)
          -4 (-7.84 % of base) : 167488.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
          -4 (-7.84 % of base) : 424070.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (Tier0-FullOpts)
         -44 (-6.14 % of base) : 282661.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (FullOpts)
         -44 (-6.14 % of base) : 545906.dasm - Driver`2[System.__Canon,System.__Canon]:BasicAdd(System.__Canon[],System.__Canon[]):this (Tier0-FullOpts)
          -7 (-3.65 % of base) : 476469.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 431498.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 457085.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 547733.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 463606.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 481709.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 320298.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -7 (-3.65 % of base) : 440722.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)


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: 31715129 (overridden on cmd)
Total bytes of diff: 31714042 (overridden on cmd)
Total bytes of delta: -1087 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         235 : 58113.dasm (5.70 % of base)
          25 : 23401.dasm (3.51 % of base)
          22 : 20953.dasm (2.10 % of base)
          17 : 140500.dasm (1.95 % of base)
          17 : 138161.dasm (4.01 % of base)
          17 : 25288.dasm (0.67 % of base)
          16 : 6897.dasm (1.07 % of base)
          12 : 198099.dasm (0.92 % of base)
          11 : 232207.dasm (5.91 % of base)
           8 : 196830.dasm (0.49 % of base)
           5 : 180241.dasm (0.99 % of base)
           5 : 194839.dasm (0.11 % of base)
           5 : 194908.dasm (0.11 % of base)
           4 : 210630.dasm (0.81 % of base)
           4 : 17621.dasm (1.57 % of base)
           3 : 19134.dasm (3.53 % of base)
           3 : 191719.dasm (0.18 % of base)
           3 : 19273.dasm (3.19 % of base)
           3 : 17736.dasm (3.49 % of base)
           3 : 18577.dasm (3.53 % of base)

Top file improvements (bytes):
         -85 : 74617.dasm (-2.38 % of base)
         -85 : 74659.dasm (-2.38 % of base)
         -70 : 73877.dasm (-6.72 % of base)
         -58 : 85078.dasm (-4.47 % of base)
         -34 : 230910.dasm (-5.59 % of base)
         -34 : 84959.dasm (-5.57 % of base)
         -31 : 179177.dasm (-0.72 % of base)
         -26 : 231425.dasm (-4.73 % of base)
         -26 : 226942.dasm (-20.47 % of base)
         -24 : 231738.dasm (-5.74 % of base)
         -24 : 189620.dasm (-2.75 % of base)
         -24 : 179561.dasm (-5.74 % of base)
         -24 : 189238.dasm (-2.54 % of base)
         -24 : 222943.dasm (-4.11 % of base)
         -23 : 22065.dasm (-11.33 % of base)
         -22 : 71840.dasm (-3.25 % of base)
         -22 : 25158.dasm (-4.64 % of base)
         -21 : 135715.dasm (-0.90 % of base)
         -21 : 23429.dasm (-2.13 % of base)
         -20 : 178852.dasm (-15.75 % of base)

65 total files with Code Size differences (40 improved, 25 regressed), 12 unchanged.

Top method regressions (bytes):
         235 (5.70 % of base) : 58113.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)
          25 (3.51 % of base) : 23401.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          22 (2.10 % of base) : 20953.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          17 (0.67 % of base) : 25288.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          17 (4.01 % of base) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
          17 (1.95 % of base) : 140500.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          16 (1.07 % of base) : 6897.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
          12 (0.92 % of base) : 198099.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
          11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           8 (0.49 % of base) : 196830.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
           5 (0.11 % of base) : 194839.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
           5 (0.11 % of base) : 194908.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
           5 (0.99 % of base) : 180241.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (1.57 % of base) : 17621.dasm - System.Diagnostics.Tracing.EventProviderImpl:ParseFilterData(ubyte[]):System.Collections.Generic.IDictionary`2[System.String,System.String] (FullOpts)
           4 (0.81 % of base) : 210630.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
           3 (0.56 % of base) : 178725.dasm - Internal.TypeSystem.CastingHelper:<IsEquivalentToDefType>g__CompareStructuresForEquivalence|24_2(Internal.TypeSystem.MetadataType,Internal.TypeSystem.MetadataType,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
           3 (0.18 % of base) : 191719.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
           3 (3.53 % of base) : 18577.dasm - System.Threading.Tasks.Task`1[int]:.ctor(ubyte,int,int,System.Threading.CancellationToken):this (FullOpts)
           3 (3.23 % of base) : 21566.dasm - System.Threading.Tasks.Task`1[long]:.ctor(ubyte,long,int,System.Threading.CancellationToken):this (FullOpts)
           3 (3.19 % of base) : 19273.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)

Top method improvements (bytes):
         -85 (-2.38 % of base) : 74659.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -85 (-2.38 % of base) : 74617.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -70 (-6.72 % of base) : 73877.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -58 (-4.47 % of base) : 85078.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
         -34 (-5.59 % of base) : 230910.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -34 (-5.57 % of base) : 84959.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -31 (-0.72 % of base) : 179177.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
         -26 (-4.73 % of base) : 231425.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -26 (-20.47 % of base) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -24 (-5.74 % of base) : 231738.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.74 % of base) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-4.11 % of base) : 222943.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
         -24 (-2.75 % of base) : 189620.dasm - System.Runtime.Serialization.Json.ReflectionJsonClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
         -24 (-2.54 % of base) : 189238.dasm - System.Runtime.Serialization.ReflectionXmlClassWriter:ReflectionWriteMembers(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract,System.Runtime.Serialization.DataContracts.ClassDataContract,int,System.Xml.XmlDictionaryString[]):int:this (FullOpts)
         -23 (-11.33 % of base) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
         -22 (-4.64 % of base) : 25158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -22 (-3.25 % of base) : 71840.dasm - System.Data.Common.DataAdapter:Fill(System.Data.DataTable[],System.Data.IDataReader,int,int):int:this (FullOpts)
         -21 (-0.90 % of base) : 135715.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[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
         -21 (-2.13 % of base) : 23429.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
         -20 (-15.75 % of base) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)

Top method regressions (percentages):
          11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
         235 (5.70 % of base) : 58113.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)
          17 (4.01 % of base) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
           3 (3.53 % of base) : 18577.dasm - System.Threading.Tasks.Task`1[int]:.ctor(ubyte,int,int,System.Threading.CancellationToken):this (FullOpts)
           3 (3.53 % of base) : 19134.dasm - System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]:.ctor(ubyte,System.Threading.Tasks.VoidTaskResult,int,System.Threading.CancellationToken):this (FullOpts)
          25 (3.51 % of base) : 23401.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
           3 (3.49 % of base) : 17736.dasm - System.Threading.Tasks.Task`1[ubyte]:.ctor(ubyte,ubyte,int,System.Threading.CancellationToken):this (FullOpts)
           3 (3.23 % of base) : 21566.dasm - System.Threading.Tasks.Task`1[long]:.ctor(ubyte,long,int,System.Threading.CancellationToken):this (FullOpts)
           3 (3.19 % of base) : 19273.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
           2 (2.33 % of base) : 23506.dasm - System.Threading.PortableThreadPool:RemoveWaitThread(System.Threading.PortableThreadPool+WaitThread):this (FullOpts)
          22 (2.10 % of base) : 20953.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          17 (1.95 % of base) : 140500.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
           2 (1.65 % of base) : 180393.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
           2 (1.65 % of base) : 180394.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
           4 (1.57 % of base) : 17621.dasm - System.Diagnostics.Tracing.EventProviderImpl:ParseFilterData(ubyte[]):System.Collections.Generic.IDictionary`2[System.String,System.String] (FullOpts)
          16 (1.07 % of base) : 6897.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
           5 (0.99 % of base) : 180241.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (0.92 % of base) : 198099.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
           4 (0.81 % of base) : 210630.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          17 (0.67 % of base) : 25288.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupOrLambdaDelegateType(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]],System.Nullable`1[ubyte],System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)

Top method improvements (percentages):
         -26 (-20.47 % of base) : 226942.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -20 (-15.75 % of base) : 178852.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -23 (-11.33 % of base) : 22065.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          -8 (-7.84 % of base) : 209248.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
         -11 (-7.69 % of base) : 74403.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
          -4 (-7.69 % of base) : 233957.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
          -4 (-7.27 % of base) : 87841.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -11 (-7.19 % of base) : 185163.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
          -4 (-7.14 % of base) : 180395.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -4 (-6.78 % of base) : 180169.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
          -9 (-6.77 % of base) : 216845.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
         -70 (-6.72 % of base) : 73877.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -16 (-6.37 % of base) : 140490.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
          -4 (-6.15 % of base) : 233651.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
         -24 (-5.74 % of base) : 231738.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.74 % of base) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -34 (-5.59 % of base) : 230910.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -34 (-5.57 % of base) : 84959.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -11 (-5.56 % of base) : 74402.dasm - System.Data.ExpressionParser:ScanName(ushort,ushort,System.String):this (FullOpts)
         -14 (-5.32 % of base) : 195712.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():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: 49281531 (overridden on cmd)
Total bytes of diff: 49280156 (overridden on cmd)
Total bytes of delta: -1375 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          70 : 270996.dasm (2.36 % of base)
          63 : 38799.dasm (5.69 % of base)
          58 : 49685.dasm (5.12 % of base)
          41 : 185541.dasm (2.05 % of base)
          35 : 212484.dasm (5.30 % of base)
          22 : 276198.dasm (1.04 % of base)
          19 : 30224.dasm (0.36 % of base)
          19 : 30454.dasm (1.21 % of base)
          18 : 79108.dasm (1.95 % of base)
          16 : 179728.dasm (6.96 % of base)
          14 : 295838.dasm (7.37 % of base)
          14 : 86273.dasm (1.60 % of base)
          14 : 248056.dasm (0.95 % of base)
          13 : 77755.dasm (3.30 % of base)
          13 : 226768.dasm (5.78 % of base)
          13 : 273438.dasm (1.17 % of base)
          11 : 49609.dasm (0.93 % of base)
          10 : 68524.dasm (3.51 % of base)
          10 : 259981.dasm (4.15 % of base)
           9 : 79072.dasm (1.11 % of base)

Top file improvements (bytes):
         -85 : 70958.dasm (-2.38 % of base)
         -85 : 71019.dasm (-2.38 % of base)
         -50 : 71190.dasm (-3.98 % of base)
         -43 : 165420.dasm (-10.31 % of base)
         -34 : 258235.dasm (-4.52 % of base)
         -29 : 236663.dasm (-3.09 % of base)
         -29 : 186328.dasm (-4.76 % of base)
         -27 : 122278.dasm (-2.74 % of base)
         -27 : 160308.dasm (-2.74 % of base)
         -27 : 216026.dasm (-0.87 % of base)
         -27 : 232147.dasm (-0.87 % of base)
         -26 : 281911.dasm (-20.63 % of base)
         -25 : 286464.dasm (-2.17 % of base)
         -24 : 256143.dasm (-5.50 % of base)
         -24 : 261810.dasm (-5.50 % of base)
         -24 : 281947.dasm (-1.50 % of base)
         -23 : 161391.dasm (-1.14 % of base)
         -23 : 123373.dasm (-1.14 % of base)
         -23 : 30488.dasm (-1.10 % of base)
         -22 : 107842.dasm (-2.78 % of base)

69 total files with Code Size differences (41 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          70 (2.36 % of base) : 270996.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          63 (5.69 % of base) : 38799.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteNoPiaEventAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundEventAssignmentOperator,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          58 (5.12 % of base) : 49685.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          41 (2.05 % of base) : 185541.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          35 (5.30 % of base) : 212484.dasm - Microsoft.Build.Shared.FileMatcher:IsMatch(System.ReadOnlySpan`1[ushort],System.String):ubyte (FullOpts)
          22 (1.04 % of base) : 276198.dasm - Internal.Cryptography.Pal.AnyOS.AsnHelpers:ToPresentationObject(System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn):System.Security.Cryptography.Pkcs.AlgorithmIdentifier (FullOpts)
          19 (1.21 % of base) : 30454.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBase(Microsoft.CodeAnalysis.CSharp.Syntax.BaseExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundBaseReference:this (FullOpts)
          19 (0.36 % of base) : 30224.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          18 (1.95 % of base) : 79108.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodBodyBinder:CreateFunctionValueLocal(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol:this (FullOpts)
          16 (6.96 % of base) : 179728.dasm - System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
          14 (1.60 % of base) : 86273.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
          14 (7.37 % of base) : 295838.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          14 (0.95 % of base) : 248056.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
          13 (3.30 % of base) : 77755.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
          13 (5.78 % of base) : 226768.dasm - System.Collections.Generic.SortedSet`1[ubyte]:SymmetricExceptWithSameComparer(ubyte[],int):this (FullOpts)
          13 (1.17 % of base) : 273438.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsSafeArray(System.String[],System.Object[],System.Reflection.Emit.MarshallingData) (FullOpts)
          11 (0.93 % of base) : 49609.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          10 (4.15 % of base) : 259981.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          10 (3.51 % of base) : 68524.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
           9 (1.36 % of base) : 78178.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)

Top method improvements (bytes):
         -85 (-2.38 % of base) : 70958.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -85 (-2.38 % of base) : 71019.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -50 (-3.98 % of base) : 71190.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -43 (-10.31 % of base) : 165420.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -34 (-4.52 % of base) : 258235.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
         -29 (-4.76 % of base) : 186328.dasm - ILCompiler.LazyGenericsSupport+Graph`1[ubyte]:FindCyclesWorker(ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte],System.Collections.Generic.List`1[ILCompiler.LazyGenericsSupport+Graph`1+Edge[ubyte]],byref,System.Diagnostics.Stopwatch) (FullOpts)
         -29 (-3.09 % of base) : 236663.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -27 (-2.74 % of base) : 122278.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -27 (-2.74 % of base) : 160308.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -27 (-0.87 % of base) : 216026.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this (FullOpts)
         -27 (-0.87 % of base) : 232147.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this (FullOpts)
         -26 (-20.63 % of base) : 281911.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -25 (-2.17 % of base) : 286464.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -24 (-5.50 % of base) : 256143.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.50 % of base) : 261810.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-1.50 % of base) : 281947.dasm - System.Text.ISO2022Encoding:GetBytesCP52936(uint,int,uint,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
         -23 (-1.10 % of base) : 30488.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
         -23 (-1.14 % of base) : 161391.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
         -23 (-1.14 % of base) : 123373.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
         -22 (-14.19 % of base) : 202920.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
          14 (7.37 % of base) : 295838.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          16 (6.96 % of base) : 179728.dasm - System.Security.Cryptography.FromBase64Transform:ConvertFromBase64(System.Span`1[ubyte],System.Span`1[ubyte],byref,byref):this (FullOpts)
          13 (5.78 % of base) : 226768.dasm - System.Collections.Generic.SortedSet`1[ubyte]:SymmetricExceptWithSameComparer(ubyte[],int):this (FullOpts)
          63 (5.69 % of base) : 38799.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteNoPiaEventAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundEventAssignmentOperator,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          35 (5.30 % of base) : 212484.dasm - Microsoft.Build.Shared.FileMatcher:IsMatch(System.ReadOnlySpan`1[ushort],System.String):ubyte (FullOpts)
          58 (5.12 % of base) : 49685.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          10 (4.15 % of base) : 259981.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          10 (3.51 % of base) : 68524.dasm - System.Xml.XPathNodePointer:GetNamespace(System.String):System.String:this (FullOpts)
          13 (3.30 % of base) : 77755.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
          70 (2.36 % of base) : 270996.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
           7 (2.10 % of base) : 68436.dasm - System.Xml.XmlDataDocument:OnDataSetRelationsChanging(System.Object,System.ComponentModel.CollectionChangeEventArgs):this (FullOpts)
          41 (2.05 % of base) : 185541.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          18 (1.95 % of base) : 79108.dasm - Microsoft.CodeAnalysis.VisualBasic.MethodBodyBinder:CreateFunctionValueLocal(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol:this (FullOpts)
           2 (1.67 % of base) : 272288.dasm - System.Xml.Linq.XObject:NotifyChanged(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
           2 (1.67 % of base) : 272289.dasm - System.Xml.Linq.XObject:NotifyChanging(System.Object,System.Xml.Linq.XObjectChangeEventArgs):ubyte:this (FullOpts)
           6 (1.63 % of base) : 38549.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          14 (1.60 % of base) : 86273.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetTypeOrNamespaceSymbolInfoNotInMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,int):Microsoft.CodeAnalysis.SymbolInfo:this (FullOpts)
           3 (1.53 % of base) : 68338.dasm - System.Xml.XmlBoundElement:CloneNode(ubyte):System.Xml.XmlNode:this (FullOpts)
           9 (1.36 % of base) : 78178.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindNamespaceOrTypeOrExpressionSyntaxForSemanticModel(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
           7 (1.26 % of base) : 77839.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowsOutWalker:Assign(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):this (FullOpts)

Top method improvements (percentages):
         -26 (-20.63 % of base) : 281911.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -12 (-17.39 % of base) : 177130.dasm - System.Xml.Serialization.XmlSchemaObjectComparer:Namespace(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -20 (-15.87 % of base) : 274154.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -22 (-14.19 % of base) : 202920.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
         -22 (-10.58 % of base) : 286536.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -43 (-10.31 % of base) : 165420.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -11 (-7.97 % of base) : 71470.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
          -8 (-7.92 % of base) : 290105.dasm - System.Transactions.CheapUnfairReaderWriterLock:EnterWriteLock():this (FullOpts)
          -4 (-7.84 % of base) : 190214.dasm - System.Runtime.InteropServices.ComEventsMethod:Remove(System.Runtime.InteropServices.ComEventsMethod,System.Runtime.InteropServices.ComEventsMethod):System.Runtime.InteropServices.ComEventsMethod (FullOpts)
          -4 (-7.27 % of base) : 272292.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -4 (-7.14 % of base) : 272268.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
         -11 (-7.05 % of base) : 216790.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String):this (FullOpts)
         -13 (-7.03 % of base) : 62869.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -17 (-6.85 % of base) : 167798.dasm - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,int,System.Xml.XmlParserContext):this (FullOpts)
          -9 (-6.62 % of base) : 232876.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
          -4 (-6.25 % of base) : 190194.dasm - System.Runtime.InteropServices.ComEventsSink:Remove(System.Runtime.InteropServices.ComEventsSink,System.Runtime.InteropServices.ComEventsSink):System.Runtime.InteropServices.ComEventsSink (FullOpts)
         -24 (-5.50 % of base) : 256143.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.50 % of base) : 261810.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -17 (-5.21 % of base) : 166286.dasm - System.Xml.Ucs4Decoder:GetChars(ubyte[],int,int,ushort[],int):int:this (FullOpts)
          -4 (-5.06 % of base) : 272293.dasm - System.Xml.Linq.XObject:GetSaveOptionsFromAnnotations():int: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: 186643263 (overridden on cmd)
Total bytes of diff: 186641088 (overridden on cmd)
Total bytes of delta: -2175 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         158 : 407074.dasm (3.36 % of base)
         116 : 406710.dasm (3.13 % of base)
          86 : 617764.dasm (6.09 % of base)
          84 : 478453.dasm (4.12 % of base)
          84 : 618047.dasm (2.53 % of base)
          67 : 334103.dasm (3.29 % of base)
          67 : 341776.dasm (3.29 % of base)
          66 : 542547.dasm (2.81 % of base)
          66 : 592035.dasm (1.89 % of base)
          66 : 52779.dasm (0.69 % of base)
          64 : 407352.dasm (2.38 % of base)
          62 : 407239.dasm (1.59 % of base)
          61 : 245630.dasm (1.99 % of base)
          61 : 581091.dasm (3.86 % of base)
          59 : 575014.dasm (8.65 % of base)
          57 : 406726.dasm (2.03 % of base)
          55 : 328253.dasm (3.16 % of base)
          55 : 407397.dasm (1.61 % of base)
          53 : 580349.dasm (2.40 % of base)
          52 : 407172.dasm (1.11 % of base)

Top file improvements (bytes):
        -117 : 406650.dasm (-1.77 % of base)
        -100 : 269808.dasm (-2.55 % of base)
         -85 : 221946.dasm (-2.38 % of base)
         -85 : 221650.dasm (-2.38 % of base)
         -78 : 577683.dasm (-1.25 % of base)
         -70 : 272212.dasm (-2.07 % of base)
         -68 : 597898.dasm (-1.20 % of base)
         -66 : 504493.dasm (-3.48 % of base)
         -63 : 549394.dasm (-3.68 % of base)
         -63 : 552691.dasm (-3.72 % of base)
         -57 : 150922.dasm (-1.75 % of base)
         -57 : 554888.dasm (-1.13 % of base)
         -52 : 578319.dasm (-1.95 % of base)
         -51 : 542538.dasm (-1.50 % of base)
         -50 : 470987.dasm (-2.49 % of base)
         -50 : 222216.dasm (-3.98 % of base)
         -47 : 542272.dasm (-2.57 % of base)
         -43 : 173181.dasm (-10.31 % of base)
         -42 : 217110.dasm (-1.29 % of base)
         -40 : 506689.dasm (-1.94 % of base)

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

Top method regressions (bytes):
         158 (3.36 % of base) : 407074.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (Tier0-FullOpts)
         116 (3.13 % of base) : 406710.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
          86 (6.09 % of base) : 617764.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (Tier0-FullOpts)
          84 (4.12 % of base) : 478453.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
          84 (2.53 % of base) : 618047.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (Tier0-FullOpts)
          67 (3.29 % of base) : 334103.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
          67 (3.29 % of base) : 341776.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)
          66 (0.69 % of base) : 52779.dasm - Microsoft.Interop.ManagedToNativeVTableMethodGenerator:GenerateStubBody(int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.FunctionPointerUnmanagedCallingConventionSyntax],Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax:this (Tier1)
          66 (2.81 % of base) : 542547.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:ReadPartialSegmentSizeOne(ubyte,int,System.String) (Tier0-FullOpts)
          66 (1.89 % of base) : 592035.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (Tier0-FullOpts)
          64 (2.38 % of base) : 407352.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (Tier0-FullOpts)
          62 (1.59 % of base) : 407239.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (Tier0-FullOpts)
          61 (3.86 % of base) : 581091.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
          61 (1.99 % of base) : 245630.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Tier0-FullOpts)
          59 (8.65 % of base) : 575014.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          57 (2.03 % of base) : 406726.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (Tier0-FullOpts)
          55 (3.16 % of base) : 328253.dasm - System.Net.Http.Tests.HttpHeadersTest:NonValidated_SetMultipleHeaders_AllHeaderValuesReturned():this (Tier0-FullOpts)
          55 (1.61 % of base) : 407397.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (Tier0-FullOpts)
          53 (2.40 % of base) : 580349.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
          52 (1.11 % of base) : 407172.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (Tier0-FullOpts)

Top method improvements (bytes):
        -117 (-1.77 % of base) : 406650.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (Tier0-FullOpts)
        -100 (-2.55 % of base) : 269808.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
         -85 (-2.38 % of base) : 221650.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
         -85 (-2.38 % of base) : 221946.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (Tier0-FullOpts)
         -78 (-1.25 % of base) : 577683.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
         -70 (-2.07 % of base) : 272212.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
         -68 (-1.20 % of base) : 597898.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:FindEntryPoint(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Threading.CancellationToken,byref):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (Tier0-FullOpts)
         -66 (-3.48 % of base) : 504493.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__154:MoveNext():this (Tier0-FullOpts)
         -63 (-3.72 % of base) : 552691.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericICollection>d__203:MoveNext():this (Tier0-FullOpts)
         -63 (-3.68 % of base) : 549394.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__193:MoveNext():this (Tier0-FullOpts)
         -57 (-1.75 % of base) : 150922.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseAttributeDeclaration(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax:this (Tier1)
         -57 (-1.13 % of base) : 554888.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:CustomEscaper(System.String,System.String):this (Tier0-FullOpts)
         -52 (-1.95 % of base) : 578319.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindUnaryOperatorCore(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -51 (-1.50 % of base) : 542538.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:AllowSingleSegment(System.String,System.String,int) (Tier0-FullOpts)
         -50 (-3.98 % of base) : 222216.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (Tier0-FullOpts)
         -50 (-2.49 % of base) : 470987.dasm - System.Numerics.BigIntegerCalculator+FastReducer:Reduce(System.Span`1[uint]):int:this (Tier1)
         -47 (-2.57 % of base) : 542272.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:SkipSingleSegment(System.String) (Tier0-FullOpts)
         -43 (-10.31 % of base) : 173181.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -42 (-1.29 % of base) : 217110.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this (Tier0-FullOpts)
         -40 (-1.94 % of base) : 506689.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericStack>d__185:MoveNext():this (Tier0-FullOpts)

Top method regressions (percentages):
          59 (8.65 % of base) : 575014.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          50 (7.55 % of base) : 114832.dasm - Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener:OnNext(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (Tier1)
          14 (7.37 % of base) : 102465.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
           8 (6.84 % of base) : 580213.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (6.84 % of base) : 81656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (6.84 % of base) : 51203.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (6.61 % of base) : 51200.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (6.61 % of base) : 580430.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (6.61 % of base) : 81635.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyVersionAttributeSetting():System.Version:this (Tier1)
           8 (6.50 % of base) : 572472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (6.50 % of base) : 50658.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
           8 (6.50 % of base) : 81070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte:this (Tier1)
          86 (6.09 % of base) : 617764.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (Tier0-FullOpts)
          13 (5.86 % of base) : 195056.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (Tier0-FullOpts)
          31 (5.56 % of base) : 360391.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (Tier0-FullOpts)
          23 (5.28 % of base) : 580360.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
          25 (5.04 % of base) : 614340.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
          20 (4.38 % of base) : 413330.dasm - System.Tests.ConvertToStringTests:FromByte() (Tier0-FullOpts)
          34 (4.31 % of base) : 270803.dasm - System.Globalization.Tests.StringInfoMiscTests:GetTextElementEnumerator(System.String,int,System.String[]):this (Tier0-FullOpts)
          84 (4.12 % of base) : 478453.dasm - System.Text.UnicodeEncoding:GetBytes(uint,int,uint,int,System.Text.EncoderNLS):int:this (Tier1)

Top method improvements (percentages):
         -26 (-20.63 % of base) : 296590.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier0-FullOpts)
         -20 (-15.87 % of base) : 97190.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (Tier0-FullOpts)
         -32 (-11.59 % of base) : 396538.dasm - System.Xml.Linq.XAttribute:set_Value(System.String):this (Tier1)
          -6 (-11.32 % of base) : 104887.dasm - Stashbox.Utils.Data.Immutable.ImmutableTree`1[System.__Canon]:GetOrDefault(int):System.__Canon:this (Tier0-FullOpts)
         -28 (-11.20 % of base) : 460388.dasm - System.Numerics.BigInteger:CompareTo(System.Numerics.BigInteger):int:this (Tier1)
         -22 (-10.58 % of base) : 478.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -22 (-10.58 % of base) : 561387.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -43 (-10.31 % of base) : 173181.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (Tier0-FullOpts)
         -22 (-9.28 % of base) : 603899.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (Tier0-FullOpts)
         -30 (-8.96 % of base) : 80514.dasm - System.Xml.Linq.XElement:AppendAttribute(System.Xml.Linq.XAttribute):this (Tier1)
         -30 (-8.96 % of base) : 53124.dasm - System.Xml.Linq.XElement:AppendAttribute(System.Xml.Linq.XAttribute):this (Tier1)
         -18 (-8.45 % of base) : 242678.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -4 (-8.00 % of base) : 104504.dasm - Stashbox.Utils.Data.Tree`1[System.__Canon]:GetOrDefault(int):System.__Canon:this (Tier0-FullOpts)
         -11 (-7.97 % of base) : 227274.dasm - System.Data.ExpressionParser:ScanDate():this (Tier0-FullOpts)
          -4 (-7.27 % of base) : 1817.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (Tier0-FullOpts)
         -13 (-7.26 % of base) : 157214.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyAlgorithmIdAttributeSetting():System.Nullable`1[int]:this (Tier1)
          -4 (-7.14 % of base) : 174735.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (Tier0-FullOpts)
         -13 (-7.07 % of base) : 126229.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier0-FullOpts)
         -14 (-6.76 % of base) : 313602.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (Tier1)
          -9 (-6.62 % of base) : 217228.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (Tier0-FullOpts)


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

Detail diffs



Top file regressions (bytes):
         278 : 15948.dasm (5.90 % of base)
         254 : 188970.dasm (7.01 % of base)
         156 : 189154.dasm (3.33 % of base)
          86 : 312065.dasm (6.09 % of base)
          76 : 312086.dasm (3.06 % of base)
          62 : 189193.dasm (1.59 % of base)
          62 : 189249.dasm (2.34 % of base)
          61 : 105676.dasm (1.99 % of base)
          56 : 303444.dasm (1.96 % of base)
          55 : 188980.dasm (1.99 % of base)
          55 : 173512.dasm (2.40 % of base)
          55 : 189296.dasm (1.60 % of base)
          52 : 189173.dasm (1.11 % of base)
          50 : 172164.dasm (2.13 % of base)
          50 : 316357.dasm (2.13 % of base)
          49 : 188810.dasm (2.69 % of base)
          44 : 189176.dasm (0.86 % of base)
          42 : 189293.dasm (1.25 % of base)
          42 : 268216.dasm (2.42 % of base)
          41 : 24145.dasm (4.69 % of base)

Top file improvements (bytes):
        -172 : 268460.dasm (-6.40 % of base)
        -117 : 188325.dasm (-1.77 % of base)
         -85 : 94132.dasm (-2.38 % of base)
         -85 : 93772.dasm (-2.38 % of base)
         -52 : 251074.dasm (-2.92 % of base)
         -52 : 251081.dasm (-2.92 % of base)
         -52 : 275188.dasm (-2.92 % of base)
         -52 : 276498.dasm (-2.92 % of base)
         -51 : 294112.dasm (-7.74 % of base)
         -51 : 294111.dasm (-7.96 % of base)
         -50 : 93903.dasm (-3.98 % of base)
         -43 : 63312.dasm (-10.31 % of base)
         -36 : 304680.dasm (-2.94 % of base)
         -34 : 153512.dasm (-4.50 % of base)
         -31 : 268288.dasm (-1.04 % of base)
         -29 : 100672.dasm (-3.31 % of base)
         -28 : 125789.dasm (-0.84 % of base)
         -28 : 124715.dasm (-0.84 % of base)
         -27 : 31971.dasm (-2.80 % of base)
         -27 : 92003.dasm (-0.88 % of base)

81 total files with Code Size differences (43 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         278 (5.90 % of base) : 15948.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)
         254 (7.01 % of base) : 188970.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
         156 (3.33 % of base) : 189154.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
          86 (6.09 % of base) : 312065.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
          76 (3.06 % of base) : 312086.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
          62 (1.59 % of base) : 189193.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTable():this (FullOpts)
          62 (2.34 % of base) : 189249.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTableMod():this (FullOpts)
          61 (1.99 % of base) : 105676.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          56 (1.96 % of base) : 303444.dasm - System.Text.RegularExpressions.Tests.GetGroupNamesTests:GroupNamesAndNumbers(System.String,System.String,System.String[],int[],System.String[],int):this (FullOpts)
          55 (1.60 % of base) : 189296.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateGenericParamTable():this (FullOpts)
          55 (1.99 % of base) : 188980.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeRefTable():this (FullOpts)
          55 (2.40 % of base) : 173512.dasm - XPathTests.Common.Utils:XPathNodesetTest(int,System.String,System.String,XPathTests.Common.XPathResult,System.Xml.XmlNamespaceManager,System.String) (FullOpts)
          52 (1.11 % of base) : 189173.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
          50 (2.13 % of base) : 172164.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
          50 (2.13 % of base) : 316357.dasm - XmlSerializerTests:XmlMembersMapping_MultipleMembers_XmlAnyElement() (FullOpts)
          49 (2.69 % of base) : 188810.dasm - System.Reflection.Metadata.Tests.AssemblyDefinitionTests:ValidateAssemblyNameWithCultureSet():this (FullOpts)
          44 (0.86 % of base) : 189176.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
          42 (1.25 % of base) : 189293.dasm - System.Reflection.Metadata.Tests.AssemblyReferenceTests:ValidateAssemblyNameForMultipleAssemblyReferences():this (FullOpts)
          42 (2.42 % of base) : 268216.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestReadingSingleValueJson(ubyte[],System.Buffers.ReadOnlySequence`1[ubyte],System.String) (FullOpts)
          41 (4.69 % of base) : 24145.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)

Top method improvements (bytes):
        -172 (-6.40 % of base) : 268460.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:AllowSingleSegment(System.String,System.String,int) (FullOpts)
        -117 (-1.77 % of base) : 188325.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (FullOpts)
         -85 (-2.38 % of base) : 93772.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -85 (-2.38 % of base) : 94132.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -52 (-2.92 % of base) : 251074.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericICollection>d__164:MoveNext():this (FullOpts)
         -52 (-2.92 % of base) : 276498.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericICollection>d__203:MoveNext():this (FullOpts)
         -52 (-2.92 % of base) : 251081.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__154:MoveNext():this (FullOpts)
         -52 (-2.92 % of base) : 275188.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__193:MoveNext():this (FullOpts)
         -51 (-7.74 % of base) : 294112.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookahead(int):this (FullOpts)
         -51 (-7.96 % of base) : 294111.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookbehind(int):this (FullOpts)
         -50 (-3.98 % of base) : 93903.dasm - System.Data.Select:AnalyzeExpression(System.Data.BinaryNode):this (FullOpts)
         -43 (-10.31 % of base) : 63312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -36 (-2.94 % of base) : 304680.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -34 (-4.50 % of base) : 153512.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
         -31 (-1.04 % of base) : 268288.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestSkipPartial(System.String,ubyte) (FullOpts)
         -29 (-3.31 % of base) : 100672.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -28 (-0.84 % of base) : 125789.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (FullOpts)
         -28 (-0.84 % of base) : 124715.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (FullOpts)
         -27 (-2.80 % of base) : 31971.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -27 (-0.88 % of base) : 92003.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this (FullOpts)

Top method regressions (percentages):
          14 (7.37 % of base) : 35095.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
         254 (7.01 % of base) : 188970.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (FullOpts)
          86 (6.09 % of base) : 312065.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
         278 (5.90 % of base) : 15948.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)
          13 (5.86 % of base) : 78024.dasm - System.Collections.Generic.SortedSet`1[int]:SymmetricExceptWithSameComparer(int[],int):this (FullOpts)
          31 (5.56 % of base) : 164094.dasm - System.Net.Tests.WebHeaderCollectionTest:Getter_Success():this (FullOpts)
          41 (4.69 % of base) : 24145.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|433_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          10 (4.15 % of base) : 152819.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          14 (3.99 % of base) : 193284.dasm - System.Tests.ConvertToStringTests:FromByte() (FullOpts)
          14 (3.93 % of base) : 193248.dasm - System.Tests.ConvertToStringTests:FromUInt32Array() (FullOpts)
          14 (3.90 % of base) : 193244.dasm - System.Tests.ConvertToStringTests:FromUInt16Array() (FullOpts)
          22 (3.77 % of base) : 76599.dasm - System.Collections.Specialized.Tests.NameValueCollectionCopyToTests:CopyTo(int,int):this (FullOpts)
          23 (3.60 % of base) : 170263.dasm - System.Collections.ObjectModel.Tests.PublicMethodsTest:CopyToTest() (FullOpts)
          13 (3.49 % of base) : 50966.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:CanGetSemanticInfo(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte):ubyte (FullOpts)
         156 (3.33 % of base) : 189154.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (FullOpts)
          29 (3.22 % of base) : 104719.dasm - System.DirectoryServices.Protocols.Tests.SortRequestControlTests:Ctor_SortKeys(ubyte):this (FullOpts)
          38 (3.19 % of base) : 157681.dasm - System.Net.Tests.HttpListenerRequestTests+<Cookies_GetProperty_ReturnsExpected>d__36:MoveNext():this (FullOpts)
          76 (3.06 % of base) : 312086.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
          25 (2.97 % of base) : 268307.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:Allow(System.String,System.String,int) (FullOpts)
          18 (2.90 % of base) : 59779.dasm - Microsoft.VisualBasic.Tests.InteractionTests:Environ_Name():this (FullOpts)

Top method improvements (percentages):
         -26 (-20.63 % of base) : 97737.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -20 (-15.87 % of base) : 32042.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -22 (-10.58 % of base) : 277850.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -22 (-10.58 % of base) : 218.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -43 (-10.31 % of base) : 63312.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)
         -22 (-9.28 % of base) : 304654.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -11 (-7.97 % of base) : 94633.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -51 (-7.96 % of base) : 294111.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookbehind(int):this (FullOpts)
         -51 (-7.74 % of base) : 294112.dasm - System.Text.RegularExpressions.Tests.RegexEnumerateMatchesTests:EnumerateMatches_Lookahead(int):this (FullOpts)
          -4 (-7.27 % of base) : 760.dasm - System.Xml.Linq.XObject:SkipNotify():ubyte:this (FullOpts)
          -4 (-7.14 % of base) : 64425.dasm - System.Xml.Linq.XObject:get_BaseUri():System.String:this (FullOpts)
         -13 (-7.07 % of base) : 45601.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -17 (-6.85 % of base) : 177145.dasm - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,int,System.Xml.XmlParserContext):this (FullOpts)
          -9 (-6.62 % of base) : 92079.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (FullOpts)
        -172 (-6.40 % of base) : 268460.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:AllowSingleSegment(System.String,System.String,int) (FullOpts)
         -16 (-5.71 % of base) : 35740.dasm - Stashbox.Registration.DecoratorRepository:GetRegistrationsForType(System.Type):System.Collections.Generic.IEnumerable`1[Stashbox.Registration.ServiceRegistrations.ServiceRegistration]:this (FullOpts)
         -24 (-5.50 % of base) : 155886.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.50 % of base) : 157702.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.50 % of base) : 161015.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          -4 (-5.13 % of base) : 1952.dasm - System.Xml.Linq.XObject:GetSaveOptionsFromAnnotations():int:this (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: 11350878 (overridden on cmd)
Total bytes of diff: 11351098 (overridden on cmd)
Total bytes of delta: 220 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         312 : 24340.dasm (6.70 % of base)
          52 : 16614.dasm (1.45 % of base)
          34 : 13011.dasm (1.12 % of base)
          19 : 21205.dasm (0.38 % of base)
          19 : 2144.dasm (1.82 % of base)
          14 : 14524.dasm (2.10 % of base)
          12 : 19350.dasm (1.01 % of base)
          12 : 19362.dasm (2.91 % of base)
          12 : 19359.dasm (1.24 % of base)
          10 : 25460.dasm (0.31 % of base)
           6 : 35961.dasm (1.31 % of base)
           6 : 19406.dasm (1.17 % of base)
           6 : 29579.dasm (1.80 % of base)
           6 : 19328.dasm (1.29 % of base)
           6 : 18890.dasm (0.70 % of base)
           5 : 34900.dasm (0.02 % of base)
           2 : 4758.dasm (0.36 % of base)
           1 : 10058.dasm (0.09 % of base)
           1 : 10783.dasm (0.36 % of base)
           1 : 21207.dasm (0.09 % of base)

Top file improvements (bytes):
        -107 : 15973.dasm (-4.57 % of base)
         -35 : 19569.dasm (-3.73 % of base)
         -22 : 20653.dasm (-10.58 % of base)
         -19 : 17977.dasm (-2.41 % of base)
         -13 : 27349.dasm (-0.37 % of base)
         -13 : 21965.dasm (-7.03 % of base)
         -12 : 22153.dasm (-0.45 % of base)
          -8 : 22787.dasm (-0.41 % of base)
          -8 : 404.dasm (-3.08 % of base)
          -8 : 876.dasm (-0.15 % of base)
          -7 : 20423.dasm (-0.44 % of base)
          -6 : 26889.dasm (-0.63 % of base)
          -6 : 1705.dasm (-0.50 % of base)
          -5 : 18643.dasm (-0.68 % of base)
          -5 : 27650.dasm (-0.98 % of base)
          -4 : 661.dasm (-2.76 % of base)
          -4 : 8851.dasm (-1.27 % of base)
          -4 : 25789.dasm (-0.70 % of base)
          -4 : 26668.dasm (-1.28 % of base)
          -4 : 26843.dasm (-0.95 % of base)

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

Top method regressions (bytes):
         312 (6.70 % of base) : 24340.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)
          52 (1.45 % of base) : 16614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
          34 (1.12 % of base) : 13011.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          19 (0.38 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
          19 (1.82 % of base) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          14 (2.10 % of base) : 14524.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
          12 (1.24 % of base) : 19359.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
          12 (2.91 % of base) : 19362.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          12 (1.01 % of base) : 19350.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
          10 (0.31 % of base) : 25460.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           6 (1.80 % of base) : 29579.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           6 (1.17 % of base) : 19406.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           6 (1.29 % of base) : 19328.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           6 (0.70 % of base) : 18890.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArgumentList(byref,byref,byref,ushort,ushort):this (FullOpts)
           6 (1.31 % of base) : 35961.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModule(System.String[],ubyte,ubyte):System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
           5 (0.02 % of base) : 34900.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadModuleManifest(System.String,System.Management.Automation.ExternalScriptInfo,System.Collections.Hashtable,System.Collections.Hashtable,int,System.Version,System.Version,System.Version,System.Nullable`1[System.Guid],byref,byref):System.Management.Automation.PSModuleInfo:this (FullOpts)
           2 (0.36 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           1 (0.09 % of base) : 10058.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
           1 (0.09 % of base) : 21207.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
           1 (0.36 % of base) : 10783.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)

Top method improvements (bytes):
        -107 (-4.57 % of base) : 15973.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -35 (-3.73 % of base) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -22 (-10.58 % of base) : 20653.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -19 (-2.41 % of base) : 17977.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
         -13 (-0.37 % of base) : 27349.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
         -13 (-7.03 % of base) : 21965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
         -12 (-0.45 % of base) : 22153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-0.41 % of base) : 22787.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -8 (-0.15 % of base) : 876.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          -8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -7 (-0.44 % of base) : 20423.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:FromOptions(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics (FullOpts)
          -6 (-0.63 % of base) : 26889.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          -6 (-0.50 % of base) : 1705.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
          -5 (-0.68 % of base) : 18643.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)
          -5 (-0.98 % of base) : 27650.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          -4 (-0.95 % of base) : 26843.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
          -4 (-0.31 % of base) : 28897.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileSynthesizedMethods(Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
          -4 (-0.70 % of base) : 25789.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
          -4 (-0.49 % of base) : 20427.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -4 (-1.28 % of base) : 26668.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)

Top method regressions (percentages):
         312 (6.70 % of base) : 24340.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)
          12 (2.91 % of base) : 19362.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getInterpolationCloseToken|434_2(Microsoft.CodeAnalysis.GreenNode,byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          14 (2.10 % of base) : 14524.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
          19 (1.82 % of base) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
           6 (1.80 % of base) : 29579.dasm - Microsoft.CodeAnalysis.CSharp.IteratorRewriter:EnsureSpecialPropertyGetter(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          52 (1.45 % of base) : 16614.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
           6 (1.31 % of base) : 35961.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModule(System.String[],ubyte,ubyte):System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
           6 (1.29 % of base) : 19328.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getOpenQuote|428_1(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          12 (1.24 % of base) : 19359.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolation>g__getFormatAndCloseBrace|434_1(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]:this (FullOpts)
           6 (1.17 % of base) : 19406.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseInterpolatedStringToken>g__getCloseQuote|428_5(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          34 (1.12 % of base) : 13011.dasm - FSharp.Compiler.CheckExpressions:TcRecdExpr(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`5[FSharp.Compiler.Syntax.SynType,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]],FSharp.Compiler.Text.Range]],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExprRecordField],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          12 (1.01 % of base) : 19350.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseInterpolation(Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+Interpolation,int):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterpolationSyntax (FullOpts)
           6 (0.70 % of base) : 18890.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArgumentList(byref,byref,byref,ushort,ushort):this (FullOpts)
          19 (0.38 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
           2 (0.36 % of base) : 4758.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           1 (0.36 % of base) : 10783.dasm - Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
          10 (0.31 % of base) : 25460.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           1 (0.09 % of base) : 10058.dasm - FSharp.Compiler.MethodCalls:BuildILMethInfoCall(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,ubyte,FSharp.Compiler.Infos+ILMethInfo,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType] (FullOpts)
           1 (0.09 % of base) : 21207.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
           5 (0.02 % of base) : 34900.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadModuleManifest(System.String,System.Management.Automation.ExternalScriptInfo,System.Collections.Hashtable,System.Collections.Hashtable,int,System.Version,System.Version,System.Version,System.Nullable`1[System.Guid],byref,byref):System.Management.Automation.PSModuleInfo:this (FullOpts)

Top method improvements (percentages):
         -22 (-10.58 % of base) : 20653.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -13 (-7.03 % of base) : 21965.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
        -107 (-4.57 % of base) : 15973.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -35 (-3.73 % of base) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          -4 (-3.60 % of base) : 17641.dasm - System.Globalization.CultureData:GetSeparator(System.String,System.String):System.String (FullOpts)
          -8 (-3.08 % of base) : 404.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -4 (-2.76 % of base) : 661.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
         -19 (-2.41 % of base) : 17977.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          -4 (-1.28 % of base) : 26668.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ResetStack():this (FullOpts)
          -4 (-1.27 % of base) : 8851.dasm - System.Xml.Linq.XContainer+<GetDescendants>d__38:MoveNext():ubyte:this (FullOpts)
          -2 (-1.06 % of base) : 3137.dasm - System.Globalization.Ordinal:CompareStringIgnoreCase(byref,int,byref,int):int (FullOpts)
          -5 (-0.98 % of base) : 27650.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          -4 (-0.95 % of base) : 26843.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:FindLocalFunction(Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol (FullOpts)
          -4 (-0.70 % of base) : 25789.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromEqualsMethod>g__isWellKnownEqualityMethodOrImplementation|213_1(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte (FullOpts)
          -5 (-0.68 % of base) : 18643.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)
          -6 (-0.63 % of base) : 26889.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          -6 (-0.50 % of base) : 1705.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
          -4 (-0.49 % of base) : 20427.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -12 (-0.45 % of base) : 22153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.44 % of base) : 33630.dasm - System.Management.Automation.Language.SymbolResolver:VisitAssignmentStatement(System.Management.Automation.Language.AssignmentStatementAst):int:this (FullOpts)