Assembly Diffs

linux arm

Diffs are based on 2,239,012 contexts (829,328 MinOpts, 1,409,684 FullOpts).

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

Overall (-25,352 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,290,340 -344
benchmarks.run_pgo.linux.arm.checked.mch 63,930,056 -980
benchmarks.run_tiered.linux.arm.checked.mch 21,546,378 -348
coreclr_tests.run.linux.arm.checked.mch 321,751,292 -3,566
libraries.crossgen2.linux.arm.checked.mch 34,522,594 -938
libraries.pmi.linux.arm.checked.mch 49,852,844 -2,056
libraries_tests.run.linux.arm.Release.mch 243,535,854 -13,848
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,520,720 -3,166
realworld.run.linux.arm.checked.mch 13,606,688 -106

FullOpts (-25,352 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,901,138 -344
benchmarks.run_pgo.linux.arm.checked.mch 52,730,090 -980
benchmarks.run_tiered.linux.arm.checked.mch 12,893,378 -348
coreclr_tests.run.linux.arm.checked.mch 109,273,704 -3,566
libraries.crossgen2.linux.arm.checked.mch 34,521,364 -938
libraries.pmi.linux.arm.checked.mch 49,746,620 -2,056
libraries_tests.run.linux.arm.Release.mch 122,566,722 -13,848
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,449,984 -3,166
realworld.run.linux.arm.checked.mch 13,171,388 -106

Example diffs

benchmarks.run.linux.arm.checked.mch

-24 (-32.43%) : 14130.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,78 +8,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M40448_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r0] - ldr r5, [r0] - cmp r1, r3 - beq SHORT G_M40448_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=16 bbWeight=0.25 PerfScore 1.50 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M40448_IG09
+ ; byrRegs +[r0] + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08 + ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +86,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-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)

+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 ...

+10 (+2.84%) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)

@@ -16,7 +16,7 @@ ; V05 loc1 [V05,T21] ( 3, 1.50) int -> r10 ;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r7
+; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r9
; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0 ;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V11 tmp4 [V11,T05] ( 3, 3 ) int -> r0 "Span.get_Item index" @@ -103,22 +103,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} ldr r8, [sp+0x34] cmp r8, 0 bne SHORT G_M17254_IG07
- add r7, sp, 40 - ; byrRegs +[r7]
+ addw r9, sp, 40 + ; byrRegs +[r9]
b SHORT G_M17254_IG06
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7] - add r7, sp, 48 - ; byrRegs +[r7] - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz - ldr r2, [r7+0x04]
+ ; byrRegs -[r9] + addw r9, sp, 48 + ; byrRegs +[r9] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0230 {r4 r5 r9}, byref, isz + ldr r2, [r9+0x04]
cmp r6, r2 blt SHORT G_M17254_IG17 cmp r2, r6 bhi G_M17254_IG26
- ldr r1, [r7]
+ ldr r1, [r9]
; byrRegs +[r1] lsls r2, r2, 1 mov r0, r5 @@ -128,12 +128,12 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r9+0x04]
str r0, [r4] b SHORT G_M17254_IG22
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r9] +[r5]
ldr r1, [sp+0x28] ; byrRegs +[r1] mov r0, r1 @@ -291,7 +291,7 @@ G_M17254_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 352 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 362, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 362 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -303,7 +303,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 176 (0x000b0) Actual length = 352 (0x000160)
+ Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+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

-24 (-32.43%) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,81 +9,64 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M38955_IG09
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r1, r0 - bne SHORT G_M38955_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - cmp r1, r0 - bne SHORT G_M38955_IG08 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4+0x08] - ldr r3, [r5+0x04] - cmp r0, r3 - beq SHORT G_M38955_IG06
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3] + ; byrRegs -[r0]
movs r0, 0
- b SHORT G_M38955_IG07
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M38955_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r1+0x08] + ldr r0, [r0+0x04] + ; byrRegs -[r0] + cmp r3, r0 + beq SHORT G_M38955_IG07 + movs r0, 0 + b SHORT G_M38955_IG08
;; size=12 bbWeight=1 PerfScore 6.00
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r5] - mov r1, r4 - ; gcrRegs +[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M38955_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M38955_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M38955_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.50, instruction count 29, allocated bytes for code 74 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -107,7 +90,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,81 +9,64 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M38955_IG09
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r1, r0 - bne SHORT G_M38955_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - cmp r1, r0 - bne SHORT G_M38955_IG08 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4+0x08] - ldr r3, [r5+0x04] - cmp r0, r3 - beq SHORT G_M38955_IG06
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3] + ; byrRegs -[r0]
movs r0, 0
- b SHORT G_M38955_IG07
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M38955_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r1+0x08] + ldr r0, [r0+0x04] + ; byrRegs -[r0] + cmp r3, r0 + beq SHORT G_M38955_IG07 + movs r0, 0 + b SHORT G_M38955_IG08
;; size=12 bbWeight=1 PerfScore 6.00
-G_M38955_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r5] - mov r1, r4 - ; gcrRegs +[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M38955_IG05 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M38955_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M38955_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.50, instruction count 29, allocated bytes for code 74 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -107,7 +90,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-22 (-30.56%) : 24101.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,64 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 2 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T04] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V08 cse1 [V08,T03] ( 4, 2.50) int -> r0 "CSE - aggressive"
+; V06 tmp4 [V06,T03] ( 2, 2 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r1, r4
+G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M38955_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - cmp r1, r0 - bne SHORT G_M38955_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - cmp r1, r0
+G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M38955_IG06
- ;; size=4 bbWeight=1 PerfScore 2.00 -G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref - mov r1, r4 - ; gcrRegs +[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX
+ ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M38955_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M38955_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4+0x08] - ldr r3, [r5+0x04] - cmp r0, r3
+ ; byrRegs -[r0] + movs r0, 0 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M38955_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + ldr r3, [r1+0x08] + ldr r0, [r0+0x04] + ; byrRegs -[r0] + cmp r3, r0
beq SHORT G_M38955_IG07 movs r0, 0 b SHORT G_M38955_IG08 ;; size=12 bbWeight=1 PerfScore 6.00 G_M38955_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4] - ; byrRegs -[r5]
+ ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 G_M38955_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38955_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movs r0, 0 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M38955_IG10: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 21.50, instruction count 28, allocated bytes for code 72 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +90,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+18 (+5.59%) : 53679.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToLowerConversion:int (Tier1)

@@ -13,12 +13,12 @@ ; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> ; V02 arg2 [V02,T15] ( 2, 1 ) byref -> [sp+0x40] single-def ; V03 loc0 [V03,T04] ( 6, 4 ) int -> r5
-; V04 loc1 [V04,T14] ( 3, 2 ) int -> r9
+; V04 loc1 [V04,T14] ( 3, 2 ) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc3 [V06 ] ( 1, 1 ) byref -> [sp+0x04] must-init pinned single-def ;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc5 [V08 ] ( 1, 1 ) byref -> [sp+0x00] must-init pinned single-def
-; V09 loc6 [V09,T05] ( 6, 4 ) int -> r10
+; V09 loc6 [V09,T05] ( 6, 4 ) int -> r4
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]> ;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> @@ -26,14 +26,14 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T00] ( 4, 8 ) int -> r8 "Inlining Arg"
+; V17 tmp7 [V17,T01] ( 5, 8 ) int -> r8 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V23 tmp13 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T01] ( 4, 8 ) int -> r9 "Inlining Arg"
+; V24 tmp14 [V24,T00] ( 6, 8 ) int -> r9 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -91,7 +91,7 @@ ; V79 tmp69 [V79,T07] ( 4, 4 ) byref -> r4 single-def "V00.[000..004)" ; V80 tmp70 [V80,T06] ( 5, 4 ) int -> r5 "V00.[004..008)" ; V81 tmp71 [V81,T08] ( 4, 4 ) byref -> r6 single-def "V01.[000..004)"
-; V82 tmp72 [V82,T12] ( 5, 3 ) int -> r7 "V01.[004..008)"
+; V82 tmp72 [V82,T12] ( 6, 3 ) int -> r7 "V01.[004..008)"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> r0 "Cast away GC" ; V84 tmp74 [V84,T10] ( 2, 4 ) int -> r1 "Cast away GC" ; V85 tmp75 [V85,T11] ( 2, 4 ) int -> r1 "argument with side effect" @@ -114,42 +114,26 @@ G_M42491_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r6, [sp+0x38] ; byrRegs +[r6] ldr r7, [sp+0x3C]
- movs r0, 2 - smull r8, r1, r5, r0 - cmp r1, r8 ASR 31
+ movs r1, 2 + smull r8, r0, r5, r1 + cmp r0, r8 ASR 31
bne SHORT G_M42491_IG10 cmp r8, 0 blt SHORT G_M42491_IG11
- ;; size=26 bbWeight=1 PerfScore 10.00 -G_M42491_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz - movs r0, 2 - smull r9, r1, r7, r0 - cmp r1, r9 ASR 31
+ movs r1, 2 + smull r9, r0, r7, r1 + cmp r0, r9 ASR 31
bne SHORT G_M42491_IG10 cmp r9, 0
- bge SHORT G_M42491_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=74 bbWeight=1 PerfScore 22.00 -G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ blt SHORT G_M42491_IG12 + ;; size=44 bbWeight=1 PerfScore 16.00 +G_M42491_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r8, 0
- beq SHORT G_M42491_IG12
+ beq SHORT G_M42491_IG13 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r9, 0
- beq SHORT G_M42491_IG12
+ beq SHORT G_M42491_IG13
subs r1, r6, r4 cmp r1, r8 blo SHORT G_M42491_IG05 @@ -157,9 +141,9 @@ G_M42491_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b cmp r0, r1 blo SHORT G_M42491_IG05 cmp r5, r7
- bgt SHORT G_M42491_IG13
+ bgt SHORT G_M42491_IG14
b SHORT G_M42491_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M42491_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[r4 r6] movs r0, 72 @@ -171,7 +155,7 @@ G_M42491_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=16 bbWeight=0 PerfScore 0.00 G_M42491_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref ; byrRegs +[r4 r6]
- mov r9, 0
+ mov r10, 0
;; size=4 bbWeight=1 PerfScore 1.00 G_M42491_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz str r4, [sp+0x04] // [V06 loc3] @@ -184,18 +168,18 @@ G_M42491_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r4 r6]
- mov r10, r0 - cmp r10, r5 - bhi SHORT G_M42491_IG14 - ldr r4, [sp+0x40] // [V02 arg2] - ; byrRegs +[r4] - str r10, [r4] - cmp r5, r10 - bne SHORT G_M42491_IG15 - ;; size=38 bbWeight=1 PerfScore 16.00
+ mov r4, r0 + cmp r4, r5 + bhi SHORT G_M42491_IG15 + ldr r6, [sp+0x40] // [V02 arg2] + ; byrRegs +[r6] + str r4, [r6] + cmp r5, r4 + bne SHORT G_M42491_IG16 + ;; size=36 bbWeight=1 PerfScore 16.00
G_M42491_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4] - mov r0, r9
+ ; byrRegs -[r6] + mov r0, r10
;; size=2 bbWeight=1 PerfScore 1.00 G_M42491_IG09: ; bbWeight=1, epilog, nogc, extend add sp, 12 @@ -218,18 +202,43 @@ G_M42491_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M42491_IG03 - ;; size=30 bbWeight=0 PerfScore 0.00
+ movs r0, 2 + smull r9, r1, r7, r0 + cmp r1, r9 ASR 31 + bne SHORT G_M42491_IG10 + cmp r9, 0 + bge SHORT G_M42491_IG03 + ;; size=46 bbWeight=0 PerfScore 0.00
G_M42491_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, 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> + cmp r8, 0 + bne SHORT G_M42491_IG04 + ;; size=62 bbWeight=0 PerfScore 0.00 +G_M42491_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r5, r7 ble SHORT G_M42491_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42491_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
mov r5, r7
- mov r9, 1
+ mov r10, 1
b SHORT G_M42491_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42491_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4 r6] movw r0, 0xd1ff movt r0, 0xd1ff @@ -239,24 +248,24 @@ G_M42491_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ldr r4, [sp+0x40] // [V02 arg2] - ; byrRegs +[r4] - str r10, [r4] - cmp r5, r10
+ ldr r6, [sp+0x40] // [V02 arg2] + ; byrRegs +[r6] + str r4, [r6] + cmp r5, r4
beq SHORT G_M42491_IG08
- ;; size=38 bbWeight=0 PerfScore 0.00 -G_M42491_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r4]
+ ;; size=36 bbWeight=0 PerfScore 0.00 +G_M42491_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r6]
movs r0, 3 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M42491_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M42491_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 16 bx lr ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 322, prolog size 18, PerfScore 74.00, instruction count 114, allocated bytes for code 322 (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 340, prolog size 18, PerfScore 58.00, instruction count 121, allocated bytes for code 340 (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)
; ============================================================ Unwind Info: @@ -268,7 +277,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
+ Function Length : 170 (0x000aa) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+18 (+5.59%) : 40904.dasm - System.Text.Ascii:ChangeCaseushort,ushort,System.Text.Ascii+ToUpperConversion:int (Tier1)

@@ -13,12 +13,12 @@ ; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> ; V02 arg2 [V02,T15] ( 2, 1 ) byref -> [sp+0x40] single-def ; V03 loc0 [V03,T04] ( 6, 4 ) int -> r5
-; V04 loc1 [V04,T14] ( 3, 2 ) int -> r9
+; V04 loc1 [V04,T14] ( 3, 2 ) int -> r10
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 loc3 [V06 ] ( 1, 1 ) byref -> [sp+0x04] must-init pinned single-def ;* V07 loc4 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc5 [V08 ] ( 1, 1 ) byref -> [sp+0x00] must-init pinned single-def
-; V09 loc6 [V09,T05] ( 6, 4 ) int -> r10
+; V09 loc6 [V09,T05] ( 6, 4 ) int -> r4
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]> ;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> @@ -26,14 +26,14 @@ ;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp7 [V17,T00] ( 4, 8 ) int -> r8 "Inlining Arg"
+; V17 tmp7 [V17,T01] ( 5, 8 ) int -> r8 "Inlining Arg"
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp11 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V22 tmp12 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V23 tmp13 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V24 tmp14 [V24,T01] ( 4, 8 ) int -> r9 "Inlining Arg"
+; V24 tmp14 [V24,T00] ( 6, 8 ) int -> r9 "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp17 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -91,7 +91,7 @@ ; V79 tmp69 [V79,T07] ( 4, 4 ) byref -> r4 single-def "V00.[000..004)" ; V80 tmp70 [V80,T06] ( 5, 4 ) int -> r5 "V00.[004..008)" ; V81 tmp71 [V81,T08] ( 4, 4 ) byref -> r6 single-def "V01.[000..004)"
-; V82 tmp72 [V82,T12] ( 5, 3 ) int -> r7 "V01.[004..008)"
+; V82 tmp72 [V82,T12] ( 6, 3 ) int -> r7 "V01.[004..008)"
; V83 tmp73 [V83,T09] ( 2, 4 ) int -> r0 "Cast away GC" ; V84 tmp74 [V84,T10] ( 2, 4 ) int -> r1 "Cast away GC" ; V85 tmp75 [V85,T11] ( 2, 4 ) int -> r1 "argument with side effect" @@ -114,42 +114,26 @@ G_M47258_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r6, [sp+0x38] ; byrRegs +[r6] ldr r7, [sp+0x3C]
- movs r0, 2 - smull r8, r1, r5, r0 - cmp r1, r8 ASR 31
+ movs r1, 2 + smull r8, r0, r5, r1 + cmp r0, r8 ASR 31
bne SHORT G_M47258_IG10 cmp r8, 0 blt SHORT G_M47258_IG11
- ;; size=26 bbWeight=1 PerfScore 10.00 -G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz - movs r0, 2 - smull r9, r1, r7, r0 - cmp r1, r9 ASR 31
+ movs r1, 2 + smull r9, r0, r7, r1 + cmp r0, r9 ASR 31
bne SHORT G_M47258_IG10 cmp r9, 0
- bge SHORT G_M47258_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=74 bbWeight=1 PerfScore 22.00 -G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+ blt SHORT G_M47258_IG12 + ;; size=44 bbWeight=1 PerfScore 16.00 +G_M47258_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r8, 0
- beq SHORT G_M47258_IG12
+ beq SHORT G_M47258_IG13 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r9, 0
- beq SHORT G_M47258_IG12
+ beq SHORT G_M47258_IG13
subs r1, r6, r4 cmp r1, r8 blo SHORT G_M47258_IG05 @@ -157,9 +141,9 @@ G_M47258_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b cmp r0, r1 blo SHORT G_M47258_IG05 cmp r5, r7
- bgt SHORT G_M47258_IG13
+ bgt SHORT G_M47258_IG14
b SHORT G_M47258_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[r4 r6] movs r0, 72 @@ -171,7 +155,7 @@ G_M47258_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=16 bbWeight=0 PerfScore 0.00 G_M47258_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref ; byrRegs +[r4 r6]
- mov r9, 0
+ mov r10, 0
;; size=4 bbWeight=1 PerfScore 1.00 G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz str r4, [sp+0x04] // [V06 loc3] @@ -184,18 +168,18 @@ G_M47258_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r4 r6]
- mov r10, r0 - cmp r10, r5 - bhi SHORT G_M47258_IG14 - ldr r4, [sp+0x40] // [V02 arg2] - ; byrRegs +[r4] - str r10, [r4] - cmp r5, r10 - bne SHORT G_M47258_IG15 - ;; size=38 bbWeight=1 PerfScore 16.00
+ mov r4, r0 + cmp r4, r5 + bhi SHORT G_M47258_IG15 + ldr r6, [sp+0x40] // [V02 arg2] + ; byrRegs +[r6] + str r4, [r6] + cmp r5, r4 + bne SHORT G_M47258_IG16 + ;; size=36 bbWeight=1 PerfScore 16.00
G_M47258_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4] - mov r0, r9
+ ; byrRegs -[r6] + mov r0, r10
;; size=2 bbWeight=1 PerfScore 1.00 G_M47258_IG09: ; bbWeight=1, epilog, nogc, extend add sp, 12 @@ -218,18 +202,43 @@ G_M47258_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M47258_IG03 - ;; size=30 bbWeight=0 PerfScore 0.00
+ movs r0, 2 + smull r9, r1, r7, r0 + cmp r1, r9 ASR 31 + bne SHORT G_M47258_IG10 + cmp r9, 0 + bge SHORT G_M47258_IG03 + ;; size=46 bbWeight=0 PerfScore 0.00
G_M47258_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, 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> + cmp r8, 0 + bne SHORT G_M47258_IG04 + ;; size=62 bbWeight=0 PerfScore 0.00 +G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
cmp r5, r7 ble SHORT G_M47258_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M47258_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
+G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0050 {r4 r6}, byref, isz
mov r5, r7
- mov r9, 1
+ mov r10, 1
b SHORT G_M47258_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4 r6] movw r0, 0xd1ff movt r0, 0xd1ff @@ -239,24 +248,24 @@ G_M47258_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ldr r4, [sp+0x40] // [V02 arg2] - ; byrRegs +[r4] - str r10, [r4] - cmp r5, r10
+ ldr r6, [sp+0x40] // [V02 arg2] + ; byrRegs +[r6] + str r4, [r6] + cmp r5, r4
beq SHORT G_M47258_IG08
- ;; size=38 bbWeight=0 PerfScore 0.00 -G_M47258_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r4]
+ ;; size=36 bbWeight=0 PerfScore 0.00 +G_M47258_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r6]
movs r0, 3 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M47258_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M47258_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 16 bx lr ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 322, prolog size 18, PerfScore 74.00, instruction count 114, allocated bytes for code 322 (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 340, prolog size 18, PerfScore 58.00, instruction count 121, allocated bytes for code 340 (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)
; ============================================================ Unwind Info: @@ -268,7 +277,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
+ Function Length : 170 (0x000aa) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.59%) : 100544.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 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V01 loc0 [V01,T03] ( 5, 5 ) int -> r5
+; V00 this [V00,T00] ( 10, 5 ) 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 -> r3 "fgMakeTemp is creating a new local variable" +; V11 tmp8 [V11,T02] ( 5, 5.50) ref -> r2 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,11 +36,11 @@ G_M4380_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r6, [r4+0x40] ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M4380_IG14
+ beq SHORT G_M4380_IG12
ldrb r0, [r6+0x0C] and r0, r0, 2 cmp r0, 2
- bne SHORT G_M4380_IG14
+ bne SHORT G_M4380_IG12
;; size=18 bbWeight=1 PerfScore 8.00 G_M4380_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r6+0x04] @@ -48,7 +48,7 @@ G_M4380_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, by mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M4380_IG07
+ beq SHORT G_M4380_IG06
;; size=8 bbWeight=1 PerfScore 4.00 G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] @@ -56,9 +56,9 @@ G_M4380_IG04: ; bbWeight=0.50, gcrefRegs=001A {r1 r3 r4}, byrefRegs=0000 movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M4380_IG06
+ beq SHORT G_M4380_IG13
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+G_M4380_IG05: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] mov r0, r2 movw r3, 0xd1ff @@ -67,60 +67,53 @@ G_M4380_IG05: ; 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_IG06: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r5, [r3+0x40] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r3]
+ b SHORT G_M4380_IG13 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0 r3]
ldr r0, [r4+0x44] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M4380_IG15
+ beq SHORT G_M4380_IG14
;; size=6 bbWeight=1 PerfScore 3.00
-G_M4380_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [r4+0x44] ; gcrRegs +[r0] ldr r1, [r0+0x04] ; gcrRegs +[r1]
- mov r3, r1 - ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M4380_IG12
+ mov r2, r1 + ; gcrRegs +[r2] + cmp r2, 0 + beq SHORT G_M4380_IG10
;; size=10 bbWeight=1 PerfScore 5.00
-G_M4380_IG09: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref, isz
+G_M4380_IG08: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r4]
- ldr r0, [r3] - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r0, r2 - beq SHORT G_M4380_IG11
+ ldr r0, [r2] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + beq SHORT G_M4380_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M4380_IG10: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3] - mov r0, r2
+G_M4380_IG09: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r2] + mov r0, r3
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_M4380_IG11: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref - ; gcrRegs -[r0] - ldr r0, [r3+0x40] - orrs r5, r0 - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M4380_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3]
+ mov r2, r0 + ; gcrRegs +[r2] + b SHORT G_M4380_IG15 + ;; size=16 bbWeight=0.25 PerfScore 1.50 +G_M4380_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r2]
mov r0, r5 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M4380_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M4380_IG11: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4380_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M4380_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] mov r0, r4 ; gcrRegs +[r0] @@ -133,8 +126,16 @@ G_M4380_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre ; gcrRegs +[r6] b SHORT G_M4380_IG03 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M4380_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r6]
+G_M4380_IG13: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6] +[r3] + ldr r5, [r3+0x40] + ldr r1, [r4+0x44] + ; gcrRegs +[r1] + cmp r1, 0 + bne SHORT G_M4380_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M4380_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r1 r3]
add r1, r4, 68 ; byrRegs +[r1] mov r0, r4 @@ -145,10 +146,16 @@ G_M4380_IG15: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref blx r3 // <unknown method> ; gcrRegs -[r0] ; byrRegs -[r1]
- b SHORT G_M4380_IG08
+ b SHORT G_M4380_IG07
;; size=20 bbWeight=0 PerfScore 0.00
+G_M4380_IG15: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r4] +[r2] + ldr r3, [r2+0x40] + orrs r5, r3 + b SHORT G_M4380_IG10 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 8, PerfScore 35.50, 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 170, prolog size 8, PerfScore 33.00, instruction count 68, allocated bytes for code 170 (MethodHash=64b3eee3) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
; ============================================================ Unwind Info: @@ -160,7 +167,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
+ Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
---- 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

-22 (-30.56%) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -8,77 +8,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M40448_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r0] - ldr r5, [r0] - cmp r1, r3 - beq SHORT G_M40448_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M40448_IG09
+ ; byrRegs +[r0] + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08 + ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 72, prolog size 8, PerfScore 14.50, instruction count 28, allocated bytes for code 72 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +86,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-22 (-30.56%) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,80 +8,64 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref "field V04.m_keepalive (fldOffset=0x0)" P-INDEP
-; V06 tmp4 [V06,T05] ( 2, 1 ) int -> r0 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T04] ( 3, 1 ) int -> r1 "CSE - moderate" -; V08 cse1 [V08,T03] ( 4, 1.25) int -> r0 "CSE - moderate"
+; V06 tmp4 [V06,T03] ( 2, 1 ) int -> r3 "field V04.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M38955_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r1, r0
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M38955_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4] - ; byrRegs -[r5]
+ ; gcrRegs -[r1] + ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r5] - cmp r1, r0 - beq SHORT G_M38955_IG08 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref - mov r1, r4
+G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=12 bbWeight=0.25 PerfScore 1.00 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4+0x08] - ldr r3, [r5+0x04] - cmp r0, r3 - beq SHORT G_M38955_IG09
+ ; byrRegs +[r0] + ldr r3, [r1+0x08] + ldr r0, [r0+0x04] + ; byrRegs -[r0] + cmp r3, r0 + beq SHORT G_M38955_IG07
movs r0, 0
- b SHORT G_M38955_IG10
+ b SHORT G_M38955_IG08
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M38955_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5]
+G_M38955_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38955_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 72, prolog size 8, PerfScore 15.25, instruction count 28, allocated bytes for code 72 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -93,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,7 +89,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-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

+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] ...

+10 (+2.84%) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)

@@ -16,7 +16,7 @@ ; V05 loc1 [V05,T21] ( 3, 1.50) int -> r10 ;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r7
+; V08 tmp1 [V08,T07] ( 5, 2.50) byref -> r9
; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0 ;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V11 tmp4 [V11,T05] ( 3, 3 ) int -> r0 "Span.get_Item index" @@ -103,22 +103,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} ldr r8, [sp+0x34] cmp r8, 0 bne SHORT G_M17254_IG07
- add r7, sp, 40 - ; byrRegs +[r7]
+ addw r9, sp, 40 + ; byrRegs +[r9]
b SHORT G_M17254_IG06
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7] - add r7, sp, 48 - ; byrRegs +[r7] - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz - ldr r2, [r7+0x04]
+ ; byrRegs -[r9] + addw r9, sp, 48 + ; byrRegs +[r9] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0230 {r4 r5 r9}, byref, isz + ldr r2, [r9+0x04]
cmp r6, r2 blt SHORT G_M17254_IG17 cmp r2, r6 bhi G_M17254_IG26
- ldr r1, [r7]
+ ldr r1, [r9]
; byrRegs +[r1] lsls r2, r2, 1 mov r0, r5 @@ -128,12 +128,12 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r9+0x04]
str r0, [r4] b SHORT G_M17254_IG22
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r9] +[r5]
ldr r1, [sp+0x28] ; byrRegs +[r1] mov r0, r1 @@ -291,7 +291,7 @@ G_M17254_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 352 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
+; Total bytes of code 362, prolog size 10, PerfScore 69.00, instruction count 140, allocated bytes for code 362 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -303,7 +303,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 176 (0x000b0) Actual length = 352 (0x000160)
+ Function Length : 181 (0x000b5) Actual length = 362 (0x00016a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+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

-26 (-34.21%) : 127085.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M40448_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M40448_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldr r5, [r0] - cmp r1, r3 - bne SHORT G_M40448_IG08 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M40448_IG06
movs r0, 0
- b SHORT G_M40448_IG07 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M40448_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M40448_IG07 + movs r0, 0 + b SHORT G_M40448_IG08 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40448_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M40448_IG05 - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M40448_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M40448_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 76, prolog size 8, PerfScore 22.50, instruction count 30, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -91,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-26 (-34.21%) : 23616.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,77 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M40448_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M40448_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldr r5, [r0] - cmp r1, r3 - bne SHORT G_M40448_IG08 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M40448_IG06
movs r0, 0
- b SHORT G_M40448_IG07 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M40448_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M40448_IG07 + movs r0, 0 + b SHORT G_M40448_IG08 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M40448_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40448_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M40448_IG05 - ;; size=18 bbWeight=0.50 PerfScore 3.50 -G_M40448_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M40448_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 76, prolog size 8, PerfScore 22.50, instruction count 30, allocated bytes for code 76 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -91,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 122945.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Byte> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Byte> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG - push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
+G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1]
; byrRegs +[r0]
- mov r1, r4 - ; gcrRegs +[r1] - cmp r1, 0 - beq SHORT G_M19224_IG09
+ mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + beq SHORT G_M19224_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M19224_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M19224_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldrb r5, [r0] - cmp r1, r3 - beq SHORT G_M19224_IG06 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M19224_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff
+G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz
ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
+ ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + beq SHORT G_M19224_IG06 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M19224_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
- ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M19224_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldrb r0, [r4+0x04] - cmp r5, r0
+ ; byrRegs -[r0] + movs r0, 0 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19224_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M19224_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + ldrb r0, [r0] + ; byrRegs -[r0] + ldrb r3, [r1+0x04] + cmp r0, r3
beq SHORT G_M19224_IG07 movs r0, 0 b SHORT G_M19224_IG08
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 G_M19224_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M19224_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movs r0, 0 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M19224_IG10: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 74, prolog size 8, PerfScore 21.50, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -88,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -100,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+16 (+3.15%) : 134945.dasm - Program:Compare_UInt32(uint,uint) (Tier1)

@@ -11,7 +11,7 @@ ; V01 arg1 [V01,T04] ( 6, 4.50) int -> r5 single-def ; V02 loc0 [V02 ] ( 22, 16.00) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 4, 4.95) int -> r6 "impAppendStmt"
+; V04 tmp1 [V04,T09] ( 4, 3 ) int -> r6 "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" ; V07 tmp4 [V07,T19] ( 4, 1.50) int -> r7 "Inline return value spill temp" @@ -40,8 +40,8 @@ ;* V30 tmp27 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V31 tmp28 [V31,T02] ( 4, 8.00) int -> r0 "Inlining Arg" ;* V32 tmp29 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V33 tmp30 [V33,T07] ( 3, 6.00) int -> r4 "Inlining Arg" -; V34 tmp31 [V34,T15] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+; V33 tmp30 [V33,T07] ( 3, 6.00) int -> r8 "Inlining Arg" +; V34 tmp31 [V34,T15] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
;* V35 tmp32 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V37 tmp34 [V37,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -66,7 +66,7 @@ ;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref single-def "field V32._length (fldOffset=0x4)" P-INDEP ;* V57 tmp54 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP ;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0x4)" P-INDEP
-; V59 tmp56 [V59,T09] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
+; V59 tmp56 [V59,T08] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
; V60 cse0 [V60,T10] ( 3, 3.00) int -> r1 "CSE - moderate" ; V61 cse1 [V61,T11] ( 3, 3.00) int -> r1 "CSE - moderate" ; V62 cse2 [V62,T12] ( 3, 3.00) int -> r1 "CSE - moderate" @@ -92,27 +92,26 @@ G_M61478_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=1.00 PerfScore 2.00 G_M61478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov r6, -1
- b SHORT G_M61478_IG27
+ b SHORT G_M61478_IG13
;; size=6 bbWeight=0.25 PerfScore 0.50 G_M61478_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp r4, r5
- bls SHORT G_M61478_IG06
+ bls SHORT G_M61478_IG08
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M61478_IG05: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG05: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r6, 1
- b SHORT G_M61478_IG07 - ;; size=4 bbWeight=0.23 PerfScore 0.46 -G_M61478_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movs r6, 0 - ;; size=2 bbWeight=1.00 PerfScore 1.00 -G_M61478_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.23 PerfScore 0.23 +G_M61478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r4, r5 bls SHORT G_M61478_IG09 ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M61478_IG08: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movs r7, 1 - b SHORT G_M61478_IG10 - ;; size=4 bbWeight=0.23 PerfScore 0.46
+G_M61478_IG07: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M61478_IG17 + ;; size=2 bbWeight=0.23 PerfScore 0.23 +G_M61478_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + movs r6, 0 + b SHORT G_M61478_IG06 + ;; size=4 bbWeight=0.02 PerfScore 0.05
G_M61478_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r7, 0 ;; size=2 bbWeight=0.02 PerfScore 0.02 @@ -127,7 +126,7 @@ G_M61478_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r0, [sp+0x08] ldr r1, [sp+0x14] cmp r0, r1
- bhi G_M61478_IG31
+ bhi G_M61478_IG34
;; size=28 bbWeight=1.00 PerfScore 11.00 G_M61478_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r3, [sp+0x10] @@ -137,10 +136,19 @@ G_M61478_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[r8] sub r9, r1, r0 cmp r9, 0
- bge SHORT G_M61478_IG13
+ bge SHORT G_M61478_IG15
;; size=18 bbWeight=1.00 PerfScore 6.00
-G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[r3]
+ b SHORT G_M61478_IG14 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M61478_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r8] + mov r7, -1 + b SHORT G_M61478_IG10 + ;; size=6 bbWeight=0.25 PerfScore 0.50 +G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref + ; byrRegs +[r8]
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -150,11 +158,46 @@ G_M61478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, b ldr r3, [r3] blx r3 // <unknown method> ;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
+G_M61478_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz
cmp r9, 0
- beq G_M61478_IG28
+ beq G_M61478_IG32
;; size=8 bbWeight=1.00 PerfScore 2.00
-G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+G_M61478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz + b SHORT G_M61478_IG21 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M61478_IG17: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r8] + movs r7, 1 + b SHORT G_M61478_IG10 + ;; size=4 bbWeight=0.23 PerfScore 0.46 +G_M61478_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add r0, sp, 0 + mov r1, r4 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ldr r0, [sp+0x08] + ldr r1, [sp+0x14] + cmp r0, r1 + bhi G_M61478_IG34 + ;; size=26 bbWeight=1.00 PerfScore 10.00 +G_M61478_IG19: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x10] + ; byrRegs +[r2] + lsls r3, r0, 1 + adds r4, r2, r3 + ; byrRegs +[r4] + sub r8, r1, r0 + cmp r8, 0 + bge SHORT G_M61478_IG23 + ;; size=16 bbWeight=1.00 PerfScore 6.00 +G_M61478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz + ; byrRegs -[r2] + b SHORT G_M61478_IG22 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M61478_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref, isz + ; byrRegs -[r4] +[r8]
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r8 @@ -168,31 +211,10 @@ G_M61478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, b ldr r0, [sp+0x08] adds r0, r0, 1 str r0, [sp+0x08]
- ;; size=30 bbWeight=0.50 PerfScore 5.50 -G_M61478_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add r0, sp, 0 - mov r1, r4 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ldr r0, [sp+0x08] - ldr r1, [sp+0x14] - cmp r0, r1 - bhi G_M61478_IG31 - ;; size=26 bbWeight=1.00 PerfScore 10.00 -G_M61478_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x10] - ; byrRegs +[r3] - lsls r2, r0, 1 - adds r4, r3, r2
+ b SHORT G_M61478_IG18 + ;; size=32 bbWeight=0.50 PerfScore 6.00 +G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4]
- sub r8, r1, r0 - cmp r8, 0 - bge SHORT G_M61478_IG18 - ;; size=16 bbWeight=1.00 PerfScore 6.00 -G_M61478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs -[r3]
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -202,11 +224,11 @@ G_M61478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b ldr r3, [r3] blx r3 // <unknown method> ;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M61478_IG23: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
cmp r8, 2
- blo SHORT G_M61478_IG29
+ blo SHORT G_M61478_IG33
;; size=6 bbWeight=1.00 PerfScore 2.00
-G_M61478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M61478_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r4 @@ -221,7 +243,7 @@ G_M61478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b adds r0, r0, 2 str r0, [sp+0x08] ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M61478_IG20: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG25: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add r0, sp, 0 mov r1, r5 movw r3, 0xd1ff @@ -231,19 +253,19 @@ G_M61478_IG20: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r0, [sp+0x08] ldr r1, [sp+0x14] cmp r0, r1
- bhi SHORT G_M61478_IG31
+ bhi SHORT G_M61478_IG34
;; size=24 bbWeight=1.00 PerfScore 10.00
-G_M61478_IG21: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M61478_IG26: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x10] ; byrRegs +[r3] lsls r2, r0, 1
- adds r5, r3, r2 - ; byrRegs +[r5] - subs r4, r1, r0 - cmp r4, 0 - bge SHORT G_M61478_IG23 - ;; size=12 bbWeight=1.00 PerfScore 6.00 -G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+ adds r4, r3, r2 + ; byrRegs +[r4] + sub r8, r1, r0 + cmp r8, 0 + bge SHORT G_M61478_IG28 + ;; size=16 bbWeight=1.00 PerfScore 6.00 +G_M61478_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r3] movw r0, 0xd1ff movt r0, 0xd1ff @@ -254,26 +276,26 @@ G_M61478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b ldr r3, [r3] blx r3 // <unknown method> ;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M61478_IG23: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz - cmp r4, 3 - blo SHORT G_M61478_IG30 - ;; size=4 bbWeight=1.00 PerfScore 2.00 -G_M61478_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+G_M61478_IG28: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz + cmp r8, 3 + blo SHORT G_M61478_IG35
...

+40 (+3.36%) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T14] ( 4, 4.00) ref -> r7 this class-hnd single-def <ILCompiler.Compilation> ; V01 arg1 [V01,T04] ( 17, 10.40) ref -> r6 class-hnd single-def <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T03] ( 30, 17.19) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
+; V02 arg2 [V02,T03] ( 30, 16.52) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T30] ( 2, 2 ) int -> r0 "guarded devirt return temp" @@ -20,7 +20,7 @@ ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ; V09 tmp5 [V09,T36] ( 2, 2.00) int -> r0 "guarded devirt return temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V11 tmp7 [V11,T50] ( 3, 0.75) ref -> r0 "guarded devirt return temp"
+; V11 tmp7 [V11,T54] ( 3, 0.08) ref -> r0 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V13 tmp9 [V13,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.JitInterface.JitConfigProvider> @@ -30,94 +30,94 @@ ; V18 tmp14 [V18,T42] ( 3, 1.52) int -> r3 "Inline return value spill temp" ; V19 tmp15 [V19,T28] ( 3, 2.28) int -> r3 single-def "Inline stloc first use temp" ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp17 [V21,T41] ( 3, 1.58) int -> r9 "Inline return value spill temp" -; V22 tmp18 [V22,T27] ( 3, 2.37) int -> r9 single-def "Inline stloc first use temp"
+; V21 tmp17 [V21,T41] ( 3, 1.58) int -> r3 "Inline return value spill temp" +; V22 tmp18 [V22,T27] ( 3, 2.37) int -> r3 single-def "Inline stloc first use temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T43] ( 3, 1.40) int -> r3 "Inline return value spill temp" -; V25 tmp21 [V25,T29] ( 3, 2.10) int -> r3 single-def "Inline stloc first use temp"
+; V24 tmp20 [V24,T43] ( 3, 1.40) int -> r2 "Inline return value spill temp" +; V25 tmp21 [V25,T29] ( 3, 2.10) int -> r2 single-def "Inline stloc first use temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory> ; V28 tmp24 [V28,T20] ( 3, 4.00) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>> ;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref single-def ;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory> ; V31 tmp27 [V31,T05] ( 11, 12.00) ref -> r7 class-hnd single-def "Inlining Arg" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V32 tmp28 [V32,T33] ( 4, 2.00) int -> r8
+; V32 tmp28 [V32,T33] ( 4, 2.00) int -> r3
; V33 tmp29 [V33,T24] ( 4, 3.00) ubyte -> r4 "Inline stloc first use temp" ;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp31 [V35,T12] ( 6, 6.66) ref -> [sp+0x3C] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V35 tmp31 [V35,T12] ( 6, 6.66) ref -> [sp+0x30] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
; V36 tmp32 [V36,T10] ( 5, 8.63) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp33 [V37,T17] ( 5, 4.32) ref -> [sp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V37 tmp33 [V37,T17] ( 5, 4.32) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V38 tmp34 [V38,T46] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp35 [V39,T06] ( 4, 11.00) int -> [sp+0x4C] spill-single-def "Inline stloc first use temp" -; V40 tmp36 [V40 ] ( 4, 3.32) ubyte -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V39 tmp35 [V39,T06] ( 4, 11.00) int -> [sp+0x44] spill-single-def "Inline stloc first use temp" +; V40 tmp36 [V40 ] ( 4, 3.32) ubyte -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V42 tmp38 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V43 tmp39 [V43,T51] ( 3, 0.63) int -> r0 "guarded devirt return temp"
+; V43 tmp39 [V43,T50] ( 3, 0.63) int -> r0 "guarded devirt return temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase> ; V45 tmp41 [V45,T34] ( 3, 2.00) int -> registers "Inline return value spill temp" ;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc> ;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V49 tmp45 [V49,T53] ( 3, 0.51) int -> r0 "guarded devirt return temp"
+; V49 tmp45 [V49,T52] ( 3, 0.51) int -> r0 "guarded devirt return temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V51 tmp47 [V51,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp48 [V52,T15] ( 2, 5.00) ref -> [sp+0x34] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V53 tmp49 [V53,T00] ( 8, 39.00) ref -> [sp+0x30] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp48 [V52,T15] ( 2, 5.00) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp49 [V53,T00] ( 8, 39.00) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V55 tmp51 [V55,T25] ( 3, 3.00) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V55 tmp51 [V55,T25] ( 3, 3.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V59 tmp55 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp56 [V60,T13] ( 6, 6.66) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>> -; V61 tmp57 [V61,T11] ( 5, 8.63) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> -; V62 tmp58 [V62,T18] ( 5, 4.32) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V60 tmp56 [V60,T13] ( 6, 6.66) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> +; V61 tmp57 [V61,T11] ( 5, 8.63) ref -> r8 class-hnd single-def "Inlining Arg" <<unknown class>> +; V62 tmp58 [V62,T18] ( 5, 4.32) ref -> r6 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V63 tmp59 [V63,T47] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V64 tmp60 [V64,T07] ( 4, 11.00) int -> r8 single-def "Inline stloc first use temp" -; V65 tmp61 [V65 ] ( 4, 3.32) ubyte -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V64 tmp60 [V64,T07] ( 4, 11.00) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp" +; V65 tmp61 [V65 ] ( 4, 3.32) ubyte -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V67 tmp63 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V68 tmp64 [V68,T52] ( 3, 0.63) int -> r0 "guarded devirt return temp"
+; V68 tmp64 [V68,T51] ( 3, 0.63) int -> r0 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V70 tmp66 [V70,T35] ( 3, 2.00) int -> r8 "Inline return value spill temp"
+; V70 tmp66 [V70,T35] ( 3, 2.00) int -> registers "Inline return value spill temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc> ;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V74 tmp70 [V74,T54] ( 3, 0.51) int -> r0 "guarded devirt return temp"
+; V74 tmp70 [V74,T53] ( 3, 0.51) int -> r0 "guarded devirt return temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V76 tmp72 [V76,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V77 tmp73 [V77,T16] ( 2, 5.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V78 tmp74 [V78,T01] ( 8, 39.00) ref -> [sp+0x20] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp73 [V77,T16] ( 2, 5.00) ref -> [sp+0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V78 tmp74 [V78,T01] ( 8, 39.00) ref -> [sp+0x1C] class-hnd "Inline stloc first use temp" <<unknown class>>
;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V80 tmp76 [V80,T26] ( 3, 3.00) ref -> [sp+0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V80 tmp76 [V80,T26] ( 3, 3.00) ref -> [sp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V81 tmp77 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r4 "Single return block return value" ;* V85 tmp81 [V85,T48] ( 0, 0 ) ubyte -> zero-ref single-def "field V41.hasValue (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T44] ( 2, 1.32) int -> [sp+0x40] spill-single-def "field V41.value (fldOffset=0x4)" P-INDEP
+; V86 tmp82 [V86,T44] ( 2, 1.32) int -> r8 single-def "field V41.value (fldOffset=0x4)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V42.value (fldOffset=0x4)" P-INDEP ;* V89 tmp85 [V89,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V66.hasValue (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T45] ( 2, 1.32) int -> r8 single-def "field V66.value (fldOffset=0x4)" P-INDEP
+; V90 tmp86 [V90,T45] ( 2, 1.32) int -> r4 single-def "field V66.value (fldOffset=0x4)" P-INDEP
;* V91 tmp87 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V67.hasValue (fldOffset=0x0)" P-INDEP ;* V92 tmp88 [V92 ] ( 0, 0 ) int -> zero-ref single-def "field V67.value (fldOffset=0x4)" P-INDEP ; V93 cse0 [V93,T39] ( 2, 2.00) int -> r0 "CSE - moderate" ; V94 cse1 [V94,T40] ( 2, 2.00) int -> r0 "CSE - moderate"
-; V95 cse2 [V95,T23] ( 3, 3 ) int -> r4 "CSE - moderate"
+; V95 cse2 [V95,T23] ( 3, 3 ) int -> r9 "CSE - moderate"
; V96 cse3 [V96,T09] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive" ; V97 cse4 [V97,T08] ( 3, 10 ) int -> r2 "CSE - aggressive"
-; V98 cse5 [V98,T19] ( 7, 4.26) int -> r8 "CSE - moderate"
+; V98 cse5 [V98,T19] ( 7, 4.26) int -> [sp+0x34] "CSE - moderate"
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M18032_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 84 - add r11, sp, 112
+ sub sp, 76 + add r11, sp, 104
movs r3, 0
- str r3, [sp+0x48] // [V40 tmp36] - str r3, [sp+0x44] // [V65 tmp61]
+ str r3, [sp+0x40] // [V40 tmp36] + str r3, [sp+0x38] // [V65 tmp61]
mov r7, r0 ; gcrRegs +[r7] mov r6, r1 @@ -162,7 +162,7 @@ G_M18032_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0001 {r lsls r1, r3, 2 ldr r1, [r0+r1] cmp r1, 2
- beq G_M18032_IG29
+ beq G_M18032_IG49
adds r3, r3, 1 cmp r2, r3 bgt SHORT G_M18032_IG05 @@ -180,42 +180,68 @@ G_M18032_IG07: ; bbWeight=0.76, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 dmb 15 and r3, r0, 33 cmp r3, 0
- beq G_M18032_IG59
+ beq G_M18032_IG65
;; size=16 bbWeight=0.76 PerfScore 3.80 G_M18032_IG08: ; bbWeight=0.76, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ands r0, r3, 32 cmp r0, 0
- bne G_M18032_IG29
+ bne G_M18032_IG49
;; size=10 bbWeight=0.76 PerfScore 2.28 G_M18032_IG09: ; bbWeight=0.79, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x1C] dmb 15
- movw r3, 0xd1ff - and r9, r0, r3 - cmp r9, 0 - beq G_M18032_IG60 - b SHORT G_M18032_IG25 - ;; size=24 bbWeight=0.79 PerfScore 5.53
+ movw r1, 0xd1ff + and r3, r0, r1 + cmp r3, 0 + beq G_M18032_IG66 + b SHORT G_M18032_IG11 + ;; size=22 bbWeight=0.79 PerfScore 5.53
G_M18032_IG10: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz mov r0, r5 ; gcrRegs +[r0]
- ldr r4, [r8+0x30] - ldr r3, [r4]
+ ldr r9, [r8+0x30] + ldr r3, [r9]
blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG29
+ bne G_M18032_IG49 + b SHORT G_M18032_IG13 + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M18032_IG11: ; bbWeight=0.79, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ands r0, r3, 0x1000 + cmp r0, 0 + str r8, [sp+0x34] + bne G_M18032_IG49 + ;; size=14 bbWeight=0.79 PerfScore 3.16 +G_M18032_IG12: ; bbWeight=0.70, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5+0x1C] + dmb 15 + and r2, r0, 3 + cmp r2, 0 + beq G_M18032_IG67 + b SHORT G_M18032_IG15 + ;; size=18 bbWeight=0.70 PerfScore 4.20 +G_M18032_IG13: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r4+0x0C]
+ ldr r3, [r9+0x0C]
blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG29 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M18032_IG49 + ;; size=14 bbWeight=1 PerfScore 5.00 +G_M18032_IG14: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M18032_IG16 + ;; size=2 bbWeight=1.00 PerfScore 1.00 +G_M18032_IG15: ; bbWeight=0.70, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ands r0, r2, 2 + cmp r0, 0 + beq SHORT G_M18032_IG20 + b SHORT G_M18032_IG18 + ;; size=10 bbWeight=0.70 PerfScore 2.80 +G_M18032_IG16: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0] ldr r3, [r8+0x38] @@ -224,179 +250,17 @@ G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG39 - ;; size=16 bbWeight=1.00 PerfScore 6.00 -G_M18032_IG12: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ldr r0, [r7+0x08] - ; gcrRegs +[r0] - ldr r0, [r0+0x9C]
...

+46 (+3.89%) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T14] ( 4, 4.00) ref -> r7 this class-hnd single-def <ILCompiler.Compilation> ; V01 arg1 [V01,T04] ( 17, 10.40) ref -> r6 class-hnd single-def <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T03] ( 30, 17.66) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
+; V02 arg2 [V02,T03] ( 30, 16.89) ref -> r5 class-hnd single-def <Internal.TypeSystem.MethodDesc>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T34] ( 2, 2 ) int -> r0 "guarded devirt return temp" @@ -20,7 +20,7 @@ ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ; V09 tmp5 [V09,T38] ( 2, 2.00) int -> r0 "guarded devirt return temp" ;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V11 tmp7 [V11,T50] ( 3, 0.86) ref -> r0 "guarded devirt return temp"
+; V11 tmp7 [V11,T54] ( 3, 0.08) ref -> r0 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V13 tmp9 [V13,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.JitInterface.JitConfigProvider> @@ -30,11 +30,11 @@ ; V18 tmp14 [V18,T42] ( 3, 1.68) int -> r3 "Inline return value spill temp" ; V19 tmp15 [V19,T28] ( 3, 2.52) int -> r3 single-def "Inline stloc first use temp" ;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V21 tmp17 [V21,T41] ( 3, 1.80) int -> r9 "Inline return value spill temp" -; V22 tmp18 [V22,T27] ( 3, 2.70) int -> r9 single-def "Inline stloc first use temp"
+; V21 tmp17 [V21,T41] ( 3, 1.80) int -> r3 "Inline return value spill temp" +; V22 tmp18 [V22,T27] ( 3, 2.70) int -> r3 single-def "Inline stloc first use temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T43] ( 3, 1.62) int -> r3 "Inline return value spill temp" -; V25 tmp21 [V25,T29] ( 3, 2.43) int -> r3 single-def "Inline stloc first use temp"
+; V24 tmp20 [V24,T43] ( 3, 1.62) int -> r2 "Inline return value spill temp" +; V25 tmp21 [V25,T29] ( 3, 2.43) int -> r2 single-def "Inline stloc first use temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory> ; V28 tmp24 [V28,T20] ( 3, 4.00) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>> @@ -42,82 +42,82 @@ ;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <ILCompiler.DependencyAnalysis.NodeFactory> ; V31 tmp27 [V31,T05] ( 11, 12.03) ref -> r7 class-hnd single-def "Inlining Arg" <ILCompiler.ReadyToRunCompilationModuleGroupBase> ; V32 tmp28 [V32,T30] ( 4, 2.01) int -> r3
-; V33 tmp29 [V33,T23] ( 4, 3.01) ubyte -> r6 "Inline stloc first use temp"
+; V33 tmp29 [V33,T23] ( 4, 3.01) ubyte -> r4 "Inline stloc first use temp"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp31 [V35,T13] ( 6, 6.78) ref -> [sp+0x3C] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V35 tmp31 [V35,T13] ( 6, 6.78) ref -> [sp+0x30] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
; V36 tmp32 [V36,T11] ( 5, 8.69) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp33 [V37,T18] ( 5, 4.34) ref -> [sp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V37 tmp33 [V37,T18] ( 5, 4.34) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V38 tmp34 [V38,T48] ( 2, 1.00) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp35 [V39,T07] ( 4, 10.99) int -> [sp+0x4C] spill-single-def "Inline stloc first use temp" -; V40 tmp36 [V40 ] ( 4, 3.35) ubyte -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V39 tmp35 [V39,T07] ( 4, 10.99) int -> [sp+0x44] spill-single-def "Inline stloc first use temp" +; V40 tmp36 [V40 ] ( 4, 3.35) ubyte -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V42 tmp38 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V43 tmp39 [V43,T52] ( 3, 0.70) int -> r0 "guarded devirt return temp"
+; V43 tmp39 [V43,T51] ( 3, 0.70) int -> r0 "guarded devirt return temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase> ; V45 tmp41 [V45,T37] ( 3, 2.00) int -> registers "Inline return value spill temp" ;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc> ;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V49 tmp45 [V49,T54] ( 3, 0.47) int -> r0 "guarded devirt return temp"
+; V49 tmp45 [V49,T53] ( 3, 0.47) int -> r0 "guarded devirt return temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V51 tmp47 [V51,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp48 [V52,T16] ( 2, 5.00) ref -> [sp+0x34] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V53 tmp49 [V53,T01] ( 8, 38.97) ref -> [sp+0x30] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp48 [V52,T16] ( 2, 5.00) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp49 [V53,T01] ( 8, 38.97) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V55 tmp51 [V55,T26] ( 3, 3.00) ref -> [sp+0x2C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V55 tmp51 [V55,T26] ( 3, 3.00) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V59 tmp55 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp56 [V60,T12] ( 6, 6.83) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>> -; V61 tmp57 [V61,T10] ( 5, 8.76) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> -; V62 tmp58 [V62,T17] ( 5, 4.38) ref -> [sp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V60 tmp56 [V60,T12] ( 6, 6.83) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> +; V61 tmp57 [V61,T10] ( 5, 8.76) ref -> r8 class-hnd single-def "Inlining Arg" <<unknown class>> +; V62 tmp58 [V62,T17] ( 5, 4.38) ref -> r6 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V63 tmp59 [V63,T46] ( 2, 1.01) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V64 tmp60 [V64,T06] ( 4, 11.08) int -> r8 single-def "Inline stloc first use temp" -; V65 tmp61 [V65 ] ( 4, 3.37) ubyte -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V64 tmp60 [V64,T06] ( 4, 11.08) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp" +; V65 tmp61 [V65 ] ( 4, 3.37) ubyte -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V67 tmp63 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V68 tmp64 [V68,T51] ( 3, 0.70) int -> r0 "guarded devirt return temp"
+; V68 tmp64 [V68,T50] ( 3, 0.70) int -> r0 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <ILCompiler.ReadyToRunCompilationModuleGroupBase>
-; V70 tmp66 [V70,T31] ( 3, 2.01) int -> r8 "Inline return value spill temp"
+; V70 tmp66 [V70,T31] ( 3, 2.01) int -> registers "Inline return value spill temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc> ;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Internal.TypeSystem.MethodDesc>
-; V74 tmp70 [V74,T53] ( 3, 0.47) int -> r0 "guarded devirt return temp"
+; V74 tmp70 [V74,T52] ( 3, 0.47) int -> r0 "guarded devirt return temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod> ;* V76 tmp72 [V76,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V77 tmp73 [V77,T15] ( 2, 5.03) ref -> [sp+0x24] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V78 tmp74 [V78,T00] ( 8, 39.27) ref -> [sp+0x20] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp73 [V77,T15] ( 2, 5.03) ref -> [sp+0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V78 tmp74 [V78,T00] ( 8, 39.27) ref -> [sp+0x1C] class-hnd "Inline stloc first use temp" <<unknown class>>
;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V80 tmp76 [V80,T22] ( 3, 3.02) ref -> [sp+0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V80 tmp76 [V80,T22] ( 3, 3.02) ref -> [sp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V81 tmp77 [V81 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r6 "Single return block return value"
+; V84 tmp80 [V84,T21] ( 2, 4.00) int -> r4 "Single return block return value"
;* V85 tmp81 [V85,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V41.hasValue (fldOffset=0x0)" P-INDEP
-; V86 tmp82 [V86,T45] ( 2, 1.35) int -> [sp+0x40] spill-single-def "field V41.value (fldOffset=0x4)" P-INDEP
+; V86 tmp82 [V86,T45] ( 2, 1.35) int -> r8 single-def "field V41.value (fldOffset=0x4)" P-INDEP
;* V87 tmp83 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V42.value (fldOffset=0x4)" P-INDEP ;* V89 tmp85 [V89,T47] ( 0, 0 ) ubyte -> zero-ref single-def "field V66.hasValue (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T44] ( 2, 1.36) int -> r8 single-def "field V66.value (fldOffset=0x4)" P-INDEP
+; V90 tmp86 [V90,T44] ( 2, 1.36) int -> r4 single-def "field V66.value (fldOffset=0x4)" P-INDEP
;* V91 tmp87 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V67.hasValue (fldOffset=0x0)" P-INDEP ;* V92 tmp88 [V92 ] ( 0, 0 ) int -> zero-ref single-def "field V67.value (fldOffset=0x4)" P-INDEP ; V93 cse0 [V93,T33] ( 2, 2.01) int -> r0 "CSE - moderate" ; V94 cse1 [V94,T40] ( 2, 2.00) int -> r0 "CSE - moderate"
-; V95 cse2 [V95,T25] ( 3, 3 ) int -> r4 "CSE - moderate"
+; V95 cse2 [V95,T25] ( 3, 3 ) int -> r9 "CSE - moderate"
; V96 cse3 [V96,T09] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive" ; V97 cse4 [V97,T08] ( 3, 10 ) int -> r2 "CSE - aggressive"
-; V98 cse5 [V98,T19] ( 7, 4.24) int -> r8 "CSE - moderate"
+; V98 cse5 [V98,T19] ( 7, 4.24) int -> [sp+0x34] "CSE - moderate"
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M18032_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 84 - add r11, sp, 112
+ sub sp, 76 + add r11, sp, 104
movs r3, 0
- str r3, [sp+0x48] // [V40 tmp36] - str r3, [sp+0x44] // [V65 tmp61]
+ str r3, [sp+0x40] // [V40 tmp36] + str r3, [sp+0x38] // [V65 tmp61]
mov r7, r0 ; gcrRegs +[r7] mov r6, r1 @@ -162,7 +162,7 @@ G_M18032_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0001 {r lsls r1, r3, 2 ldr r1, [r0+r1] cmp r1, 2
- beq G_M18032_IG27
+ beq G_M18032_IG48
adds r3, r3, 1 cmp r2, r3 bgt SHORT G_M18032_IG05 @@ -180,42 +180,68 @@ G_M18032_IG07: ; bbWeight=0.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 dmb 15 and r3, r0, 33 cmp r3, 0
- beq G_M18032_IG56
+ beq G_M18032_IG62
;; size=16 bbWeight=0.84 PerfScore 4.20 G_M18032_IG08: ; bbWeight=0.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ands r0, r3, 32 cmp r0, 0
- bne G_M18032_IG27
+ bne G_M18032_IG48
;; size=10 bbWeight=0.84 PerfScore 2.52 G_M18032_IG09: ; bbWeight=0.90, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x1C] dmb 15
- movw r3, 0xd1ff - and r9, r0, r3 - cmp r9, 0 - beq G_M18032_IG57 - b SHORT G_M18032_IG23 - ;; size=24 bbWeight=0.90 PerfScore 6.30
+ movw r1, 0xd1ff + and r3, r0, r1 + cmp r3, 0 + beq G_M18032_IG63 + b SHORT G_M18032_IG11 + ;; size=22 bbWeight=0.90 PerfScore 6.30
G_M18032_IG10: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz mov r0, r5 ; gcrRegs +[r0]
- ldr r4, [r8+0x30] - ldr r3, [r4]
+ ldr r9, [r8+0x30] + ldr r3, [r9]
blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG27
+ bne G_M18032_IG48 + b SHORT G_M18032_IG13 + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M18032_IG11: ; bbWeight=0.90, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ands r0, r3, 0x1000 + cmp r0, 0 + str r8, [sp+0x34] + bne G_M18032_IG48 + ;; size=14 bbWeight=0.90 PerfScore 3.60 +G_M18032_IG12: ; bbWeight=0.81, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ldr r0, [r5+0x1C] + dmb 15 + and r2, r0, 3 + cmp r2, 0 + beq G_M18032_IG64 + b SHORT G_M18032_IG15 + ;; size=18 bbWeight=0.81 PerfScore 4.86 +G_M18032_IG13: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0]
- ldr r3, [r4+0x0C]
+ ldr r3, [r9+0x0C]
blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG27 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M18032_IG48 + ;; size=14 bbWeight=1 PerfScore 5.00 +G_M18032_IG14: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M18032_IG16 + ;; size=2 bbWeight=1.00 PerfScore 1.00 +G_M18032_IG15: ; bbWeight=0.81, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ands r0, r2, 2 + cmp r0, 0 + beq SHORT G_M18032_IG20 + b SHORT G_M18032_IG18 + ;; size=10 bbWeight=0.81 PerfScore 3.24 +G_M18032_IG16: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5 ; gcrRegs +[r0] ldr r3, [r8+0x38] @@ -224,176 +250,17 @@ G_M18032_IG11: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18032_IG37 - ;; size=16 bbWeight=1.00 PerfScore 6.00 -G_M18032_IG12: ; bbWeight=1.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ldr r0, [r7+0x08] - ; gcrRegs +[r0]
...

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)

+12 (+2.14%) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)

@@ -9,33 +9,35 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 8, 26 ) ref -> r5 class-hnd single-def <System.ComponentModel.AttributeCollection> -; V01 arg1 [V01,T11] ( 8, 13.50) ref -> r6 class-hnd <System.Attribute[]> -; V02 loc0 [V02,T03] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]> -; V03 loc1 [V03,T14] ( 6, 7 ) int -> registers -; V04 loc2 [V04,T17] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]> -; V05 loc3 [V05,T08] ( 5, 17 ) int -> r9 -;* V06 loc4 [V06,T13] ( 0, 0 ) ubyte -> zero-ref -; V07 loc5 [V07,T00] ( 7, 88 ) int -> [sp+0x0C]
+; V00 arg0 [V00,T04] ( 8, 26 ) ref -> r5 class-hnd single-def <System.ComponentModel.AttributeCollection> +; V01 arg1 [V01,T10] ( 6, 8.50) ref -> r6 class-hnd <System.Attribute[]> +; V02 loc0 [V02,T03] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]> +; V03 loc1 [V03,T13] ( 6, 7 ) int -> [sp+0x1C] +; V04 loc2 [V04,T19] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]> +; V05 loc3 [V05,T08] ( 5, 17 ) int -> r10 +;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref +; V07 loc5 [V07,T00] ( 7, 86 ) int -> [sp+0x18]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V10 tmp2 [V10,T10] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> -; V11 tmp3 [V11,T09] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T11] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> +; V11 tmp3 [V11,T09] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T12] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> ; V13 tmp5 [V13,T15] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection>
-; V14 tmp6 [V14,T16] ( 2, 4 ) int -> r0 "argument with side effect" -; V15 tmp7 [V15,T01] ( 2, 64 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V14 tmp6 [V14,T18] ( 2, 4 ) int -> r0 "argument with side effect" +; V15 tmp7 [V15,T01] ( 2, 64 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V16 tmp8 [V16,T02] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V17 cse0 [V17,T04] ( 5, 30 ) byref -> r10 "CSE - aggressive" -; V18 cse1 [V18,T05] ( 5, 30 ) int -> [sp+0x08] spill-single-def "CSE - aggressive" -; V19 cse2 [V19,T07] ( 6, 24 ) int -> [sp+0x04] hoist multi-def "CSE - aggressive"
+; V17 cse0 [V17,T17] ( 2, 5 ) ref -> [sp+0x08] spill-single-def hoist "CSE - moderate" +; V18 cse1 [V18,T05] ( 5, 28 ) byref -> [sp+0x04] spill-single-def "CSE - aggressive" +; V19 cse2 [V19,T06] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive" +; V20 cse3 [V20,T07] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive" +; V21 cse4 [V21,T14] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 36
G_M10252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 36 + add r11, sp, 64
mov r5, r0 ; gcrRegs +[r5] mov r6, r1 @@ -86,25 +88,25 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // <unknown method> ldr r0, [r0+0x04] ; gcrRegs -[r0]
- ldr r3, [r6+0x04] - adds r0, r0, r3
+ ldr r7, [r6+0x04] + adds r0, r0, r7
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4] blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1 ; gcrRegs +[r0]
- mov r7, r0 - ; gcrRegs +[r7]
+ mov r8, r0 + ; gcrRegs +[r8]
mov r0, r5 movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4] blx r3 // <unknown method>
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r5
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -113,32 +115,39 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ldr r3, [r4] blx r3 // System.ComponentModel.AttributeCollection:CopyTo(System.Array,int):this ; gcrRegs -[r0-r1]
- mov r9, 0 - ldr r0, [r6+0x04] - cmp r0, 0
+ mov r10, 0 + cmp r7, 0
ble G_M10252_IG12
- ;; size=92 bbWeight=1 PerfScore 35.00 -G_M10252_IG05: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - add r10, r6, 8 - ; byrRegs +[r10] - lsl r4, r9, 2
+ movw r0, LOW RELOC 0xD1FFAB1E + movt r0, HIGH RELOC 0xD1FFAB1E + add r0, pc + ldr r0, [r0] + ldr r4, [r0] + ; gcrRegs +[r4]
str r4, [sp+0x08]
- ldr r0, [r10+r4]
+ ; GC ptr vars +{V17} + ;; size=106 bbWeight=1 PerfScore 40.00 +G_M10252_IG05: ; bbWeight=4, gcVars=00020000 {V17}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz + add r3, r6, 8 + ; byrRegs +[r3] + str r3, [sp+0x04] + ; GC ptr vars +{V18} + lsl r2, r10, 2 + str r2, [sp+0x14] + ldr r0, [r3+r2]
; gcrRegs +[r0]
- movw r1, LOW RELOC 0xD1FFAB1E - movt r1, HIGH RELOC 0xD1FFAB1E - add r1, pc - ldr r1, [r1] - ldr r1, [r1]
+ mov r1, r4
; gcrRegs +[r1] movw r4, LOW RELOC 0xD1FFAB1E
+ ; gcrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r4] - blx r3 // <unknown method>
+ ldr lr, [r4] + blx lr // <unknown method>
; gcrRegs -[r0-r1]
+ ; byrRegs -[r3]
movs r3, 0
- str r3, [sp+0x0C] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r5 ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -150,18 +159,18 @@ G_M10252_IG05: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M10252_IG10
- ;; size=68 bbWeight=4 PerfScore 100.00 -G_M10252_IG06: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref - ldr r3, [r7+0x04] - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r2, [sp+0x0C] // [V07 loc5] - str r3, [sp+0x04] // [V19 cse2]
+ ;; size=58 bbWeight=4 PerfScore 88.00 +G_M10252_IG06: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref + ldr r3, [r8+0x04] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M10252_IG07: ; bbWeight=16, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x18] // [V07 loc5] + str r3, [sp+0x10] // [V20 cse3]
cmp r2, r3 bhs G_M10252_IG17
- add r0, r7, 8
+ add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x0C] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2 ldr r0, [r0+r1] ; gcrRegs +[r0] @@ -172,19 +181,22 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 { ldr r1, [r0] ldr lr, [r4] blx lr // <unknown method>
- str r0, [sp] // [V15 tmp7]
+ str r0, [sp+0x0C] // [V15 tmp7]
; GC ptr vars +{V15}
- ldr r4, [sp+0x08] // [V18 cse1] - ldr r0, [r10+r4]
+ ldr r4, [sp+0x04] // [V18 cse1] + ; byrRegs +[r4] + ldr r2, [sp+0x14] // [V19 cse2] + ldr r0, [r4+r2]
movw r4, LOW RELOC 0xD1FFAB1E
+ ; byrRegs -[r4]
movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r1, [r0]
- ldr r2, [r4] - blx r2 // <unknown method>
+ ldr lr, [r4] + blx lr // <unknown method>
mov r1, r0 ; gcrRegs +[r1]
- ldr r0, [sp] // [V15 tmp7]
+ ldr r0, [sp+0x0C] // [V15 tmp7]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -195,9 +207,9 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 { ; gcrRegs -[r0-r1] cmp r0, 0 bne SHORT G_M10252_IG09
- ldr r3, [sp+0x0C] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x0C] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r5 ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -206,23 +218,25 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 { ldr r2, [r4] blx r2 // <unknown method> ldr r1, [r0+0x04]
- ldr r0, [sp+0x0C] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0] cmp r1, r0
- str r0, [sp+0x0C] // [V07 loc5] - ldr r3, [sp+0x04] // [V19 cse2]
+ str r0, [sp+0x18] // [V07 loc5] + ldr r3, [sp+0x10] // [V20 cse3]
bgt SHORT G_M10252_IG07
- ;; size=120 bbWeight=16 PerfScore 768.00 -G_M10252_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=122 bbWeight=16 PerfScore 784.00 +G_M10252_IG08: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r4, [sp+0x08] // [V18 cse1] - ldr r1, [r10+r4]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz + ldr r4, [sp+0x04] // [V18 cse1] + ; byrRegs +[r4] + ldr r2, [sp+0x14] // [V19 cse2] + ldr r1, [r4+r2]
; gcrRegs +[r1]
- add r3, r7, 8
+ add r3, r8, 8
; byrRegs +[r3]
- ldr r0, [sp+0x0C] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
lsls r0, r0, 2 adds r0, r3, r0 ; byrRegs +[r0] @@ -230,50 +244,55 @@ G_M10252_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0400 {r movt r12, HIGH RELOC 0xD1FFAB1E ...

+14 (+2.95%) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)

@@ -10,31 +10,32 @@ ; Final local variable assignments ; ; V00 this [V00,T13] ( 4, 4 ) ref -> r5 this class-hnd single-def <System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor>
-; V01 loc0 [V01,T16] ( 4, 2.50) ref -> r6 class-hnd <System.Attribute[]> -; V02 loc1 [V02,T06] ( 6, 24 ) ref -> r6 class-hnd single-def <System.ComponentModel.AttributeCollection> -; V03 loc2 [V03,T05] ( 7, 29 ) ref -> r5 class-hnd single-def <System.Attribute[]> -; V04 loc3 [V04,T04] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]> -; V05 loc4 [V05,T12] ( 6, 7 ) int -> registers -; V06 loc5 [V06,T03] ( 7, 35 ) int -> r9 -;* V07 loc6 [V07,T11] ( 0, 0 ) ubyte -> zero-ref -; V08 loc7 [V08,T00] ( 7, 88 ) int -> r10
+; V01 loc0 [V01,T17] ( 4, 2.50) ref -> r5 class-hnd <System.Attribute[]> +; V02 loc1 [V02,T05] ( 6, 24 ) ref -> r6 class-hnd single-def <System.ComponentModel.AttributeCollection> +; V03 loc2 [V03,T07] ( 5, 22 ) ref -> r5 class-hnd single-def <System.Attribute[]> +; V04 loc3 [V04,T04] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]> +; V05 loc4 [V05,T11] ( 6, 7 ) int -> registers +; V06 loc5 [V06,T03] ( 7, 33 ) int -> r10 +;* V07 loc6 [V07,T15] ( 0, 0 ) ubyte -> zero-ref +; V08 loc7 [V08,T00] ( 7, 86 ) int -> [sp+0x0C]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V11 tmp2 [V11,T09] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> -; V12 tmp3 [V12,T08] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V11 tmp2 [V11,T09] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> +; V12 tmp3 [V12,T08] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V13 tmp4 [V13,T10] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute>
-; V14 tmp5 [V14,T14] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection> -; V15 tmp6 [V15,T15] ( 2, 4 ) int -> r0 "argument with side effect" -; V16 tmp7 [V16,T01] ( 2, 64 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V14 tmp5 [V14,T14] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection> +; V15 tmp6 [V15,T16] ( 2, 4 ) int -> r0 "argument with side effect" +; V16 tmp7 [V16,T01] ( 2, 64 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
; V17 tmp8 [V17,T02] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V18 cse0 [V18,T07] ( 6, 24 ) int -> [sp+0x04] hoist multi-def "CSE - aggressive"
+; V18 cse0 [V18,T06] ( 6, 24 ) int -> [sp+0x08] hoist multi-def "CSE - aggressive" +; V19 cse1 [V19,T12] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 20
G_M35989_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 12 - add r11, sp, 40
+ sub sp, 20 + add r11, sp, 48
mov r5, r0 ; gcrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 @@ -60,8 +61,8 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 ldr r0, [r0+0x04] ; gcrRegs -[r0]
- ldr r3, [r5+0x04] - adds r0, r0, r3
+ ldr r7, [r5+0x04] + adds r0, r0, r7
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -69,8 +70,8 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // CORINFO_HELP_READYTORUN_NEWARR_1 ; gcrRegs +[r0] ; gcr arg pop 0
- mov r7, r0 - ; gcrRegs +[r7]
+ mov r8, r0 + ; gcrRegs +[r8]
mov r0, r6 movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -78,9 +79,9 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r3, [r4] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r6
- mov r1, r7
+ mov r1, r8
; gcrRegs +[r1] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -90,34 +91,52 @@ G_M35989_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // System.ComponentModel.AttributeCollection:CopyTo(System.Array,int):this ; gcrRegs -[r0-r1] ; gcr arg pop 0
- mov r9, 0 - ldr r0, [r5+0x04] - cmp r0, 0 - ble SHORT G_M35989_IG10 - ;; size=110 bbWeight=1 PerfScore 43.00 -G_M35989_IG03: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r10, 0
+ cmp r7, 0 + ble G_M35989_IG10 + ;; size=110 bbWeight=1 PerfScore 42.00 +G_M35989_IG03: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz + movs r3, 0 + str r3, [sp+0x0C] // [V08 loc7]
mov r0, r6 ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r4] - blx r3 // <unknown method>
+ ldr r2, [r4] + blx r2 // <unknown method>
; gcr arg pop 0 ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M35989_IG08
- ;; size=26 bbWeight=4 PerfScore 40.00 -G_M35989_IG04: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref - ldr r3, [r7+0x04] - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - str r3, [sp+0x04] - cmp r10, r3
+ ;; size=26 bbWeight=4 PerfScore 44.00 +G_M35989_IG04: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref + ldr r3, [r8+0x04] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M35989_IG05: ; bbWeight=16, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x0C] // [V08 loc7] + str r3, [sp+0x08] // [V18 cse0] + cmp r2, r3
bhs G_M35989_IG15
- add r0, r7, 8
+ add r0, r8, 8 + ; byrRegs +[r0] + str r2, [sp+0x0C] // [V08 loc7] + lsls r1, r2, 2 + ldr r0, [r0+r1] + ; gcrRegs +[r0] + ; byrRegs -[r0] + movw r4, LOW RELOC 0xD1FFAB1E + movt r4, HIGH RELOC 0xD1FFAB1E + add r4, pc + ldr r1, [r0] + ldr lr, [r4] + blx lr // <unknown method> + ; gcr arg pop 0 + str r0, [sp+0x04] // [V16 tmp7] + ; GC ptr vars +{V16} + add r0, r5, 8 + ; gcrRegs -[r0]
; byrRegs +[r0] lsl r2, r10, 2 ldr r0, [r0+r2] @@ -130,25 +149,9 @@ G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 { ldr r2, [r4] blx r2 // <unknown method> ; gcr arg pop 0
- str r0, [sp] // [V16 tmp7] - ; GC ptr vars +{V16} - add r0, r5, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsl r2, r9, 2 - ldr r0, [r0+r2] - ; gcrRegs +[r0] - ; byrRegs -[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r1, [r0] - ldr r2, [r4] - blx r2 // <unknown method> - ; gcr arg pop 0
mov r1, r0 ; gcrRegs +[r1]
- ldr r0, [sp] // [V16 tmp7]
+ ldr r0, [sp+0x04] // [V16 tmp7]
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -160,60 +163,66 @@ G_M35989_IG05: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 { ; gcr arg pop 0 cmp r0, 0 bne SHORT G_M35989_IG07
- add r10, r10, 1
+ ldr r3, [sp+0x0C] // [V08 loc7] + adds r3, r3, 1 + str r3, [sp+0x0C] // [V08 loc7]
mov r0, r6 ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r3, [r4] - blx r3 // <unknown method>
+ ldr r2, [r4] + blx r2 // <unknown method>
; gcr arg pop 0 ldr r1, [r0+0x04]
- cmp r1, r10 - ldr r3, [sp+0x04] // [V18 cse0] - bgt SHORT G_M35989_IG05 - ;; size=114 bbWeight=16 PerfScore 688.00 -G_M35989_IG06: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0x0C] // [V08 loc7]
; gcrRegs -[r0]
+ cmp r1, r0 + str r0, [sp+0x0C] // [V08 loc7] + ldr r3, [sp+0x08] // [V18 cse0] + bgt SHORT G_M35989_IG05 + ;; size=124 bbWeight=16 PerfScore 784.00 +G_M35989_IG06: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M35989_IG08 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M35989_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M35989_IG07: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
add r1, r5, 8 ; byrRegs +[r1]
- lsl r0, r9, 2 - ldr r1, [r1+r0] - ; gcrRegs +[r1] - ; byrRegs -[r1] - add r0, r7, 8 - ; byrRegs +[r0]
lsl r3, r10, 2
- adds r0, r0, r3
+ ldr r1, [r1+r3] + ; gcrRegs +[r1] + ; byrRegs -[r1] + add r3, r8, 8 + ; byrRegs +[r3] + ldr r0, [sp+0x0C] // [V08 loc7] + lsls r0, r0, 2 + adds r0, r3, r0 + ; byrRegs +[r0]
movw r12, LOW RELOC 0xD1FFAB1E movt r12, HIGH RELOC 0xD1FFAB1E add r12, pc ldr r12, [r12] blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1]
- ; byrRegs -[r0]
+ ; byrRegs -[r0 r3]
b SHORT G_M35989_IG09
- ;; size=38 bbWeight=4 PerfScore 48.00 -G_M35989_IG08: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - add r1, r8, 1 - mov r10, r1
+ ;; size=38 bbWeight=2 PerfScore 26.00 +G_M35989_IG08: ; bbWeight=2, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
...

+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

-24 (-27.91%) : 185919.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,92 +8,75 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
+; V03 tmp1 [V03,T02] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
; V04 tmp2 [V04,T03] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V06 tmp4 [V06,T06] ( 2, 1 ) int -> r0 "field V05.Token (fldOffset=0x0)" P-INDEP -; V07 tmp5 [V07,T07] ( 2, 1 ) int -> r3 "field V05.Type (fldOffset=0x4)" P-INDEP -; V08 cse0 [V08,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V09 cse1 [V09,T04] ( 4, 1.25) int -> r0 "CSE - moderate"
+; V06 tmp4 [V06,T04] ( 2, 1 ) int -> r3 "field V05.Token (fldOffset=0x0)" P-INDEP +; V07 tmp5 [V07,T05] ( 2, 1 ) int -> r2 "field V05.Type (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M25636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M25636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M25636_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M25636_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r1, r0
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M25636_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4] - ; byrRegs -[r5]
+ ; gcrRegs -[r1] + ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r5] - cmp r1, r0 - beq SHORT G_M25636_IG08 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref - mov r1, r4
+G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX
+ ; byrRegs +[r0] + ldr r3, [r1+0x04] + ldr r2, [r1+0x08] + ldr r1, [r0]
; gcrRegs -[r1]
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r0, [r4+0x04] - ldr r3, [r4+0x08] - ldr r2, [r5] - cmp r0, r2 - bne SHORT G_M25636_IG11 - ldr r0, [r5+0x04] - cmp r3, r0 - beq SHORT G_M25636_IG09
+ cmp r3, r1 + bne SHORT G_M25636_IG09 + ldr r0, [r0+0x04] + ; byrRegs -[r0] + cmp r2, r0 + beq SHORT G_M25636_IG07
movs r0, 0
- b SHORT G_M25636_IG10
+ b SHORT G_M25636_IG08
;; size=20 bbWeight=0.50 PerfScore 5.00
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - ; byrRegs -[r5]
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - b SHORT G_M25636_IG12
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + b SHORT G_M25636_IG10
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25636_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 86, prolog size 8, PerfScore 18.50, instruction count 35, allocated bytes for code 86 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 62, prolog size 6, PerfScore 14.25, instruction count 26, allocated bytes for code 62 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -105,7 +88,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,7 +100,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-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)

+2 (+2.70%) : 149077.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)

@@ -8,20 +8,21 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> -; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <Microsoft.Build.Construction.XmlElementWithLocation> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> r1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 3 ) int -> r2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 6, 8.50) ref -> r0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation> -;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
+; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1" +; V04 tmp2 [V04,T04] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T01] ( 5, 5.75) ref -> r0 class-hnd "spilling QMark2" <Microsoft.Build.Construction.XmlAttributeWithLocation> +;* V06 tmp4 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String> +; V07 cse0 [V07,T05] ( 3, 1 ) int -> r4 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M36414_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_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0-r1] ldr r3, [r0] @@ -36,53 +37,53 @@ G_M36414_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b beq SHORT G_M36414_IG05 ;; size=16 bbWeight=1 PerfScore 8.00 G_M36414_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_M36414_IG07 ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M36414_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+G_M36414_IG04: ; bbWeight=0.12, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- mov r0, r2
+ mov r0, r3
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[r1] +[r0] b SHORT G_M36414_IG07
- ;; size=14 bbWeight=1 PerfScore 5.00 -G_M36414_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.12 PerfScore 0.62 +G_M36414_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r0, 0xd1ff movt r0, 0xd1ff
- ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M36414_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M36414_IG06: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M36414_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[r0]
- ldr r3, [r0] - ldr r3, [r3+0x2C]
+ ldr r3, [r4+0x2C]
ldr r3, [r3+0x18]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M36414_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,lr}
+ add sp, 4 + pop {r4,r11,lr}
bx r3 // <unknown method>
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 74, prolog size 6, PerfScore 20.25, instruction count 28, allocated bytes for code 74 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 17.38, instruction count 28, allocated bytes for code 76 (MethodHash=f66a71c1) for method Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (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 : 37 (0x00025) Actual length = 74 (0x00004a)
+ 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) @@ -91,10 +92,14 @@ Unwind Info: ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 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

+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)

+18 (+3.41%) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)

@@ -8,40 +8,41 @@ ; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 11, 32 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection> -; V01 arg1 [V01,T14] ( 8, 13.50) ref -> r5 class-hnd <System.Attribute[]> -; V02 loc0 [V02,T06] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]> -; V03 loc1 [V03,T17] ( 6, 7 ) int -> registers -; V04 loc2 [V04,T22] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]> -; V05 loc3 [V05,T11] ( 5, 17 ) int -> r9 -;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref -; V07 loc5 [V07,T03] ( 7, 88 ) int -> [sp+0x14]
+; V00 arg0 [V00,T05] ( 10, 28 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection> +; V01 arg1 [V01,T13] ( 6, 8.50) ref -> r5 class-hnd <System.Attribute[]> +; V02 loc0 [V02,T06] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]> +; V03 loc1 [V03,T16] ( 6, 7 ) int -> [sp+0x1C] +; V04 loc2 [V04,T23] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]> +; V05 loc3 [V05,T11] ( 5, 17 ) int -> r10 +;* V06 loc4 [V06,T19] ( 0, 0 ) ubyte -> zero-ref +; V07 loc5 [V07,T03] ( 7, 86 ) int -> [sp+0x18]
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Object>
-; V10 tmp2 [V10,T13] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> -; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T14] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> +; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T15] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> ; V13 tmp5 [V13,T18] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection> ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Attribute[]> ;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Attribute>
-; V16 tmp8 [V16,T20] ( 2, 4 ) int -> r1 "argument with side effect" -; V17 tmp9 [V17,T19] ( 2, 4 ) ref -> r9 single-def "argument with side effect" -; V18 tmp10 [V18,T21] ( 2, 4 ) int -> r2 "argument with side effect"
+; V16 tmp8 [V16,T21] ( 2, 4 ) int -> r1 "argument with side effect" +; V17 tmp9 [V17,T20] ( 2, 4 ) ref -> r10 single-def "argument with side effect" +; V18 tmp10 [V18,T22] ( 2, 4 ) int -> r2 "argument with side effect"
; V19 tmp11 [V19,T00] ( 3, 96 ) ref -> r0 "argument with side effect" ; V20 tmp12 [V20,T01] ( 3, 96 ) ref -> r0 "argument with side effect"
-; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
+; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V22 tmp14 [V22,T04] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V23 cse0 [V23,T09] ( 8, 29 ) int -> [sp+0x10] multi-def "CSE - aggressive" -; V24 cse1 [V24,T07] ( 5, 30 ) byref -> r10 "CSE - aggressive" -; V25 cse2 [V25,T08] ( 5, 30 ) int -> r6 "CSE - aggressive" -; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x0C] hoist multi-def "CSE - aggressive"
+; V23 cse0 [V23,T09] ( 7, 25 ) int -> r6 "CSE - aggressive" +; V24 cse1 [V24,T07] ( 5, 28 ) byref -> [sp+0x08] spill-single-def "CSE - aggressive" +; V25 cse2 [V25,T08] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive" +; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive" +; V27 cse4 [V27,T17] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M10252_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
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -76,37 +77,37 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcr arg pop 0 ldr r1, [r0+0x04]
- ldr r0, [r5+0x04] - ; gcrRegs -[r0] - adds r1, r1, r0
+ ldr r7, [r5+0x04] + adds r1, r1, r7
movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[r0] ; gcr arg pop 0
- mov r7, r0 - ; gcrRegs +[r7]
+ mov r8, r0 + ; gcrRegs +[r8]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0
- mov r9, r0 - ; gcrRegs +[r9]
+ mov r10, r0 + ; gcrRegs +[r10]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0 ldr r2, [r0+0x04]
- mov r0, r9
+ mov r0, r10
str r2, [sp]
- mov r2, r7
+ mov r2, r8
; gcrRegs +[r2] movs r1, 0 movs r3, 0 @@ -114,46 +115,46 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r0 r2 r9]
+ ; gcrRegs -[r0 r2 r10]
; gcr arg pop 0
- mov r9, 0 - ldr r0, [r5+0x04] - cmp r0, 0
+ mov r10, 0 + cmp r7, 0
ble SHORT G_M10252_IG12
- ;; size=96 bbWeight=1 PerfScore 39.00 -G_M10252_IG05: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz - add r10, r5, 8 - ; byrRegs +[r10] - lsl r6, r9, 2 - ldr r0, [r10+r6]
+ ;; size=94 bbWeight=1 PerfScore 38.00 +G_M10252_IG05: ; bbWeight=4, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz + add r3, r5, 8 + ; byrRegs +[r3] + str r3, [sp+0x08] + ; GC ptr vars +{V24} + lsl r2, r10, 2 + str r2, [sp+0x14] + ldr r0, [r3+r2]
; gcrRegs +[r0] cmp r0, 0 beq G_M10252_IG19
- movs r3, 0 - str r3, [sp+0x14] // [V07 loc5]
+ movs r1, 0 + str r1, [sp+0x18] // [V07 loc5]
mov r0, r4
- ldr r2, [r4] - ldr r2, [r2+0x2C] - str r2, [sp+0x10] // [V23 cse0] - ldr r1, [r2+0x10] - blx r1 // <unknown method>
+ ldr lr, [r6+0x10] + blx lr // <unknown method> + ; byrRegs -[r3]
; gcr arg pop 0 ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M10252_IG10
- ;; size=40 bbWeight=4 PerfScore 64.00 -G_M10252_IG06: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref - ldr r3, [r7+0x04] - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r2, [sp+0x14] // [V07 loc5] - str r3, [sp+0x0C] // [V26 cse3]
+ ;; size=38 bbWeight=4 PerfScore 60.00 +G_M10252_IG06: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref + ldr r3, [r8+0x04] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M10252_IG07: ; bbWeight=16, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x18] // [V07 loc5] + str r3, [sp+0x10] // [V26 cse3]
cmp r2, r3
- bhs SHORT G_M10252_IG17 - add r0, r7, 8
+ bhs G_M10252_IG17 + add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x14] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2 ldr r0, [r0+r1] ; gcrRegs +[r0] @@ -163,17 +164,21 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 { ldr r1, [r1+0x10] blx r1 // <unknown method> ; gcr arg pop 0
- str r0, [sp+0x08] // [V21 tmp13]
+ str r0, [sp+0x0C] // [V21 tmp13]
; GC ptr vars +{V21}
- ldr r0, [r10+r6] - ldr r2, [r0] - ldr r2, [r2+0x2C] - ldr r2, [r2+0x10] - blx r2 // <unknown method>
+ ldr r2, [sp+0x08] // [V24 cse1] + ; byrRegs +[r2] + ldr r1, [sp+0x14] // [V25 cse2] + ldr r0, [r2+r1] + ldr lr, [r0] + ldr lr, [lr+0x2C] + ldr lr, [lr+0x10] + blx lr // <unknown method> + ; byrRegs -[r2]
; gcr arg pop 0 mov r1, r0 ; gcrRegs +[r1]
- ldr r0, [sp+0x08] // [V21 tmp13]
+ ldr r0, [sp+0x0C] // [V21 tmp13]
ldr r3, [r0] ldr r3, [r3+0x2C] ldr r3, [r3+0x08] @@ -183,77 +188,84 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 { ; gcr arg pop 0 cmp r0, 0 bne SHORT G_M10252_IG09
- ldr r3, [sp+0x14] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x14] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r4 ; gcrRegs +[r0]
- ldr r2, [sp+0x10] // [V23 cse0] - ldr r1, [r2+0x10] - blx r1 // <unknown method>
+ ldr r2, [r6+0x10] + blx r2 // <unknown method>
; gcr arg pop 0 ldr r1, [r0+0x04]
- ldr r0, [sp+0x14] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0] cmp r1, r0
- str r0, [sp+0x14] // [V07 loc5] - ldr r3, [sp+0x0C] // [V26 cse3]
+ str r0, [sp+0x18] // [V07 loc5] + ldr r3, [sp+0x10] // [V26 cse3]
bgt SHORT G_M10252_IG07
- ;; size=82 bbWeight=16 PerfScore 624.00 -G_M10252_IG08: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=90 bbWeight=16 PerfScore 640.00 +G_M10252_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r1, [r10+r6]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
...

libraries_tests.run.linux.arm.Release.mch

-24 (-32.43%) : 213559.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.UInt32> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.UInt32> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M22229_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M22229_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M22229_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M22229_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M22229_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M22229_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M22229_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldr r5, [r0] - cmp r1, r3 - bne SHORT G_M22229_IG08 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M22229_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M22229_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M22229_IG06
movs r0, 0
- b SHORT G_M22229_IG07 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M22229_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M22229_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M22229_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M22229_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M22229_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M22229_IG07 + movs r0, 0 + b SHORT G_M22229_IG08 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M22229_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M22229_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M22229_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M22229_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M22229_IG05 - ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M22229_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M22229_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 215412.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Byte> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Byte> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M19224_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M19224_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M19224_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M19224_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldrb r5, [r0] - cmp r1, r3 - bne SHORT G_M19224_IG08 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M19224_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M19224_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldrb r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M19224_IG06
movs r0, 0
- b SHORT G_M19224_IG07 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M19224_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19224_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M19224_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M19224_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M19224_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldrb r0, [r0] + ; byrRegs -[r0] + ldrb r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M19224_IG07 + movs r0, 0 + b SHORT G_M19224_IG08 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M19224_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M19224_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M19224_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M19224_IG05 - ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M19224_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M19224_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 286856.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)

@@ -9,76 +9,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r1 class-hnd "spilling QMark2" <System.Char> -; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 2 ) int -> r1 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 2.50) int -> r3 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 5 ) ref -> r3 class-hnd "spilling QMark2" <System.Char> +; V04 tmp2 [V04,T03] ( 2, 4 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M59978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M59978_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M59978_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0 - beq SHORT G_M59978_IG09
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0 + bne SHORT G_M59978_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M59978_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3 - bne SHORT G_M59978_IG09 - ;; size=14 bbWeight=0.50 PerfScore 2.50 -G_M59978_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ldrh r5, [r0] - cmp r1, r3 - bne SHORT G_M59978_IG08 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M59978_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M59978_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1 r3]
; byrRegs -[r0]
- ldrh r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M59978_IG06
movs r0, 0
- b SHORT G_M59978_IG07 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M59978_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M59978_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M59978_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; gcrRegs +[r1 r3] + ; byrRegs +[r0] + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + bne SHORT G_M59978_IG03 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M59978_IG06: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ldrh r0, [r0] + ; byrRegs -[r0] + ldrh r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M59978_IG07 + movs r0, 0 + b SHORT G_M59978_IG08 + ;; size=12 bbWeight=1 PerfScore 6.00 +G_M59978_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M59978_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M59978_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M59978_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - b SHORT G_M59978_IG05 - ;; size=16 bbWeight=0.50 PerfScore 3.00 -G_M59978_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.25 PerfScore 0.25 -G_M59978_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.25 PerfScore 0.25
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 29, allocated bytes for code 74 (MethodHash=911915b5) for method System.Char:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 50, prolog size 6, PerfScore 17.50, instruction count 20, allocated bytes for code 50 (MethodHash=911915b5) for method System.Char:Equals(System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -90,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -102,7 +87,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+20 (+5.75%) : 14822.dasm - System.Text.RegularExpressions.RegexNode:TryGetJoinableLengthCheckChildRange(int,byref,byref):ubyte:this (Tier0-FullOpts)

@@ -8,28 +8,30 @@ ; 3 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 7, 9.50) ref -> r6 this class-hnd single-def <System.Text.RegularExpressions.RegexNode> -; V01 arg1 [V01,T10] ( 5, 3 ) int -> r7 single-def
+; V00 this [V00,T04] ( 7, 10 ) ref -> r6 this class-hnd single-def <System.Text.RegularExpressions.RegexNode> +; V01 arg1 [V01,T10] ( 5, 3.50) int -> r7 single-def
; V02 arg2 [V02,T03] ( 6, 11 ) byref -> r5 single-def ; V03 arg3 [V03,T00] ( 10, 20 ) byref -> r4 single-def ;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.RegexNode> ; V05 loc1 [V05,T11] ( 3, 5 ) int -> r8 ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V08 tmp2 [V08,T14] ( 4, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V08 tmp2 [V08,T15] ( 4, 2.50) ref -> r9 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V09 tmp3 [V09,T12] ( 2, 4 ) ref -> r8 single-def "CASTCLASS eval op1" ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V11 tmp5 [V11,T13] ( 4, 2.75) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp5 [V11,T14] ( 4, 2.75) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp6 [V12,T07] ( 4, 10 ) ref -> r10 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V13 tmp7 [V13,T01] ( 2, 16 ) ref -> r10 "CASTCLASS eval op1" ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V15 tmp9 [V15,T06] ( 4, 11 ) ref -> r10 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp10 [V16,T04] ( 4, 12 ) int -> r9 "Inlining Arg"
+; V16 tmp10 [V16,T05] ( 4, 12 ) int -> r9 "Inlining Arg"
; V17 tmp11 [V17,T09] ( 3, 8 ) ref -> r3 class-hnd "Inlining Arg" <<unknown class>>
-; V18 tmp12 [V18,T16] ( 2, 0 ) ref -> r0 single-def "argument with side effect" -; V19 tmp13 [V19,T15] ( 3, 0 ) ref -> r3 "arr expr" -; V20 rat0 [V20,T08] ( 3, 9 ) ref -> r1 "Spilling to split statement for tree" -; V21 rat1 [V21,T02] ( 5, 15 ) ref -> r3 class-hnd "replacement local" <<unknown class>>
+; V18 tmp12 [V18,T17] ( 2, 2 ) ref -> r0 single-def "argument with side effect" +; V19 tmp13 [V19,T18] ( 3, 0 ) ref -> r3 "arr expr" +; V20 rat0 [V20,T16] ( 3, 2.25) ref -> r1 "Spilling to split statement for tree" +; V21 rat1 [V21,T13] ( 5, 3.75) ref -> r0 class-hnd "replacement local" <<unknown class>> +; V22 rat2 [V22,T08] ( 3, 9 ) ref -> r1 "Spilling to split statement for tree" +; V23 rat3 [V23,T02] ( 5, 15 ) ref -> r3 class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 4 @@ -48,17 +50,59 @@ G_M56069_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, ldr r8, [r6+0x04] ; gcrRegs +[r8] cmp r8, 0
- beq G_M56069_IG21 - ;; size=12 bbWeight=1 PerfScore 3.00 -G_M56069_IG03: ; bbWeight=0.25, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz - ldr r0, [r8]
+ bne SHORT G_M56069_IG07 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M56069_IG03: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz + ; gcrRegs -[r8] + ldr r1, [r6+0x04] + ; gcrRegs +[r1] + mov r0, r1 + ; gcrRegs +[r0] + cmp r0, 0 + beq SHORT G_M56069_IG06 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M56069_IG04: ; bbWeight=0.25, gcrefRegs=0043 {r0 r1 r6}, byrefRegs=0030 {r4 r5}, byref, isz + ldr r3, [r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + beq SHORT G_M56069_IG06 + ;; size=14 bbWeight=0.25 PerfScore 1.25 +G_M56069_IG05: ; bbWeight=0.12, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref + ; gcrRegs -[r0] + movw r0, 0xd1ff + movt r0, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff
- cmp r0, r3 - bne G_M56069_IG21 - ;; size=18 bbWeight=0.25 PerfScore 1.25 -G_M56069_IG04: ; bbWeight=1, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz - mov r0, r8
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[r1] +[r0] + ;; size=18 bbWeight=0.12 PerfScore 0.62 +G_M56069_IG06: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0030 {r4 r5}, byref, isz + mov r1, r7 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + ldr r2, [r0] + blx r3 // System.Collections.Generic.List`1[System.__Canon]:get_Item(int):System.__Canon:this + mov r9, r0 + ; gcrRegs +[r9] + b SHORT G_M56069_IG09 + ;; size=20 bbWeight=0.50 PerfScore 4.00 +G_M56069_IG07: ; bbWeight=0.25, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz + ; gcrRegs -[r0 r9] +[r8] + ldr r1, [r8] + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + bne SHORT G_M56069_IG03 + ;; size=16 bbWeight=0.25 PerfScore 1.25 +G_M56069_IG08: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref + mov r9, r8 + ; gcrRegs +[r9] + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M56069_IG09: ; bbWeight=1, gcrefRegs=0240 {r6 r9}, byrefRegs=0030 {r4 r5}, byref, isz + ; gcrRegs -[r8] + mov r0, r9
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff @@ -66,17 +110,17 @@ G_M56069_IG04: ; bbWeight=1, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r blx r3 // System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte ; gcrRegs -[r0] cmp r0, 0
- beq SHORT G_M56069_IG17
+ beq SHORT G_M56069_IG22
;; size=18 bbWeight=1 PerfScore 7.00
-G_M56069_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r4 r5}, byref, isz - mov r0, r8
+G_M56069_IG10: ; bbWeight=0.50, gcrefRegs=0240 {r6 r9}, byrefRegs=0030 {r4 r5}, byref, isz + mov r0, r9
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // <unknown method>
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r9]
str r0, [r5] mov r0, r6 ; gcrRegs +[r0] @@ -90,32 +134,32 @@ G_M56069_IG05: ; bbWeight=0.50, gcrefRegs=0140 {r6 r8}, byrefRegs=0030 {r str r1, [r4] ldr r1, [r4] cmp r1, r8
- bge SHORT G_M56069_IG15
+ bge SHORT G_M56069_IG20
;; size=44 bbWeight=0.50 PerfScore 9.00
-G_M56069_IG06: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG11: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r9, [r4] ldr r10, [r6+0x04] ; gcrRegs +[r10] cmp r10, 0
- bne SHORT G_M56069_IG13
+ bne SHORT G_M56069_IG18
;; size=14 bbWeight=4 PerfScore 16.00
-G_M56069_IG07: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG12: ; bbWeight=2, gcrefRegs=0040 {r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r10] ldr r1, [r6+0x04] ; gcrRegs +[r1] mov r3, r1 ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M56069_IG10
+ beq SHORT G_M56069_IG15
;; size=8 bbWeight=2 PerfScore 8.00
-G_M56069_IG08: ; bbWeight=1, gcrefRegs=004A {r1 r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG13: ; bbWeight=1, gcrefRegs=004A {r1 r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r0, [r3] movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- beq SHORT G_M56069_IG10
+ beq SHORT G_M56069_IG15
;; size=14 bbWeight=1 PerfScore 5.00
-G_M56069_IG09: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref
+G_M56069_IG14: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r4 r5}, byref
; gcrRegs -[r3] movw r0, 0xd1ff movt r0, 0xd1ff @@ -126,13 +170,13 @@ G_M56069_IG09: ; bbWeight=0.50, gcrefRegs=0042 {r1 r6}, byrefRegs=0030 {r mov r3, r0 ; gcrRegs +[r3] ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M56069_IG10: ; bbWeight=2, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG15: ; bbWeight=2, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r0] ldr r0, [r3+0x08] cmp r9, r0
- blo SHORT G_M56069_IG12
+ blo SHORT G_M56069_IG17
;; size=6 bbWeight=2 PerfScore 6.00
-G_M56069_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56069_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r3 r6] ; byrRegs -[r4-r5] movw r3, 0xd1ff @@ -141,30 +185,30 @@ G_M56069_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M56069_IG12: ; bbWeight=0, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG17: ; bbWeight=0, gcrefRegs=0048 {r3 r6}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs +[r3 r6] ; byrRegs +[r4-r5] ldr r3, [r3+0x04] ldr r2, [r3+0x04] cmp r9, r2
- bhs SHORT G_M56069_IG20
+ bhs SHORT G_M56069_IG25
adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3] lsl r2, r9, 2 ldr r10, [r3+r2] ; gcrRegs +[r10]
- b SHORT G_M56069_IG14
+ b SHORT G_M56069_IG19
;; size=20 bbWeight=0 PerfScore 0.00
-G_M56069_IG13: ; bbWeight=1, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG18: ; bbWeight=1, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
; byrRegs -[r3] ldr r1, [r10] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- bne SHORT G_M56069_IG07
+ bne SHORT G_M56069_IG12
;; size=16 bbWeight=1 PerfScore 5.00
-G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG19: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 r5}, byref, isz
mov r0, r10 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -173,7 +217,7 @@ G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 blx r3 // System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte ; gcrRegs -[r0] cmp r0, 0
- beq SHORT G_M56069_IG15
+ beq SHORT G_M56069_IG20
ldr r9, [r5] mov r0, r10 ; gcrRegs +[r0] @@ -190,59 +234,39 @@ G_M56069_IG14: ; bbWeight=4, gcrefRegs=0440 {r6 r10}, byrefRegs=0030 {r4 str r0, [r4] ldr r0, [r4] cmp r0, r8
- blt SHORT G_M56069_IG06
+ blt SHORT G_M56069_IG11
;; size=54 bbWeight=4 PerfScore 88.00
-G_M56069_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+G_M56069_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
; gcrRegs -[r6] ldr r0, [r4] subs r0, r0, r7 cmp r0, 1
- ble SHORT G_M56069_IG17
+ ble SHORT G_M56069_IG22
...

+6 (+6.38%) : 67468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)

@@ -13,30 +13,31 @@ ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T04] ( 2, 2 ) int -> r0 "guarded devirt return temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V04 tmp3 [V04,T05] ( 3, 2 ) ubyte -> r3 "Inline return value spill temp"
+; V04 tmp3 [V04,T05] ( 3, 2 ) ubyte -> r8 "Inline return value spill temp"
; V05 tmp4 [V05,T03] ( 2, 2 ) int -> r0 "guarded devirt return temp" ;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V07 tmp6 [V07,T06] ( 3, 2 ) int -> r6 "guarded devirt return temp"
+; V07 tmp6 [V07,T06] ( 3, 2 ) int -> r7 "guarded devirt return temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor> ; V09 cse0 [V09,T02] ( 3, 3 ) int -> r6 "CSE - aggressive" ; V10 cse1 [V10,T01] ( 4, 3.44) int -> r5 "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 2, 2 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 G_M22420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr} + add r11, sp, 24
mov r4, r0 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 G_M22420_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz cmp r4, 0
- beq SHORT G_M22420_IG10
+ beq SHORT G_M22420_IG11
ldr r5, [r4] movw r0, 0xd1ff movt r0, 0xd1ff cmp r5, r0
- beq SHORT G_M22420_IG03
+ beq SHORT G_M22420_IG04
mov r0, r4 ; gcrRegs +[r0] ldr r6, [r5+0x70] @@ -44,36 +45,38 @@ G_M22420_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 1
- bne SHORT G_M22420_IG10
+ bne SHORT G_M22420_IG11
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r6+0x1C] blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 1
- bne SHORT G_M22420_IG09 - b SHORT G_M22420_IG08 - ;; size=42 bbWeight=1 PerfScore 19.00 -G_M22420_IG03: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M22420_IG10 + ;; size=40 bbWeight=1 PerfScore 18.00 +G_M22420_IG03: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + b SHORT G_M22420_IG09 + ;; size=2 bbWeight=0.44 PerfScore 0.44 +G_M22420_IG04: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- movs r6, 0
+ movs r7, 0
;; size=2 bbWeight=0.56 PerfScore 0.56
-G_M22420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb r3, r6 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M22420_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r3, 0 - beq SHORT G_M22420_IG06
+G_M22420_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + uxtb r8, r7 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M22420_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r8, 0 + beq SHORT G_M22420_IG07
movs r0, 0
- b SHORT G_M22420_IG07 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M22420_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b SHORT G_M22420_IG08 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M22420_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M22420_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r3,r4,r5,r6,r11,pc}
+G_M22420_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M22420_IG08: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22420_IG09: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] mov r0, r4 ; gcrRegs +[r0] @@ -81,21 +84,21 @@ G_M22420_IG08: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0010 {r4}, ldr r3, [r3+0x0C] blx r3 // <unknown method> ; gcrRegs -[r0 r4]
- mov r6, r0 - b SHORT G_M22420_IG04 - ;; size=14 bbWeight=0.44 PerfScore 2.64 -G_M22420_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movs r3, 0
+ mov r7, r0
b SHORT G_M22420_IG05
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22420_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=0.44 PerfScore 2.64 +G_M22420_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r8, 0 + b SHORT G_M22420_IG06 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M22420_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M22420_IG11: ; bbWeight=0, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M22420_IG12: ; bbWeight=0, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 8, PerfScore 32.20, instruction count 40, allocated bytes for code 94 (MethodHash=9bdfa86b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
+; Total bytes of code 100, prolog size 8, PerfScore 31.64, instruction count 40, allocated bytes for code 100 (MethodHash=9bdfa86b) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -107,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 50 (0x00032) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +122,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end FF end

+24 (+7.95%) : 432766.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)

@@ -9,41 +9,41 @@ ; 7 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 7, 6.99) ref -> r4 class-hnd single-def <System.Reflection.PropertyInfo>
+; V00 arg0 [V00,T01] ( 7, 5.99) ref -> r4 class-hnd single-def <System.Reflection.PropertyInfo>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodInfo> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.ParameterInfo[]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T11] ( 2, 2 ) int -> r0 "guarded devirt return temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
-; V06 tmp3 [V06,T00] ( 15, 10.08) ref -> r6 "guarded devirt return temp"
+; V06 tmp3 [V06,T00] ( 16, 9.08) ref -> r6 "guarded devirt return temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
-; V08 tmp5 [V08,T09] ( 4, 2.54) ref -> r5 "guarded devirt return temp"
+; V08 tmp5 [V08,T09] ( 4, 2.54) ref -> r8 "guarded devirt return temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp9 [V12,T12] ( 3, 1.99) int -> r4 "guarded devirt return temp"
+; V12 tmp9 [V12,T12] ( 3, 1.99) int -> r7 "guarded devirt return temp"
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
-; V15 tmp12 [V15,T08] ( 3, 2.98) ref -> r4 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
+; V15 tmp12 [V15,T08] ( 3, 2.98) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
-; V17 tmp14 [V17,T05] ( 2, 3.97) ref -> r5 class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]> -; V18 tmp15 [V18,T02] ( 6, 5.35) ref -> r5
+; V17 tmp14 [V17,T05] ( 2, 3.97) ref -> r8 class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]> +; V18 tmp15 [V18,T02] ( 6, 5.35) ref -> r8
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <System.Reflection.ParameterInfo[]> ;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.ParameterInfo[]>
-; V21 tmp18 [V21,T07] ( 2, 3.29) ref -> r5 class-hnd exact single-def "dup spill" <System.Signature> -; V22 tmp19 [V22,T06] ( 4, 3.29) ref -> r5 -; V23 tmp20 [V23,T10] ( 3, 2.47) ref -> r5 class-hnd single-def "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
+; V21 tmp18 [V21,T07] ( 2, 3.29) ref -> r8 class-hnd exact single-def "dup spill" <System.Signature> +; V22 tmp19 [V22,T06] ( 4, 3.29) ref -> r8 +; V23 tmp20 [V23,T10] ( 3, 2.47) ref -> r8 class-hnd single-def "Inline return value spill temp" <System.Reflection.ParameterInfo[]>
; V24 tmp21 [V24,T13] ( 2, 1.65) int -> r0 ; V25 tmp22 [V25 ] ( 2, 1.65) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Reflection.ParameterInfo>
-; V26 cse0 [V26,T03] ( 5, 4.99) int -> r5 "CSE - aggressive" -; V27 cse1 [V27,T04] ( 4, 3.97) int -> r6 "CSE - moderate"
+; V26 cse0 [V26,T03] ( 5, 3.99) int -> r5 "CSE - aggressive" +; V27 cse1 [V27,T04] ( 4, 3.97) int -> r4 "CSE - moderate"
; ; Lcl frame size = 20 G_M52216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 20
- add r11, sp, 32
+ add r11, sp, 40
movs r1, 0 str r1, [sp+0x0C] // [V25 tmp22] mov r4, r0 @@ -58,7 +58,7 @@ G_M52216_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M52216_IG07
+ beq SHORT G_M52216_IG05
;; size=20 bbWeight=1 PerfScore 8.00 G_M52216_IG03: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -71,7 +71,7 @@ G_M52216_IG03: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r4] mov r6, r0 ; gcrRegs +[r6]
- b SHORT G_M52216_IG06
+ b SHORT G_M52216_IG07
;; size=14 bbWeight=0.99 PerfScore 6.95 G_M52216_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r6] +[r4] @@ -82,56 +82,46 @@ G_M52216_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r0] cmp r0, 0
- beq SHORT G_M52216_IG07 - ;; size=12 bbWeight=1 PerfScore 6.00 -G_M52216_IG05: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - mov r0, r4 - ; gcrRegs +[r0] - ldr r3, [r5+0x38] - ldr r3, [r3] - blx r3 // System.Reflection.PropertyInfo:get_GetMethod():System.Reflection.MethodInfo:this - ; gcrRegs -[r4] - mov r6, r0 - ; gcrRegs +[r6] - ;; size=10 bbWeight=0.99 PerfScore 4.97 -G_M52216_IG06: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - ldr r0, [r6] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3
bne SHORT G_M52216_IG17
- ldr r4, [r6+0x30] - b SHORT G_M52216_IG09 - ;; size=18 bbWeight=0.99 PerfScore 6.95 -G_M52216_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6]
+ ;; size=12 bbWeight=1 PerfScore 6.00 +G_M52216_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4]
movs r0, 0 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M52216_IG08: ; bbWeight=0.01, epilog, nogc, extend
+G_M52216_IG06: ; bbWeight=0.01, epilog, nogc, extend
add sp, 20
- pop {r4,r5,r6,r11,pc}
+ pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M52216_IG09: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52216_IG07: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r6]
- ands r0, r4, 16 - cmp r0, 0 - bne SHORT G_M52216_IG07
ldr r0, [r6] movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3 bne SHORT G_M52216_IG18
- ldr r5, [r6+0x10] - ; gcrRegs +[r5] - cmp r5, 0
+ ;; size=14 bbWeight=0.99 PerfScore 4.97 +G_M52216_IG08: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref + ldr r7, [r6+0x30] + ;; size=2 bbWeight=0.99 PerfScore 0.99 +G_M52216_IG09: ; bbWeight=0.99, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz + ands r0, r7, 16 + cmp r0, 0 + bne SHORT G_M52216_IG05 + ldr r0, [r6] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + bne SHORT G_M52216_IG19 + ldr r8, [r6+0x10] + ; gcrRegs +[r8] + cmp r8, 0
bne SHORT G_M52216_IG12
- ;; size=28 bbWeight=0.99 PerfScore 10.93
+ ;; size=32 bbWeight=0.99 PerfScore 10.93
G_M52216_IG10: ; bbWeight=0.82, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5] - ldr r5, [r6+0x18] - ; gcrRegs +[r5] - cmp r5, 0
+ ; gcrRegs -[r8] + ldr r8, [r6+0x18] + ; gcrRegs +[r8] + cmp r8, 0
bne SHORT G_M52216_IG11 mov r0, r6 ; gcrRegs +[r0] @@ -139,11 +129,11 @@ G_M52216_IG10: ; bbWeight=0.82, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r5] - mov r5, r0 - ; gcrRegs +[r5] - ;; size=22 bbWeight=0.82 PerfScore 7.41 -G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8] + mov r8, r0 + ; gcrRegs +[r8] + ;; size=26 bbWeight=0.82 PerfScore 7.41 +G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 1 movw r3, 0xd1ff @@ -157,21 +147,21 @@ G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ; gcrRegs +[r0] mov r1, r6 ; gcrRegs +[r1]
- mov r2, r5
+ mov r2, r8
; gcrRegs +[r2] movw lr, 0xd1ff movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r1-r2 r5] - mov r5, r0 - ; gcrRegs +[r5]
+ ; gcrRegs -[r1-r2 r8] + mov r8, r0 + ; gcrRegs +[r8]
movs r1, 0 str r1, [sp+0x0C] // [V25 tmp22] add r0, r6, 16 ; gcrRegs -[r0] ; byrRegs +[r0]
- mov r1, r5
+ mov r1, r8
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -179,49 +169,65 @@ G_M52216_IG11: ; bbWeight=0.82, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ; gcrRegs -[r1 r6] ; byrRegs -[r0] ;; size=62 bbWeight=0.82 PerfScore 18.93
-G_M52216_IG12: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ldr r6, [r5+0x04] - cmp r6, 0
+G_M52216_IG12: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz + ldr r4, [r8+0x04] + cmp r4, 0
bne SHORT G_M52216_IG14
- ;; size=6 bbWeight=0.99 PerfScore 2.98 -G_M52216_IG13: ; bbWeight=0.55, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.99 PerfScore 2.98 +G_M52216_IG13: ; bbWeight=0.55, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M52216_IG15 ;; size=2 bbWeight=0.55 PerfScore 0.55
-G_M52216_IG14: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - mov r1, r6
+G_M52216_IG14: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref + mov r1, r4
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[r0]
- mov r4, r0 - ; gcrRegs +[r4] - mov r2, r6 - mov r0, r5 - mov r1, r4
+ mov r5, r0 + ; gcrRegs +[r5] + mov r2, r4 + mov r0, r8 + mov r1, r5
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0-r1 r5] - mov r5, r4 - ; gcrRegs +[r5]
+ ; gcrRegs -[r0-r1 r8] + mov r8, r5 + ; gcrRegs +[r8]
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-24 (-31.58%) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,79 +8,59 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> -; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs> +; V04 tmp2 [V04,T03] ( 2, 2 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
; ; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+G_M20050_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 +G_M20050_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M20050_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M20050_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref + ; gcrRegs +[r1]
; byrRegs +[r0]
- ldr r5, [r0] - ; gcrRegs +[r5] - cmp r1, r3 - beq SHORT G_M20050_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4 - ; gcrRegs +[r1] - mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ; gcr arg pop 0 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref - ldr r1, [r4+0x04] - ; gcrRegs +[r1] - mov r0, r5
+ ldr r0, [r0]
; gcrRegs +[r0]
+ ; byrRegs -[r0] + ldr r1, [r1+0x04]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,lr}
+G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,lr}
bx r3 // System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte ; gcr arg pop 0 ;; size=6 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 76, prolog size 10, PerfScore 14.50, instruction count 28, allocated bytes for code 76 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 6, PerfScore 10.75, instruction count 19, allocated bytes for code 52 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -104,7 +84,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-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)

-22 (-18.64%) : 90744.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,14 +8,14 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> r5 this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> r4 class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> r0 this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> r1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Data.Tests.DataRowTest2+Address> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> r0 class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address>
+; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> r2 class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V06 tmp3 [V06,T04] ( 5, 4.70) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T08] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp5 [V08,T03] ( 5, 4.70) ref -> r2 class-hnd exact single-def "Inlining Arg" <System.String> ; V09 tmp6 [V09,T05] ( 2, 2 ) byref -> r3 single-def "impAppendStmt" ;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -23,87 +23,71 @@ ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp12 [V15,T10] ( 2, 1 ) ref -> r2 single-def "field V02.Street (fldOffset=0x0)" P-INDEP -; V16 tmp13 [V16,T11] ( 2, 1 ) int -> r1 single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
+; V15 tmp12 [V15,T08] ( 2, 1 ) ref -> r2 single-def "field V02.Street (fldOffset=0x0)" P-INDEP +; V16 tmp13 [V16,T09] ( 2, 1 ) int -> r1 single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP
; V17 cse0 [V17,T06] ( 3, 1.35) int -> r0 "CSE - moderate"
-; V18 cse1 [V18,T09] ( 3, 1 ) int -> r1 "CSE - moderate" -; V19 cse2 [V19,T07] ( 4, 1.25) int -> r0 "CSE - moderate"
; ; Lcl frame size = 0 G_M31876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r5, r0 - ; byrRegs +[r5] - mov r4, r1 - ; gcrRegs +[r4] - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M31876_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - cmp r0, 0
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M31876_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz + ; gcrRegs +[r1] + ; byrRegs +[r0] + mov r2, r1 + ; gcrRegs +[r2] + cmp r2, 0
beq SHORT G_M31876_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz - ldr r1, [r0] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - cmp r1, r0
+G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz + ldr r2, [r2] + ; gcrRegs -[r2] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r2, r3
beq SHORT G_M31876_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M31876_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4] - ; byrRegs -[r5]
+ ; gcrRegs -[r1] + ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M31876_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r5] - cmp r1, r0 - beq SHORT G_M31876_IG08 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M31876_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref - mov r1, r4
+G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=12 bbWeight=0.25 PerfScore 1.00 -G_M31876_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz - ldr r2, [r4+0x04]
+ ; byrRegs +[r0] + ldr r2, [r1+0x04]
; gcrRegs +[r2]
- ldr r1, [r4+0x08] - ldr r0, [r5+0x04] - cmp r1, r0
+ ldr r1, [r1+0x08] + ; gcrRegs -[r1] + ldr r3, [r0+0x04] + cmp r1, r3
bne SHORT G_M31876_IG04
- ldr r1, [r5]
+ ldr r1, [r0]
; gcrRegs +[r1] cmp r2, r1
- beq SHORT G_M31876_IG13
+ beq SHORT G_M31876_IG11
;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M31876_IG09: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - ; byrRegs -[r5]
+G_M31876_IG07: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
cmp r2, 0 beq SHORT G_M31876_IG04 ;; size=4 bbWeight=0.43 PerfScore 0.85
-G_M31876_IG10: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG08: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
cmp r1, 0 beq SHORT G_M31876_IG04 ;; size=4 bbWeight=0.43 PerfScore 0.85
-G_M31876_IG11: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG09: ; bbWeight=0.43, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
ldr r0, [r2+0x04] ldr r3, [r1+0x04] cmp r0, r3 bne SHORT G_M31876_IG04 ;; size=8 bbWeight=0.43 PerfScore 1.70
-G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M31876_IG10: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
add r3, r2, 8 ; byrRegs +[r3] lsls r2, r0, 1 @@ -122,14 +106,14 @@ G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {} cmp r0, 0 beq SHORT G_M31876_IG04 ;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M31876_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31876_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M31876_IG14: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,pc}
+G_M31876_IG12: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 118, prolog size 8, PerfScore 24.65, instruction count 48, allocated bytes for code 118 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 6, PerfScore 20.65, instruction count 40, allocated bytes for code 96 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 118 (0x000076)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -153,7 +137,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+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 ...

+18 (+3.56%) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)

@@ -8,40 +8,41 @@ ; 2 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 11, 32 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection> -; V01 arg1 [V01,T14] ( 8, 13.50) ref -> r5 class-hnd <System.Attribute[]> -; V02 loc0 [V02,T06] ( 10, 30 ) ref -> r7 class-hnd exact single-def <System.Attribute[]> -; V03 loc1 [V03,T17] ( 6, 7 ) int -> registers -; V04 loc2 [V04,T22] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]> -; V05 loc3 [V05,T11] ( 5, 17 ) int -> r9 -;* V06 loc4 [V06,T16] ( 0, 0 ) ubyte -> zero-ref -; V07 loc5 [V07,T03] ( 7, 88 ) int -> [sp+0x14]
+; V00 arg0 [V00,T05] ( 10, 28 ) ref -> r4 class-hnd single-def <System.ComponentModel.AttributeCollection> +; V01 arg1 [V01,T13] ( 6, 8.50) ref -> r5 class-hnd <System.Attribute[]> +; V02 loc0 [V02,T06] ( 10, 28 ) ref -> r8 class-hnd exact single-def <System.Attribute[]> +; V03 loc1 [V03,T16] ( 6, 7 ) int -> [sp+0x1C] +; V04 loc2 [V04,T23] ( 4, 2.50) ref -> r4 class-hnd <System.Attribute[]> +; V05 loc3 [V05,T11] ( 5, 17 ) int -> r10 +;* V06 loc4 [V06,T19] ( 0, 0 ) ubyte -> zero-ref +; V07 loc5 [V07,T03] ( 7, 86 ) int -> [sp+0x18]
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Object>
-; V10 tmp2 [V10,T13] ( 2, 16 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> -; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r8 "impSpillLclRefs"
+; V10 tmp2 [V10,T14] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> +; V11 tmp3 [V11,T12] ( 4, 16 ) int -> r9 "impSpillLclRefs"
; V12 tmp4 [V12,T15] ( 2, 8 ) ref -> r1 class-hnd "Strict ordering of exceptions for Array store" <System.Attribute> ; V13 tmp5 [V13,T18] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.AttributeCollection> ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Attribute[]> ;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Attribute>
-; V16 tmp8 [V16,T20] ( 2, 4 ) int -> r1 "argument with side effect" -; V17 tmp9 [V17,T19] ( 2, 4 ) ref -> r9 single-def "argument with side effect" -; V18 tmp10 [V18,T21] ( 2, 4 ) int -> r2 "argument with side effect"
+; V16 tmp8 [V16,T21] ( 2, 4 ) int -> r1 "argument with side effect" +; V17 tmp9 [V17,T20] ( 2, 4 ) ref -> r10 single-def "argument with side effect" +; V18 tmp10 [V18,T22] ( 2, 4 ) int -> r2 "argument with side effect"
; V19 tmp11 [V19,T00] ( 3, 96 ) ref -> r0 "argument with side effect" ; V20 tmp12 [V20,T01] ( 3, 96 ) ref -> r0 "argument with side effect"
-; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
+; V21 tmp13 [V21,T02] ( 3, 96 ) ref -> [sp+0x0C] spill-single-def "argument with side effect"
; V22 tmp14 [V22,T04] ( 2, 64 ) ref -> r1 "argument with side effect"
-; V23 cse0 [V23,T09] ( 8, 29 ) int -> [sp+0x10] multi-def "CSE - aggressive" -; V24 cse1 [V24,T07] ( 5, 30 ) byref -> r10 "CSE - aggressive" -; V25 cse2 [V25,T08] ( 5, 30 ) int -> r6 "CSE - aggressive" -; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x0C] hoist multi-def "CSE - aggressive"
+; V23 cse0 [V23,T09] ( 7, 25 ) int -> r6 "CSE - aggressive" +; V24 cse1 [V24,T07] ( 5, 28 ) byref -> [sp+0x08] spill-single-def "CSE - aggressive" +; V25 cse2 [V25,T08] ( 5, 28 ) int -> [sp+0x14] spill-single-def "CSE - aggressive" +; V26 cse3 [V26,T10] ( 6, 24 ) int -> [sp+0x10] hoist multi-def "CSE - aggressive" +; V27 cse4 [V27,T17] ( 4, 7 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 28
+; Lcl frame size = 36
G_M10252_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
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -68,37 +69,37 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b blx r3 // <unknown method> ; gcr arg pop 0 ldr r1, [r0+0x04]
- ldr r0, [r5+0x04] - ; gcrRegs -[r0] - adds r1, r1, r0
+ ldr r7, [r5+0x04] + adds r1, r1, r7
movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[r0] ; gcr arg pop 0
- mov r7, r0 - ; gcrRegs +[r7]
+ mov r8, r0 + ; gcrRegs +[r8]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0
- ldr r8, [r0+0x04]
+ ldr r9, [r0+0x04]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0
- mov r9, r0 - ; gcrRegs +[r9]
+ mov r10, r0 + ; gcrRegs +[r10]
mov r0, r4 ldr r3, [r6+0x10] blx r3 // <unknown method> ; gcr arg pop 0 ldr r2, [r0+0x04]
- mov r0, r9
+ mov r0, r10
str r2, [sp]
- mov r2, r7
+ mov r2, r8
; gcrRegs +[r2] movs r1, 0 movs r3, 0 @@ -106,46 +107,46 @@ G_M10252_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r0 r2 r9]
+ ; gcrRegs -[r0 r2 r10]
; gcr arg pop 0
- mov r9, 0 - ldr r0, [r5+0x04] - cmp r0, 0
+ mov r10, 0 + cmp r7, 0
ble SHORT G_M10252_IG12
- ;; size=96 bbWeight=1 PerfScore 39.00 -G_M10252_IG05: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz - add r10, r5, 8 - ; byrRegs +[r10] - lsl r6, r9, 2 - ldr r0, [r10+r6]
+ ;; size=94 bbWeight=1 PerfScore 38.00 +G_M10252_IG05: ; bbWeight=4, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz + add r3, r5, 8 + ; byrRegs +[r3] + str r3, [sp+0x08] + ; GC ptr vars +{V24} + lsl r2, r10, 2 + str r2, [sp+0x14] + ldr r0, [r3+r2]
; gcrRegs +[r0] cmp r0, 0 beq G_M10252_IG19
- movs r3, 0 - str r3, [sp+0x14] // [V07 loc5]
+ movs r1, 0 + str r1, [sp+0x18] // [V07 loc5]
mov r0, r4
- ldr r2, [r4] - ldr r2, [r2+0x2C] - str r2, [sp+0x10] // [V23 cse0] - ldr r1, [r2+0x10] - blx r1 // <unknown method>
+ ldr lr, [r6+0x10] + blx lr // <unknown method> + ; byrRegs -[r3]
; gcr arg pop 0 ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, 0 ble SHORT G_M10252_IG10
- ;; size=40 bbWeight=4 PerfScore 64.00 -G_M10252_IG06: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref - ldr r3, [r7+0x04] - ;; size=2 bbWeight=2 PerfScore 2.00 -G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r2, [sp+0x14] // [V07 loc5] - str r3, [sp+0x0C] // [V26 cse3]
+ ;; size=38 bbWeight=4 PerfScore 60.00 +G_M10252_IG06: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref + ldr r3, [r8+0x04] + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M10252_IG07: ; bbWeight=16, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz + ldr r2, [sp+0x18] // [V07 loc5] + str r3, [sp+0x10] // [V26 cse3]
cmp r2, r3
- bhs SHORT G_M10252_IG17 - add r0, r7, 8
+ bhs G_M10252_IG17 + add r0, r8, 8
; byrRegs +[r0]
- str r2, [sp+0x14] // [V07 loc5]
+ str r2, [sp+0x18] // [V07 loc5]
lsls r1, r2, 2 ldr r0, [r0+r1] ; gcrRegs +[r0] @@ -155,17 +156,21 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 { ldr r1, [r1+0x10] blx r1 // <unknown method> ; gcr arg pop 0
- str r0, [sp+0x08] // [V21 tmp13]
+ str r0, [sp+0x0C] // [V21 tmp13]
; GC ptr vars +{V21}
- ldr r0, [r10+r6] - ldr r2, [r0] - ldr r2, [r2+0x2C] - ldr r2, [r2+0x10] - blx r2 // <unknown method>
+ ldr r2, [sp+0x08] // [V24 cse1] + ; byrRegs +[r2] + ldr r1, [sp+0x14] // [V25 cse2] + ldr r0, [r2+r1] + ldr lr, [r0] + ldr lr, [lr+0x2C] + ldr lr, [lr+0x10] + blx lr // <unknown method> + ; byrRegs -[r2]
; gcr arg pop 0 mov r1, r0 ; gcrRegs +[r1]
- ldr r0, [sp+0x08] // [V21 tmp13]
+ ldr r0, [sp+0x0C] // [V21 tmp13]
ldr r3, [r0] ldr r3, [r3+0x2C] ldr r3, [r3+0x08] @@ -175,77 +180,84 @@ G_M10252_IG07: ; bbWeight=16, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 { ; gcr arg pop 0 cmp r0, 0 bne SHORT G_M10252_IG09
- ldr r3, [sp+0x14] // [V07 loc5]
+ ldr r3, [sp+0x18] // [V07 loc5]
adds r3, r3, 1
- str r3, [sp+0x14] // [V07 loc5]
+ str r3, [sp+0x18] // [V07 loc5]
mov r0, r4 ; gcrRegs +[r0]
- ldr r2, [sp+0x10] // [V23 cse0] - ldr r1, [r2+0x10] - blx r1 // <unknown method>
+ ldr r2, [r6+0x10] + blx r2 // <unknown method>
; gcr arg pop 0 ldr r1, [r0+0x04]
- ldr r0, [sp+0x14] // [V07 loc5]
+ ldr r0, [sp+0x18] // [V07 loc5]
; gcrRegs -[r0] cmp r1, r0
- str r0, [sp+0x14] // [V07 loc5] - ldr r3, [sp+0x0C] // [V26 cse3]
+ str r0, [sp+0x18] // [V07 loc5] + ldr r3, [sp+0x10] // [V26 cse3]
bgt SHORT G_M10252_IG07
- ;; size=82 bbWeight=16 PerfScore 624.00 -G_M10252_IG08: ; bbWeight=2, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=90 bbWeight=16 PerfScore 640.00 +G_M10252_IG08: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M10252_IG10 ;; size=2 bbWeight=2 PerfScore 2.00
-G_M10252_IG09: ; bbWeight=4, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0400 {r10}, byref, isz - ldr r1, [r10+r6]
+G_M10252_IG09: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
...

+8 (+5.13%) : 35998.dasm - Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)

@@ -22,11 +22,11 @@ ; V11 cse0 [V11,T07] ( 3, 1.50) ref -> r0 "CSE - moderate" ; V12 cse1 [V12,T04] ( 5, 2.50) ref -> r0 multi-def "CSE - aggressive" ;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M65523_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2,r3}
- push {r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r7,r8,r11,lr}
add r11, sp, 20 ldr r5, [sp+0x3C] // [V02 arg2] ; gcrRegs +[r5] @@ -72,30 +72,30 @@ G_M65523_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6}, ; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M65523_IG10
- ldr r5, [sp+0x40] // [V03 arg3] - ldr r0, [r5+0x40]
+ ldr r8, [sp+0x40] // [V03 arg3] + ; gcrRegs +[r8] + ldr r0, [r8+0x40]
movw r4, 0xd1ff movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r5] - ldrb r0, [r0+0x29] - ; gcrRegs -[r0] - cmp r0, 0
+ ; gcrRegs -[r5 r8] + ldrb r3, [r0+0x29] + cmp r3, 0
bne SHORT G_M65523_IG07 b SHORT G_M65523_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
+ ;; size=36 bbWeight=0.50 PerfScore 6.50
G_M65523_IG06: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs +[r5 r7] - ldr r4, [sp+0x40] // [V03 arg3] - ; gcrRegs +[r4] - ldr r0, [r4+0x40]
+ ; gcrRegs -[r0] +[r5 r7] + ldr r8, [sp+0x40] // [V03 arg3] + ; gcrRegs +[r8] + ldr r0, [r8+0x40]
; gcrRegs +[r0] movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
+ ; gcrRegs -[r8]
ldrb r0, [r0+0x28] ; gcrRegs -[r0] cmp r0, 0 @@ -113,7 +113,7 @@ G_M65523_IG06: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0040 {r ; gcrRegs -[r0-r1 r5 r7] cmp r0, 0 beq SHORT G_M65523_IG10
- ;; size=44 bbWeight=0.50 PerfScore 9.50
+ ;; size=48 bbWeight=0.50 PerfScore 9.50
G_M65523_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref movs r0, 0 strb r0, [r6] @@ -123,7 +123,7 @@ G_M65523_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M65523_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r11,lr}
+ pop {r4,r5,r6,r7,r8,r11,lr}
add sp, 12 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50 @@ -134,12 +134,12 @@ G_M65523_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M65523_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[r6]
- pop {r3,r4,r5,r6,r7,r11,lr}
+ pop {r4,r5,r6,r7,r8,r11,lr}
add sp, 12 bx lr ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 156, prolog size 10, PerfScore 38.00, instruction count 68, allocated bytes for code 156 (MethodHash=19ec000c) for method Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 38.00, instruction count 68, allocated bytes for code 164 (MethodHash=19ec000c) for method Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -151,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,11 +162,11 @@ Unwind Info: Condition : 14 (0xe) (always) Epilog Start Index : 5 (0x05) ---- Unwind codes ----
- A8 F8 pop {r3,r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
EC 0E pop {r1,r2,r3} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 F8 pop {r3,r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16 FD end + nop ; opsize 16 FF end

realworld.run.linux.arm.checked.mch

-24 (-32.43%) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,78 +8,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Byte> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Byte> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M19224_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M19224_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M19224_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r0] - ldrb r5, [r0] - cmp r1, r3 - beq SHORT G_M19224_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4
+G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=16 bbWeight=0.25 PerfScore 1.50 -G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldrb r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M19224_IG09
+ ; byrRegs +[r0] + ldrb r0, [r0] + ; byrRegs -[r0] + ldrb r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M19224_IG07
movs r0, 0
- b SHORT G_M19224_IG10 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M19224_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ b SHORT G_M19224_IG08 + ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M19224_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19224_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +86,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,78 +8,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Int32> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Int32> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M40448_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r0] - ldr r5, [r0] - cmp r1, r3 - beq SHORT G_M40448_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4
+G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=16 bbWeight=0.25 PerfScore 1.50 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M40448_IG09
+ ; byrRegs +[r0] + ldr r0, [r0] + ; byrRegs -[r0] + ldr r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M40448_IG07
movs r0, 0
- b SHORT G_M40448_IG10 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M40448_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ b SHORT G_M40448_IG08 + ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M40448_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40448_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +86,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-24 (-32.43%) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,78 +8,61 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> r0 this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> r1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r1 class-hnd "spilling QMark2" <System.Boolean> -; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r5 "impAppendStmt" -; V05 cse0 [V05,T05] ( 3, 1 ) int -> r1 "CSE - moderate" -; V06 cse1 [V06,T04] ( 4, 1.25) int -> r3 "CSE - moderate"
+; V03 tmp1 [V03,T01] ( 3, 4.50) ref -> r3 class-hnd "spilling QMark2" <System.Boolean> +; V04 tmp2 [V04,T03] ( 2, 2 ) int -> r0 "impAppendStmt"
; ; Lcl frame size = 0 G_M31030_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8 - mov r4, r1 - ; gcrRegs +[r4] - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz - ; byrRegs +[r0] - mov r1, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r1]
- cmp r1, 0
+ ; byrRegs +[r0] + mov r3, r1 + ; gcrRegs +[r3] + cmp r3, 0
beq SHORT G_M31030_IG04 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=0012 {r1 r4}, byrefRegs=0001 {r0}, byref, isz - ldr r1, [r1] - ; gcrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r1, r3
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, byref, isz + ldr r3, [r3] + ; gcrRegs -[r3] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2
beq SHORT G_M31030_IG06 ;; size=14 bbWeight=0.25 PerfScore 1.25 G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]
+ ; gcrRegs -[r1]
; byrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; gcrRegs +[r4] - ; byrRegs +[r0] - ldrb r5, [r0] - cmp r1, r3 - beq SHORT G_M31030_IG08 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ; byrRegs -[r0] - mov r1, r4
+G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r1]
- mov r0, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // CORINFO_HELP_UNBOX - ; gcrRegs -[r1] - ;; size=16 bbWeight=0.25 PerfScore 1.50 -G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldrb r0, [r4+0x04] - cmp r5, r0 - beq SHORT G_M31030_IG09
+ ; byrRegs +[r0] + ldrb r0, [r0] + ; byrRegs -[r0] + ldrb r3, [r1+0x04] + cmp r0, r3 + beq SHORT G_M31030_IG07
movs r0, 0
- b SHORT G_M31030_IG10 - ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M31030_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ b SHORT G_M31030_IG08 + ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M31030_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r1]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M31030_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r4,r5,r11,pc}
+G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 74, prolog size 8, PerfScore 14.75, instruction count 29, allocated bytes for code 74 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 11.25, instruction count 20, allocated bytes for code 50 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,7 +86,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+18 (+2.06%) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:g_visitMemberInitializer|1690(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)

@@ -9,26 +9,26 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 11, 7 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
-; V01 arg1 [V01,T07] ( 4, 3 ) int -> r7 single-def
+; V01 arg1 [V01,T06] ( 4, 3 ) int -> r7 single-def
; V02 arg2 [V02,T05] ( 4, 3.50) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V03 arg3 [V03,T02] ( 7, 5.50) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator> ; V04 arg4 [V04,T18] ( 4, 2.50) ubyte -> r8 single-def ;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerMember>
-; V06 loc1 [V06,T06] ( 8, 5 ) ref -> [sp+0x68] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V06 loc1 [V06,T07] ( 7, 4.12) ref -> [sp+0x74] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
;* V07 loc2 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
-; V08 loc3 [V08,T19] ( 3, 2.50) ref -> [sp+0x64] class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate> -; V09 loc4 [V09,T12] ( 4, 3 ) ref -> registers class-hnd <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol]>
+; V08 loc3 [V08,T19] ( 3, 2.50) ref -> [sp+0x70] class-hnd <Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate> +; V09 loc4 [V09,T11] ( 4, 3 ) ref -> registers class-hnd <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V10 loc5 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V11 loc6 [V11 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V12 loc7 [V12,T30] ( 3, 1.50) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase>
+; V12 loc7 [V12,T29] ( 3, 1.50) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (56) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T10] ( 3, 4 ) ref -> r1 single-def "CASTCLASS eval op1" ; V15 tmp2 [V15,T43] ( 3, 1 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V16 tmp3 [V16,T00] ( 13, 16.50) ref -> r9 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerMember> ;* V17 tmp4 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V18 tmp5 [V18 ] ( 0, 0 ) struct ( 4) zero-ref "bubbling QMark2" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V19 tmp6 [V19,T26] ( 3, 2 ) int -> r1 "fgMakeTemp is creating a new local variable" -; V20 tmp7 [V20,T11] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
+; V19 tmp6 [V19,T42] ( 3, 1.25) int -> r0 "fgMakeTemp is creating a new local variable" +; V20 tmp7 [V20,T16] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref single-def ;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp10 [V23 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> @@ -41,93 +41,96 @@ ;* V30 tmp17 [V30 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ;* V31 tmp18 [V31 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[int]> ;* V32 tmp19 [V32 ] ( 0, 0 ) struct (16) zero-ref double-align "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp20 [V33 ] ( 3, 3 ) struct (16) [sp+0xA8] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]> -;* V34 tmp21 [V34,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V33 tmp20 [V33 ] ( 3, 3 ) struct (16) [sp+0xB8] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]> +;* V34 tmp21 [V34,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V36 tmp23 [V36 ] ( 3, 3 ) struct ( 8) [sp+0xA0] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]>
+; V36 tmp23 [V36 ] ( 3, 3 ) struct ( 8) [sp+0xB0] do-not-enreg[HS] must-init hidden-struct-arg "dup spill" <System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]>
;* V37 tmp24 [V37 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]> ;* V38 tmp25 [V38 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]>
-; V39 tmp26 [V39,T16] ( 3, 3 ) ubyte -> [sp+0x9C] spill-single-def "Inlining Arg"
+; V39 tmp26 [V39,T15] ( 3, 3 ) ubyte -> [sp+0xAC] spill-single-def "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[int]> ;* V41 tmp28 [V41 ] ( 0, 0 ) struct ( 4) zero-ref single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]> ; V42 tmp29 [V42,T08] ( 4, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder> ;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref single-def ; V44 tmp31 [V44,T09] ( 4, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V45 tmp32 [V45,T27] ( 2, 2 ) ref -> [sp+0x60] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V45 tmp32 [V45,T26] ( 2, 2 ) ref -> [sp+0x6C] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V46 tmp33 [V46 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op double-align "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V47 tmp34 [V47,T28] ( 2, 2 ) int -> [sp+0x98] spill-single-def "impAppendStmt"
+; V47 tmp34 [V47,T27] ( 2, 2 ) int -> [sp+0xA8] spill-single-def "impAppendStmt"
;* V48 tmp35 [V48 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot> ;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>> ;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref single-def ;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref single-def ;* V52 tmp39 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-; V53 tmp40 [V53,T31] ( 3, 1.50) ref -> r6
+; V53 tmp40 [V53,T30] ( 3, 1.50) ref -> r6
; V54 tmp41 [V54,T03] ( 7, 7 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot> ;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector> ;* V56 tmp43 [V56 ] ( 0, 0 ) struct (16) zero-ref double-align "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
-; V57 tmp44 [V57,T32] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
+; V57 tmp44 [V57,T31] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
;* V58 tmp45 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector> ;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]> ;* V60 tmp47 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V61 tmp48 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V62 tmp49 [V62 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V63 tmp50 [V63,T29] ( 2, 2 ) int -> r3 "Inlining Arg" -; V64 tmp51 [V64,T20] ( 3, 2.50) ref -> [sp+0x5C] "field V07.array (fldOffset=0x0)" P-INDEP
+; V63 tmp50 [V63,T28] ( 2, 2 ) int -> r3 "Inlining Arg" +; V64 tmp51 [V64,T20] ( 3, 2.50) ref -> [sp+0x68] "field V07.array (fldOffset=0x0)" P-INDEP
;* V65 tmp52 [V65 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP ;* V66 tmp53 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V11.array (fldOffset=0x0)" P-INDEP
-; V67 tmp54 [V67,T22] ( 4, 2 ) ref -> [sp+0x58] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP -; V68 tmp55 [V68,T23] ( 4, 2 ) ref -> [sp+0x54] spill-single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V67 tmp54 [V67,T22] ( 4, 2 ) ref -> [sp+0x64] spill-single-def "field V17.array (fldOffset=0x0)" P-INDEP +; V68 tmp55 [V68,T23] ( 4, 2 ) ref -> [sp+0x60] spill-single-def "field V18.array (fldOffset=0x0)" P-INDEP
;* V69 tmp56 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.array (fldOffset=0x0)" P-INDEP ;* V70 tmp57 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP ;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref "field V28.array (fldOffset=0x0)" P-INDEP ;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V29.array (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T24] ( 4, 2 ) ref -> [sp+0x50] single-def "field V30.array (fldOffset=0x0)" P-INDEP -; V74 tmp61 [V74,T33] ( 3, 1.50) ref -> [sp+0x4C] spill-single-def "field V31.array (fldOffset=0x0)" P-INDEP -; V75 tmp62 [V75,T17] ( 5, 2.50) long -> [sp+0x90] do-not-enreg[F] single-def "field V32._bits0 (fldOffset=0x0)" P-INDEP -; V76 tmp63 [V76,T34] ( 3, 1.50) ref -> [sp+0x48] spill-single-def "field V32._bits (fldOffset=0x8)" P-INDEP -; V77 tmp64 [V77,T37] ( 3, 1.50) int -> [sp+0x8C] spill-single-def "field V32._capacity (fldOffset=0xc)" P-INDEP -; V78 tmp65 [V78,T55] ( 1, 1 ) ref -> [sp+0xA8] do-not-enreg[H] hidden-struct-arg "field V33.Item1 (fldOffset=0x0)" P-DEP -; V79 tmp66 [V79,T39] ( 2, 1.50) ref -> [sp+0xAC] do-not-enreg[H] hidden-struct-arg "field V33.Item4 (fldOffset=0x4)" P-DEP -; V80 tmp67 [V80,T56] ( 1, 1 ) ubyte -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V33.Item3 (fldOffset=0x8)" P-DEP -; V81 tmp68 [V81,T40] ( 2, 1.50) ref -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V33.Item2 (fldOffset=0xc)" P-DEP
+; V73 tmp60 [V73,T24] ( 4, 2 ) ref -> [sp+0x5C] single-def "field V30.array (fldOffset=0x0)" P-INDEP +; V74 tmp61 [V74,T32] ( 3, 1.50) ref -> [sp+0x58] spill-single-def "field V31.array (fldOffset=0x0)" P-INDEP +; V75 tmp62 [V75,T17] ( 5, 2.50) long -> [sp+0xA0] do-not-enreg[F] single-def "field V32._bits0 (fldOffset=0x0)" P-INDEP +; V76 tmp63 [V76,T33] ( 3, 1.50) ref -> [sp+0x54] spill-single-def "field V32._bits (fldOffset=0x8)" P-INDEP +; V77 tmp64 [V77,T36] ( 3, 1.50) int -> [sp+0x9C] spill-single-def "field V32._capacity (fldOffset=0xc)" P-INDEP +; V78 tmp65 [V78,T56] ( 1, 1 ) ref -> [sp+0xB8] do-not-enreg[H] hidden-struct-arg "field V33.Item1 (fldOffset=0x0)" P-DEP +; V79 tmp66 [V79,T38] ( 2, 1.50) ref -> [sp+0xBC] do-not-enreg[H] hidden-struct-arg "field V33.Item4 (fldOffset=0x4)" P-DEP +; V80 tmp67 [V80,T57] ( 1, 1 ) ubyte -> [sp+0xC0] do-not-enreg[H] hidden-struct-arg "field V33.Item3 (fldOffset=0x8)" P-DEP +; V81 tmp68 [V81,T39] ( 2, 1.50) ref -> [sp+0xC4] do-not-enreg[H] hidden-struct-arg "field V33.Item2 (fldOffset=0xc)" P-DEP
; V82 tmp69 [V82,T21] ( 3, 2.50) ref -> r0 single-def "field V35.array (fldOffset=0x0)" P-INDEP
-; V83 tmp70 [V83,T41] ( 2, 1.50) ref -> [sp+0xA0] do-not-enreg[H] hidden-struct-arg "field V36.Item1 (fldOffset=0x0)" P-DEP -; V84 tmp71 [V84,T42] ( 2, 1.50) ref -> [sp+0xA4] do-not-enreg[H] hidden-struct-arg "field V36.Item2 (fldOffset=0x4)" P-DEP -; V85 tmp72 [V85,T35] ( 3, 1.50) ref -> [sp+0x44] spill-single-def "field V37.array (fldOffset=0x0)" P-INDEP -; V86 tmp73 [V86,T44] ( 2, 1 ) ref -> [sp+0x40] spill-single-def "field V38.array (fldOffset=0x0)" P-INDEP -; V87 tmp74 [V87,T45] ( 2, 1 ) ref -> r3 "field V40.array (fldOffset=0x0)" P-INDEP -; V88 tmp75 [V88,T46] ( 2, 1 ) ref -> r0 "field V41.array (fldOffset=0x0)" P-INDEP -; V89 tmp76 [V89,T47] ( 2, 1 ) ref -> r2 single-def "field V48.VariableState (fldOffset=0x0)" P-INDEP -; V90 tmp77 [V90,T49] ( 2, 1 ) int -> r3 single-def "field V48.SharedStateIndex (fldOffset=0x4)" P-INDEP
+; V83 tmp70 [V83,T40] ( 2, 1.50) ref -> [sp+0xB0] do-not-enreg[H] hidden-struct-arg "field V36.Item1 (fldOffset=0x0)" P-DEP +; V84 tmp71 [V84,T41] ( 2, 1.50) ref -> [sp+0xB4] do-not-enreg[H] hidden-struct-arg "field V36.Item2 (fldOffset=0x4)" P-DEP +; V85 tmp72 [V85,T34] ( 3, 1.50) ref -> [sp+0x50] spill-single-def "field V37.array (fldOffset=0x0)" P-INDEP +; V86 tmp73 [V86,T45] ( 2, 1 ) ref -> [sp+0x4C] spill-single-def "field V38.array (fldOffset=0x0)" P-INDEP +; V87 tmp74 [V87,T46] ( 2, 1 ) ref -> r3 "field V40.array (fldOffset=0x0)" P-INDEP +; V88 tmp75 [V88,T47] ( 2, 1 ) ref -> r0 "field V41.array (fldOffset=0x0)" P-INDEP +; V89 tmp76 [V89,T48] ( 2, 1 ) ref -> r2 single-def "field V48.VariableState (fldOffset=0x0)" P-INDEP +; V90 tmp77 [V90,T50] ( 2, 1 ) int -> r3 single-def "field V48.SharedStateIndex (fldOffset=0x4)" P-INDEP
;* V91 tmp78 [V91 ] ( 0, 0 ) long -> zero-ref single-def "field V55._bits0 (fldOffset=0x0)" P-INDEP ;* V92 tmp79 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._bits (fldOffset=0x8)" P-INDEP ;* V93 tmp80 [V93 ] ( 0, 0 ) int -> zero-ref single-def "field V55._capacity (fldOffset=0xc)" P-INDEP ;* V94 tmp81 [V94 ] ( 0, 0 ) long -> zero-ref single-def "field V56._bits0 (fldOffset=0x0)" P-INDEP ;* V95 tmp82 [V95 ] ( 0, 0 ) ref -> zero-ref single-def "field V56._bits (fldOffset=0x8)" P-INDEP ;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref single-def "field V56._capacity (fldOffset=0xc)" P-INDEP
-; V97 tmp84 [V97,T38] ( 3, 1.50) long -> [sp+0x80] do-not-enreg[F] single-def "field V58._bits0 (fldOffset=0x0)" P-INDEP -; V98 tmp85 [V98,T48] ( 2, 1 ) ref -> [sp+0x3C] spill-single-def "field V58._bits (fldOffset=0x8)" P-INDEP -; V99 tmp86 [V99,T50] ( 2, 1 ) int -> [sp+0x7C] spill-single-def "field V58._capacity (fldOffset=0xc)" P-INDEP -; V100 tmp87 [V100,T36] ( 3, 1.50) ref -> r6 single-def "V46.[000..004)" -; V101 tmp88 [V101,T51] ( 2, 1 ) int -> [sp+0x78] spill-single-def "V46.[004..008)"
+; V97 tmp84 [V97,T37] ( 3, 1.50) long -> [sp+0x90] do-not-enreg[F] single-def "field V58._bits0 (fldOffset=0x0)" P-INDEP +; V98 tmp85 [V98,T49] ( 2, 1 ) ref -> [sp+0x48] spill-single-def "field V58._bits (fldOffset=0x8)" P-INDEP +; V99 tmp86 [V99,T51] ( 2, 1 ) int -> [sp+0x8C] spill-single-def "field V58._capacity (fldOffset=0xc)" P-INDEP +; V100 tmp87 [V100,T35] ( 3, 1.50) ref -> r6 single-def "V46.[000..004)" +; V101 tmp88 [V101,T52] ( 2, 1 ) int -> [sp+0x88] spill-single-def "V46.[004..008)"
;* V102 tmp89 [V102 ] ( 0, 0 ) long -> zero-ref single-def "V46.[008..016)"
-; V103 tmp90 [V103,T25] ( 4, 2 ) ref -> [sp+0x38] spill-single-def "V46.[016..020)" -; V104 tmp91 [V104,T52] ( 2, 1 ) int -> [sp+0x74] spill-single-def "V46.[020..024)"
+; V103 tmp90 [V103,T25] ( 4, 2 ) ref -> [sp+0x44] spill-single-def "V46.[016..020)" +; V104 tmp91 [V104,T53] ( 2, 1 ) int -> [sp+0x84] spill-single-def "V46.[020..024)"
; V105 tmp92 [V105,T04] ( 6, 6 ) byref -> r3 single-def "Spilling address for field-by-field copy"
-;* V106 rat0 [V106 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP -;* V107 rat1 [V107 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP -; V108 rat2 [V108,T53] ( 2, 1 ) int -> [sp+0x70] spill-single-def "field V102.lo (fldOffset=0x0)" P-INDEP -; V109 rat3 [V109,T54] ( 2, 1 ) int -> [sp+0x6C] spill-single-def "field V102.hi (fldOffset=0x4)" P-INDEP -; V110 rat4 [V110,T13] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" -; V111 rat5 [V111,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V112 rat6 [V112,T15] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V106 cse0 [V106,T44] ( 3, 1 ) int -> [sp+0x80] spill-single-def "CSE - conservative" +;* V107 rat0 [V107 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP +;* V108 rat1 [V108 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP +; V109 rat2 [V109,T54] ( 2, 1 ) int -> [sp+0x7C] spill-single-def "field V102.lo (fldOffset=0x0)" P-INDEP +; V110 rat3 [V110,T55] ( 2, 1 ) int -> [sp+0x78] spill-single-def "field V102.hi (fldOffset=0x4)" P-INDEP +; V111 rat4 [V111,T12] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" +; V112 rat5 [V112,T13] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V113 rat6 [V113,T14] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; TEMP_02 int -> [r11-0xA8] +; TEMP_01 int -> [r11-0xAC]
;
-; Lcl frame size = 188
+; Lcl frame size = 204
G_M62268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 188 - add r11, sp, 216
+ sub sp, 204 + add r11, sp, 232
sub r6, r11, 56 movs r4, 0 movs r5, 0 @@ -141,7 +144,7 @@ G_M62268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r6] mov r5, r3 ; gcrRegs +[r5]
- ldr r8, [sp+0xE0] // [V04 arg4]
+ ldr r8, [sp+0xF0] // [V04 arg4]
;; size=36 bbWeight=1 PerfScore 14.00 G_M62268_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r5+0x10] @@ -171,7 +174,7 @@ G_M62268_IG04: ; bbWeight=1, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 ; gcrRegs -[r1] mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x68]
+ str r3, [sp+0x74]
; GC ptr vars +{V06} movs r2, 0 mov lr, 0 @@ -179,48 +182,52 @@ G_M62268_IG04: ; bbWeight=1, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 cmp r0, 0 beq G_M62268_IG12 ;; size=36 bbWeight=1 PerfScore 13.00
-G_M62268_IG05: ; bbWeight=0.50, gcVars=0000000000000040 {V06}, gcrefRegs=427D {r0 r2 r3 r4 r5 r6 r9 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62268_IG05: ; bbWeight=0.50, gcVars=0000000000000080 {V06}, gcrefRegs=427D {r0 r2 r3 r4 r5 r6 r9 lr}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2 lr] ldr r0, [r0+0x04] ; gcrRegs -[r0] cmp r0, 0 beq G_M62268_IG12 ldr r2, [r9+0x1C]
- str r2, [sp+0x58] // [V67 tmp54]
+ str r2, [sp+0x64] // [V67 tmp54]
; GC ptr vars +{V67} ldr lr, [r9+0x24]
- str lr, [sp+0x54] // [V68 tmp55]
+ str lr, [sp+0x60] // [V68 tmp55]
; GC ptr vars +{V68} mov r0, r3 ; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M62268_IG08 ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M62268_IG06: ; bbWeight=0.25, gcVars=0000000000C00040 {V06 V67 V68}, gcrefRegs=0279 {r0 r3 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62268_IG06: ; bbWeight=0.25, gcVars=0000000000C00080 {V06 V67 V68}, gcrefRegs=0279 {r0 r3 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r2 lr]
- ldr r0, [r0]
+ ldr r12, [r0] + str r12, [sp+0x80] // [V106 cse0] + movw r0, 0xd1ff
; gcrRegs -[r0]
- movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r0, r1
+ movt r0, 0xd1ff + cmp r12, r0
beq SHORT G_M62268_IG09
- ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M62268_IG07: ; bbWeight=0.50, gcrefRegs=0278 {r3 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - mov r0, r1
+ ;; size=20 bbWeight=0.25 PerfScore 1.50 +G_M62268_IG07: ; bbWeight=0.12, gcrefRegs=0278 {r3 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + str r0, [sp+0x40] // [TEMP_02]
mov r1, r3 ; gcrRegs +[r1]
- movw r12, 0xd1ff - movt r12, 0xd1ff
+ movw r0, 0xd1ff + movt r0, 0xd1ff + str r0, [sp+0x3C] // [TEMP_01] + ldr r0, [sp+0x40] // [TEMP_02] + ldr r12, [sp+0x3C] // [TEMP_01]
blx r12 // CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[r1 r3] +[r0] ...

+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
...

+12 (+3.35%) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)

@@ -8,44 +8,44 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 10, 6.50) struct ( 8) [sp+0x20] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00 ] ( 9, 6 ) struct ( 8) [sp+0x20] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V01 arg1 [V01 ] ( 10, 6 ) struct ( 8) [sp+0x28] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T13] ( 2, 2 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> -; V03 arg3 [V03,T08] ( 3, 2 ) byref -> r4 single-def -; V04 loc0 [V04,T20] ( 3, 1.50) ubyte -> r7 -; V05 loc1 [V05,T21] ( 3, 1.50) int -> r9
+; V02 arg2 [V02,T14] ( 2, 2 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]> +; V03 arg3 [V03,T09] ( 3, 2 ) byref -> r4 single-def +; V04 loc0 [V04,T21] ( 3, 1.50) ubyte -> r7 +; V05 loc1 [V05,T22] ( 3, 1.50) int -> r9
;* V06 loc2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T05] ( 5, 2.50) byref -> r7 -; V09 tmp2 [V09,T22] ( 3, 1.50) int -> r0
+; V08 tmp1 [V08,T05] ( 5, 2.50) byref -> r8 +; V09 tmp2 [V09,T23] ( 3, 1.50) int -> r0
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V11 tmp4 [V11,T03] ( 3, 3 ) int -> r0 "Span.get_Item index" ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V13 tmp6 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V14 tmp7 [V14,T09] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" -; V15 tmp8 [V15,T14] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V14 tmp7 [V14,T10] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +; V15 tmp8 [V15,T15] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp11 [V18,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V18 tmp11 [V18,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp13 [V20,T15] ( 2, 2 ) int -> r3 "Span.get_Item index" -; V21 tmp14 [V21,T16] ( 2, 2 ) ushort -> r7 "Inlining Arg" -; V22 tmp15 [V22,T23] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
+; V20 tmp13 [V20,T16] ( 2, 2 ) int -> r3 "Span.get_Item index" +; V21 tmp14 [V21,T17] ( 2, 2 ) ushort -> r8 "Inlining Arg" +; V22 tmp15 [V22,T24] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp17 [V24,T17] ( 2, 2 ) ushort -> r7 "Inlining Arg"
+; V24 tmp17 [V24,T18] ( 2, 2 ) ushort -> r7 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V26 tmp19 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp20 [V27,T10] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" -; V28 tmp21 [V28,T18] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V27 tmp20 [V27,T11] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +; V28 tmp21 [V28,T19] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V30 tmp23 [V30,T01] ( 4, 4 ) int -> r0 "Inlining Arg" ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V32 tmp25 [V32,T04] ( 3, 3 ) int -> r6 "Inlining Arg"
-; V33 tmp26 [V33,T11] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
+; V33 tmp26 [V33,T12] ( 2, 2 ) byref -> r5 single-def "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V36 tmp29 [V36,T12] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" -; V37 tmp30 [V37,T19] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V36 tmp29 [V36,T13] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +; V37 tmp30 [V37,T20] ( 2, 2 ) int -> r2 "Inlining Arg"
;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP @@ -53,10 +53,10 @@ ;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP ;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
-; V45 tmp38 [V45,T27] ( 2, 1 ) byref -> r0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP -; V46 tmp39 [V46,T24] ( 3, 1.50) int -> r3 "field V19._length (fldOffset=0x4)" P-INDEP -; V47 tmp40 [V47,T28] ( 2, 1 ) byref -> r0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP -; V48 tmp41 [V48,T29] ( 2, 1 ) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP
+; V45 tmp38 [V45,T28] ( 2, 1 ) byref -> r0 single-def "field V19._reference (fldOffset=0x0)" P-INDEP +; V46 tmp39 [V46,T25] ( 3, 1.50) int -> r7 "field V19._length (fldOffset=0x4)" P-INDEP +; V47 tmp40 [V47,T29] ( 2, 1 ) byref -> r0 single-def "field V23._reference (fldOffset=0x0)" P-INDEP +; V48 tmp41 [V48,T30] ( 2, 1 ) int -> r3 "field V23._length (fldOffset=0x4)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V51 tmp44 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP @@ -65,10 +65,11 @@ ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP ; V55 tmp48 [V55,T02] ( 5, 3 ) byref -> r5 single-def "V02.[000..004)" ; V56 tmp49 [V56,T00] ( 8, 4.50) int -> r6 "V02.[004..008)"
-; V57 cse0 [V57,T25] ( 3, 1.50) int -> r8 "CSE - moderate" -; V58 cse1 [V58,T06] ( 4, 2 ) int -> r2 "CSE - moderate" -; V59 cse2 [V59,T07] ( 4, 2 ) int -> r2 "CSE - moderate" -; V60 cse3 [V60,T26] ( 3, 1.50) int -> r2 "CSE - moderate"
+; V57 cse0 [V57,T26] ( 3, 1.50) int -> r8 "CSE - moderate" +; V58 cse1 [V58,T07] ( 4, 2 ) int -> r2 "CSE - moderate" +; V59 cse2 [V59,T06] ( 3, 2.50) int -> r7 "CSE - aggressive" +; V60 cse3 [V60,T08] ( 4, 2 ) int -> r2 "CSE - moderate" +; V61 cse4 [V61,T27] ( 3, 1.50) int -> r2 "CSE - moderate"
; ; Lcl frame size = 0 @@ -85,8 +86,8 @@ G_M17254_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ldr r6, [sp+0x34] movs r2, 0 str r2, [r4]
- ldr r2, [sp+0x24] - cmp r2, 0
+ ldr r7, [sp+0x24] + cmp r7, 0
bne SHORT G_M17254_IG04 ;; size=14 bbWeight=1 PerfScore 7.00 G_M17254_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz @@ -99,22 +100,22 @@ G_M17254_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} ldr r2, [sp+0x2C] cmp r2, 0 bne SHORT G_M17254_IG07
- add r7, sp, 32 - ; byrRegs +[r7]
+ addw r8, sp, 32 + ; byrRegs +[r8]
b SHORT G_M17254_IG06
- ;; size=10 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M17254_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- ; byrRegs -[r7] - add r7, sp, 40 - ; byrRegs +[r7] - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 r7}, byref, isz - ldr r2, [r7+0x04]
+ ; byrRegs -[r8] + addw r8, sp, 40 + ; byrRegs +[r8] + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0130 {r4 r5 r8}, byref, isz + ldr r2, [r8+0x04]
cmp r6, r2 blt SHORT G_M17254_IG17 cmp r2, r6 bhi G_M17254_IG27
- ldr r1, [r7]
+ ldr r1, [r8]
; byrRegs +[r1] lsls r2, r2, 1 mov r0, r5 @@ -124,31 +125,30 @@ G_M17254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00B0 {r4 r5 ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0-r1 r5]
- ldr r0, [r7+0x04]
+ ldr r0, [r8+0x04]
str r0, [r4] b SHORT G_M17254_IG23
- ;; size=36 bbWeight=0.50 PerfScore 7.50
+ ;; size=42 bbWeight=0.50 PerfScore 7.50
G_M17254_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- ; byrRegs -[r7] +[r5]
+ ; byrRegs -[r8] +[r5]
ldr r0, [sp+0x20] ; byrRegs +[r0]
- ldr r3, [sp+0x24] - cmp r3, 0
+ cmp r7, 0
ble SHORT G_M17254_IG08
- subs r3, r3, 1
+ subs r3, r7, 1
lsls r3, r3, 1
- ldrh r7, [r0+r3]
+ ldrh r8, [r0+r3]
movs r0, 1 ; byrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- cmp r7, 47
+ cmp r8, 47
bne SHORT G_M17254_IG08 movs r0, 0 b SHORT G_M17254_IG14
- ;; size=36 bbWeight=0.50 PerfScore 8.00
+ ;; size=38 bbWeight=0.50 PerfScore 7.50
G_M17254_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz ldr r0, [sp+0x28] ; byrRegs +[r0] @@ -300,7 +300,7 @@ G_M17254_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 10, PerfScore 74.50, instruction count 151, allocated bytes for code 358 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
+; Total bytes of code 370, prolog size 10, PerfScore 74.00, instruction count 150, allocated bytes for code 370 (MethodHash=7c1abc99) for method System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -312,7 +312,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 179 (0x000b3) Actual length = 358 (0x000166)
+ Function Length : 185 (0x000b9) Actual length = 370 (0x000172)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 87 63 15 9 -516 +172
benchmarks.run_pgo.linux.arm.checked.mch 1,218 522 404 292 -4,332 +3,352
benchmarks.run_tiered.linux.arm.checked.mch 81 58 15 8 -514 +166
coreclr_tests.run.linux.arm.checked.mch 809 499 152 158 -4,844 +1,278
libraries.crossgen2.linux.arm.checked.mch 205 127 26 52 -1,132 +194
libraries.pmi.linux.arm.checked.mch 475 274 88 113 -2,676 +620
libraries_tests.run.linux.arm.Release.mch 4,683 2,535 1,060 1,088 -21,988 +8,140
librariestestsnotieredcompilation.run.linux.arm.Release.mch 1,004 607 146 251 -4,246 +1,080
realworld.run.linux.arm.checked.mch 85 42 26 17 -396 +290
8,647 4,727 1,932 1,988 -40,644 +15,292

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,432 56,729 102,703 3,201 (1.97%) 3,282 (2.02%)
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,979 259,195 212,784 7,170 (1.50%) 7,184 (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 709,953 442,672 267,281 16,195 (2.23%) 16,473 (2.27%)
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,012 829,328 1,409,684 71,273 (3.08%) 71,652 (3.10%)

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: 15289996 (overridden on cmd)
Total bytes of delta: -344 (-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)
          24 : 5214.dasm (0.41 % of base)
          20 : 3107.dasm (1.40 % of base)
          16 : 26523.dasm (0.62 % of base)
          14 : 2771.dasm (1.62 % of base)
          12 : 1197.dasm (0.28 % of base)
          10 : 7370.dasm (2.84 % of base)
           8 : 26053.dasm (0.61 % of base)
           8 : 26062.dasm (0.17 % of base)
           8 : 10658.dasm (1.12 % of base)
           8 : 17983.dasm (0.10 % of base)
           4 : 8157.dasm (0.83 % of base)
           2 : 10673.dasm (0.06 % of base)
           2 : 17949.dasm (0.12 % 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)
         -24 : 14130.dasm (-32.43 % of base)
         -22 : 23507.dasm (-5.21 % of base)
         -18 : 33614.dasm (-13.85 % of base)
         -18 : 6154.dasm (-0.49 % of base)
         -16 : 24870.dasm (-1.70 % of base)
         -16 : 28828.dasm (-8.42 % of base)
         -14 : 47079.dasm (-5.00 % of base)
         -12 : 13891.dasm (-4.23 % of base)
         -12 : 15956.dasm (-6.12 % of base)
         -12 : 11384.dasm (-0.56 % of base)
         -12 : 25443.dasm (-0.47 % of base)
         -12 : 938.dasm (-4.80 % of base)
         -10 : 27653.dasm (-1.06 % of base)
         -10 : 3501.dasm (-4.59 % of base)
          -8 : 19792.dasm (-4.08 % of base)
          -8 : 24418.dasm (-1.20 % of base)
          -8 : 4234.dasm (-1.54 % of base)

49 total files with Code Size differences (34 improved, 15 regressed), 9 unchanged.

Top method regressions (bytes):
          34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          24 (0.41 % of base) : 5214.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          20 (1.40 % of base) : 3107.dasm - System.Xml.XmlConvert:EncodeName(System.String,ubyte,ubyte):System.String (FullOpts)
          16 (0.62 % of base) : 26523.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (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)
          10 (2.84 % of base) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
           8 (0.61 % of base) : 26053.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (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)
           4 (0.83 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (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)
           2 (0.12 % of base) : 17949.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (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)
         -24 (-32.43 % of base) : 14130.dasm - System.Int32:Equals(System.Object):ubyte: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)
         -16 (-1.70 % of base) : 24870.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (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.23 % of base) : 13891.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (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 (-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)

Top method regressions (percentages):
          34 (3.23 % of base) : 2143.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          10 (2.84 % of base) : 7370.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (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)
           4 (0.83 % of base) : 8157.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (FullOpts)
          16 (0.62 % of base) : 26523.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
           8 (0.61 % of base) : 26053.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           2 (0.43 % of base) : 4673.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
          24 (0.41 % of base) : 5214.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,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)
           2 (0.12 % of base) : 17949.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (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):
         -24 (-32.43 % of base) : 14130.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -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)
          -6 (-6.12 % of base) : 25949.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (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)
         -12 (-4.23 % of base) : 13891.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int: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)


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

Detail diffs



Top file regressions (bytes):
          66 : 81989.dasm (5.24 % of base)
          54 : 139413.dasm (4.31 % of base)
          52 : 87556.dasm (4.62 % of base)
          52 : 112575.dasm (4.61 % of base)
          52 : 79316.dasm (4.62 % of base)
          48 : 139431.dasm (3.82 % of base)
          42 : 141533.dasm (1.69 % of base)
          36 : 137992.dasm (3.47 % of base)
          36 : 16881.dasm (3.47 % of base)
          36 : 38959.dasm (3.47 % of base)
          36 : 103380.dasm (3.47 % of base)
          36 : 40986.dasm (3.53 % of base)
          34 : 18040.dasm (1.82 % of base)
          34 : 141540.dasm (1.34 % of base)
          34 : 148281.dasm (2.25 % of base)
          34 : 148282.dasm (3.29 % of base)
          28 : 107635.dasm (1.28 % of base)
          28 : 137988.dasm (1.98 % of base)
          28 : 86528.dasm (1.88 % of base)
          28 : 27611.dasm (2.70 % of base)

Top file improvements (bytes):
         -84 : 100674.dasm (-4.32 % of base)
         -36 : 130096.dasm (-4.40 % of base)
         -36 : 133293.dasm (-4.40 % of base)
         -32 : 139419.dasm (-1.35 % of base)
         -30 : 100220.dasm (-2.20 % of base)
         -30 : 38107.dasm (-0.30 % of base)
         -30 : 35066.dasm (-1.08 % of base)
         -28 : 87530.dasm (-2.47 % of base)
         -28 : 91434.dasm (-1.24 % of base)
         -28 : 112559.dasm (-2.47 % of base)
         -28 : 79268.dasm (-2.46 % of base)
         -26 : 161586.dasm (-2.78 % of base)
         -24 : 13211.dasm (-32.43 % of base)
         -24 : 141534.dasm (-1.45 % of base)
         -24 : 19845.dasm (-32.43 % of base)
         -22 : 105361.dasm (-30.56 % of base)
         -22 : 117585.dasm (-30.56 % of base)
         -22 : 129333.dasm (-30.56 % of base)
         -22 : 161681.dasm (-30.56 % of base)
         -22 : 28049.dasm (-30.56 % of base)

70 total files with Code Size differences (37 improved, 33 regressed), 20 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)
          54 (4.31 % of base) : 139413.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
          52 (4.62 % 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)
          52 (4.61 % 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)
          52 (4.62 % 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)
          48 (3.82 % of base) : 139431.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
          42 (1.69 % of base) : 141533.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          36 (3.47 % 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)
          36 (3.47 % 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)
          36 (3.47 % 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)
          36 (3.47 % 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)
          36 (3.53 % of base) : 40986.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)
          34 (1.34 % of base) : 141540.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
          34 (3.29 % 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)
          34 (2.25 % of base) : 148281.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendTo(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
          34 (1.82 % of base) : 18040.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFirstCharClass>g__TryFindFirstCharClass|4_0(System.Text.RegularExpressions.RegexNode,byref):System.Nullable`1[ubyte] (Tier0-FullOpts)
          28 (2.70 % of base) : 27611.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)
          28 (1.98 % of base) : 137988.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
          28 (1.88 % of base) : 86528.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceive(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
          28 (1.28 % of base) : 107635.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)

Top method improvements (bytes):
         -84 (-4.32 % of base) : 100674.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -36 (-4.40 % of base) : 130096.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
         -36 (-4.40 % of base) : 133293.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
         -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 (-2.20 % of base) : 100220.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:Rewrite(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,ubyte,Microsoft.CodeAnalysis.Emit.MethodInstrumentation,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement (Tier1)
         -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)
         -28 (-2.47 % of base) : 87530.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -28 (-2.47 % of base) : 112559.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -28 (-2.46 % of base) : 79268.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -26 (-2.78 % of base) : 161586.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetGenericMethodBaseDefinition(System.Reflection.MethodBase):System.Reflection.MethodBase (Tier1)
         -24 (-1.45 % of base) : 141534.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationReceiveFrom(System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (Tier1)
         -24 (-32.43 % of base) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 105361.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 117585.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 129333.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 161681.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 28049.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
          12 (7.59 % of base) : 100544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (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) : 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) : 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) : 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) : 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) : 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) : 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)
          52 (4.62 % 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)
          52 (4.62 % 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)
          52 (4.61 % 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)
          54 (4.31 % of base) : 139413.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):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)
          48 (3.82 % of base) : 139431.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
          36 (3.53 % of base) : 40986.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):
         -24 (-32.43 % of base) : 13211.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 19845.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 105361.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 117585.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 129333.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 161681.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 28049.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 24246.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 40577.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 46973.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 49482.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 57661.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 7922.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 84209.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 41334.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 56029.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 58330.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 67729.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 24101.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 59125.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)


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

Detail diffs



Top file regressions (bytes):
          24 : 4426.dasm (0.41 % of base)
          22 : 9874.dasm (2.71 % of base)
          20 : 23226.dasm (2.87 % of base)
          20 : 13516.dasm (1.40 % of base)
          16 : 52223.dasm (0.62 % of base)
          12 : 3414.dasm (0.28 % of base)
          10 : 20604.dasm (2.84 % of base)
           8 : 54158.dasm (0.17 % of base)
           8 : 37304.dasm (0.10 % of base)
           8 : 51273.dasm (0.62 % of base)
           6 : 23250.dasm (0.18 % of base)
           4 : 16849.dasm (0.83 % of base)
           4 : 8557.dasm (0.50 % of base)
           2 : 14889.dasm (0.43 % of base)
           2 : 37865.dasm (0.12 % 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 : 29825.dasm (-30.56 % of base)
         -22 : 4278.dasm (-30.56 % of base)
         -22 : 45946.dasm (-5.21 % of base)
         -18 : 21931.dasm (-0.49 % of base)
         -18 : 64324.dasm (-13.85 % of base)
         -16 : 54626.dasm (-1.70 % of base)
         -16 : 62633.dasm (-8.42 % of base)
         -14 : 80096.dasm (-5.00 % of base)
         -12 : 2572.dasm (-4.80 % of base)
         -12 : 27064.dasm (-0.56 % of base)
         -12 : 49878.dasm (-0.47 % of base)
         -12 : 37009.dasm (-4.23 % of base)
         -12 : 31836.dasm (-6.12 % of base)
         -10 : 14581.dasm (-4.59 % of base)
         -10 : 57825.dasm (-1.06 % of base)
          -8 : 47505.dasm (-0.93 % of base)
          -8 : 41667.dasm (-4.08 % of base)

47 total files with Code Size differences (32 improved, 15 regressed), 8 unchanged.

Top method regressions (bytes):
          24 (0.41 % of base) : 4426.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
          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)
          16 (0.62 % of base) : 52223.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
          10 (2.84 % of base) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
           8 (0.62 % of base) : 51273.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
           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)
           4 (0.83 % of base) : 16849.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
           2 (0.43 % of base) : 14889.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
           2 (0.12 % of base) : 37865.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (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 (-30.56 % of base) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -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)
         -16 (-1.70 % of base) : 54626.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -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.23 % of base) : 37009.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int:this (Tier1)
         -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 (-4.08 % of base) : 41667.dasm - System.Xml.XmlElement:WriteElementTo(System.Xml.XmlWriter,System.Xml.XmlElement) (Tier0-FullOpts)

Top method regressions (percentages):
          20 (2.87 % of base) : 23226.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (Tier0-FullOpts)
          10 (2.84 % of base) : 20604.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier1)
          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.83 % of base) : 16849.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
           8 (0.62 % of base) : 51273.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
          16 (0.62 % of base) : 52223.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
          24 (0.41 % of base) : 4426.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,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)
           2 (0.12 % of base) : 37865.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (Tier0-FullOpts)
           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):
         -22 (-30.56 % of base) : 29825.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 4278.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -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)
         -12 (-4.23 % of base) : 37009.dasm - System.Net.Sockets.SocketAsyncContext:Accept(System.Memory`1[ubyte],byref,byref):int: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) : 16865.dasm - System.Text.Json.Tests.Perf_Segment:ReadSingleSegmentSequence():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: 321751292 (overridden on cmd)
Total bytes of diff: 321747726 (overridden on cmd)
Total bytes of delta: -3566 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          82 : 167990.dasm (1.57 % of base)
          46 : 311687.dasm (3.89 % of base)
          44 : 178040.dasm (0.93 % of base)
          44 : 200828.dasm (0.93 % of base)
          44 : 192068.dasm (0.93 % of base)
          40 : 305690.dasm (3.36 % of base)
          32 : 312220.dasm (1.07 % of base)
          32 : 312239.dasm (3.04 % of base)
          32 : 307823.dasm (1.07 % of base)
          26 : 306659.dasm (1.83 % of base)
          26 : 311953.dasm (1.84 % of base)
          24 : 38074.dasm (0.51 % of base)
          24 : 116701.dasm (0.51 % of base)
          24 : 204941.dasm (0.51 % of base)
          24 : 1090.dasm (0.41 % of base)
          24 : 305664.dasm (0.84 % of base)
          24 : 315530.dasm (0.41 % of base)
          20 : 35000.dasm (3.09 % of base)
          20 : 40712.dasm (3.09 % of base)
          18 : 137465.dasm (2.82 % of base)

Top file improvements (bytes):
        -238 : 399036.dasm (-30.67 % of base)
        -154 : 333592.dasm (-18.78 % of base)
         -58 : 333590.dasm (-11.98 % of base)
         -40 : 202017.dasm (-3.49 % of base)
         -38 : 333591.dasm (-11.66 % of base)
         -36 : 299651.dasm (-3.71 % of base)
         -34 : 465079.dasm (-18.89 % of base)
         -34 : 474696.dasm (-3.55 % of base)
         -34 : 462403.dasm (-3.76 % of base)
         -32 : 302047.dasm (-0.68 % of base)
         -32 : 121725.dasm (-2.92 % of base)
         -32 : 181696.dasm (-2.92 % of base)
         -32 : 194123.dasm (-2.92 % of base)
         -32 : 294838.dasm (-2.88 % of base)
         -32 : 304946.dasm (-2.83 % of base)
         -32 : 110762.dasm (-2.92 % of base)
         -32 : 300635.dasm (-0.68 % of base)
         -30 : 155809.dasm (-2.74 % of base)
         -30 : 167814.dasm (-2.69 % of base)
         -28 : 378105.dasm (-1.24 % of base)

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

Top method regressions (bytes):
          82 (1.57 % of base) : 167990.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
          46 (3.89 % of base) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
          44 (0.93 % of base) : 178040.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          44 (0.93 % of base) : 200828.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          44 (0.93 % of base) : 192068.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          40 (3.36 % of base) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
          32 (1.07 % of base) : 312220.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgIterator:GetArgLoc(int):System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]:this (Tier1)
          32 (1.07 % of base) : 307823.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgIterator:GetArgLoc(int):System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]:this (Tier1)
          32 (3.04 % of base) : 312239.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex: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)
          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.84 % of base) : 305664.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (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)
          24 (0.41 % of base) : 315530.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          24 (0.41 % of base) : 1090.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
          20 (3.09 % of base) : 35000.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
          20 (3.09 % of base) : 40712.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
          18 (0.44 % of base) : 198699.dasm - IlasmPortablePdbTests.IlasmPortablePdbTester:TestPortablePdbLocalScope(System.String):this (Tier0-FullOpts)

Top method improvements (bytes):
        -238 (-30.67 % of base) : 399036.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -154 (-18.78 % of base) : 333592.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -58 (-11.98 % of base) : 333590.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -40 (-3.49 % of base) : 202017.dasm - Runtime_52864.test:check(System.Numerics.Vector2,System.Numerics.Vector2,System.Numerics.Vector2) (Tier1)
         -38 (-11.66 % of base) : 333591.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -36 (-3.71 % of base) : 299651.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (Tier0-FullOpts)
         -34 (-3.76 % of base) : 462403.dasm - ILCompiler.AssemblyExtensions:HasOptimizationsDisabled(Internal.TypeSystem.Ecma.EcmaAssembly):ubyte (FullOpts)
         -34 (-18.89 % of base) : 465079.dasm - Internal.IL.StackValue:Equals(System.Object):ubyte:this (FullOpts)
         -34 (-3.55 % of base) : 474696.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
         -32 (-2.83 % of base) : 304946.dasm - Internal.JitInterface.CorInfoImpl:ShouldSkipCompilation(ILCompiler.InstructionSetSupport,Internal.TypeSystem.MethodDesc):ubyte (Tier1)
         -32 (-2.92 % of base) : 121725.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -32 (-2.92 % of base) : 181696.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -32 (-2.92 % of base) : 194123.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -32 (-2.88 % of base) : 294838.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -32 (-2.92 % of base) : 110762.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -32 (-0.68 % of base) : 302047.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
         -32 (-0.68 % of base) : 300635.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
         -30 (-2.74 % of base) : 155809.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -30 (-2.69 % of base) : 167814.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int],System.Threading.CancellationToken):int:this (Tier1)
         -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)

Top method regressions (percentages):
          46 (3.89 % of base) : 311687.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
          40 (3.36 % of base) : 305690.dasm - ILCompiler.Compilation:CanInline(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (Tier1)
          16 (3.15 % of base) : 134945.dasm - Program:Compare_UInt32(uint,uint) (Tier1)
          20 (3.09 % of base) : 35000.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
          20 (3.09 % of base) : 40712.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
          32 (3.04 % of base) : 312239.dasm - Internal.NativeFormat.VertexArray:ExpandBlock(int,int,ubyte,byref):Internal.NativeFormat.Vertex:this (Tier1)
           4 (3.03 % of base) : 181125.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
          14 (2.93 % of base) : 136807.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Instrumented Tier1)
           2 (2.86 % of base) : 117171.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
           2 (2.86 % of base) : 144246.dasm - System.String:Equals(System.Object):ubyte:this (Tier1)
          18 (2.82 % of base) : 137465.dasm - System.Reflection.Emit.DynamicResolver:ResolveToken(int,byref,byref,byref):this (Tier1)
           8 (2.56 % of base) : 305644.dasm - Internal.JitInterface.CorInfoImpl:isIntrinsic(uint):ubyte:this (Tier1)
           6 (2.36 % of base) : 300636.dasm - System.Reflection.Internal.StreamExtensions:GetAndValidateSize(System.IO.Stream,int,System.String):int (Tier1)
           2 (2.13 % of base) : 153566.dasm - System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this (Tier1)
           8 (2.09 % of base) : 369913.dasm - MyCounter[System.__Canon]:Increment[System.__Canon](int):this (FullOpts)
          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)
           4 (1.98 % of base) : 463518.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
           4 (1.98 % of base) : 476281.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.PrecodeMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
           2 (1.92 % of base) : 272920.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -26 (-34.21 % of base) : 127085.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -26 (-34.21 % of base) : 23616.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 122945.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 122935.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 134601.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 201887.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 122940.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 122957.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-30.77 % of base) : 122946.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -24 (-30.77 % of base) : 122952.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
        -238 (-30.67 % of base) : 399036.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -22 (-30.56 % of base) : 30990.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 6150.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-28.57 % of base) : 122936.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -24 (-28.57 % of base) : 122919.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -24 (-21.05 % of base) : 122934.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -22 (-19.64 % of base) : 121272.dasm - System.Double:Equals(System.Object):ubyte:this (Tier1)
         -24 (-19.05 % of base) : 116575.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -34 (-18.89 % of base) : 465079.dasm - Internal.IL.StackValue:Equals(System.Object):ubyte:this (FullOpts)
        -154 (-18.78 % of base) : 333592.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)


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: 34521656 (overridden on cmd)
Total bytes of delta: -938 (-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)
          14 : 156298.dasm (2.95 % of base)
          12 : 120703.dasm (0.24 % of base)
          12 : 156020.dasm (2.14 % of base)
          10 : 108298.dasm (0.73 % of base)
          10 : 67006.dasm (0.23 % of base)
           8 : 157061.dasm (0.55 % of base)
           6 : 116014.dasm (1.00 % of base)
           6 : 171.dasm (0.54 % of base)
           6 : 80104.dasm (0.65 % of base)
           6 : 80458.dasm (0.88 % of base)
           6 : 120771.dasm (0.13 % of base)
           4 : 80460.dasm (0.94 % of base)
           4 : 158054.dasm (0.75 % of base)
           4 : 157037.dasm (0.26 % of base)
           4 : 178115.dasm (1.54 % of base)
           4 : 115657.dasm (0.42 % of base)
           4 : 75360.dasm (0.35 % of base)

Top file improvements (bytes):
         -74 : 124271.dasm (-11.31 % of base)
         -40 : 126624.dasm (-3.72 % of base)
         -40 : 72815.dasm (-1.34 % of base)
         -40 : 72857.dasm (-1.34 % of base)
         -40 : 72075.dasm (-2.82 % of base)
         -34 : 142285.dasm (-1.27 % of base)
         -34 : 134539.dasm (-1.67 % of base)
         -32 : 133759.dasm (-5.95 % of base)
         -32 : 197.dasm (-25.81 % of base)
         -28 : 142371.dasm (-6.97 % of base)
         -28 : 101204.dasm (-6.97 % of base)
         -24 : 75350.dasm (-6.78 % of base)
         -24 : 101048.dasm (-3.97 % of base)
         -24 : 123582.dasm (-3.68 % of base)
         -20 : 97652.dasm (-0.52 % of base)
         -20 : 72601.dasm (-10.31 % of base)
         -20 : 165120.dasm (-0.94 % of base)
         -18 : 170939.dasm (-13.43 % of base)
         -18 : 125168.dasm (-2.89 % of base)
         -14 : 34232.dasm (-2.33 % of base)

60 total files with Code Size differences (38 improved, 22 regressed), 20 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)
          14 (2.95 % of base) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
          12 (2.14 % of base) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          12 (0.24 % of base) : 120703.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
          10 (0.23 % 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)
          10 (0.73 % of base) : 108298.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):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.65 % of base) : 80104.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):this (FullOpts)
           6 (0.88 % of base) : 80458.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (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.94 % of base) : 80460.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckUnaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (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 (1.54 % of base) : 178115.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte: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)
           4 (0.75 % of base) : 158054.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`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 (-3.72 % of base) : 126624.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (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)
         -34 (-1.67 % of base) : 134539.dasm - Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver:Resolve(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol]:this (FullOpts)
         -34 (-1.27 % of base) : 142285.dasm - System.Net.Cookie:VerifySetDefaults(int,System.Uri,ubyte,System.String,ubyte,ubyte):ubyte: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) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.97 % of base) : 101204.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.68 % of base) : 123582.dasm - System.IO.Compression.ZipArchiveEntry:WriteLocalFileHeaderAndDataIfNeeded():this (FullOpts)
         -24 (-3.97 % of base) : 101048.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
         -20 (-0.52 % of base) : 97652.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData:PerformComClassAnalysis(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol):this (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)

Top method regressions (percentages):
          24 (3.33 % of base) : 145468.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          14 (2.95 % of base) : 156298.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
          12 (2.14 % of base) : 156020.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
           4 (1.54 % of base) : 178115.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (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)
           4 (0.94 % of base) : 80460.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckUnaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (FullOpts)
           6 (0.88 % of base) : 80458.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CheckBinaryBuiltInOperator(System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OperatorInfo) (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)
          10 (0.73 % of base) : 108298.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
           6 (0.65 % of base) : 80104.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitBinaryArithOperatorInstructionAndDowncast(Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator):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)

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) : 142371.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.97 % of base) : 101204.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)
         -40 (-3.72 % of base) : 126624.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49852844 (overridden on cmd)
Total bytes of diff: 49850788 (overridden on cmd)
Total bytes of delta: -2056 (-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)
          24 : 70.dasm (0.41 % of base)
          20 : 240421.dasm (2.45 % of base)
          20 : 79591.dasm (0.67 % of base)
          20 : 100102.dasm (1.40 % of base)
          18 : 55277.dasm (2.03 % of base)
          18 : 269624.dasm (1.42 % of base)
          18 : 181260.dasm (3.41 % of base)
          16 : 56835.dasm (0.58 % of base)
          14 : 253836.dasm (0.69 % of base)
          14 : 242265.dasm (2.12 % of base)
          14 : 249075.dasm (0.16 % of base)
          12 : 189280.dasm (1.72 % of base)
          12 : 100289.dasm (3.37 % of base)
          12 : 181536.dasm (0.76 % of base)
          10 : 167808.dasm (0.82 % of base)
          10 : 229979.dasm (0.82 % of base)
           8 : 249916.dasm (0.41 % of base)

Top file improvements (bytes):
        -272 : 235993.dasm (-30.98 % of base)
        -154 : 8320.dasm (-18.78 % of base)
         -86 : 245988.dasm (-3.20 % of base)
         -70 : 195478.dasm (-6.97 % of base)
         -58 : 8268.dasm (-11.98 % of base)
         -42 : 89200.dasm (-1.45 % of base)
         -42 : 89261.dasm (-1.45 % of base)
         -38 : 178395.dasm (-4.19 % of base)
         -38 : 8269.dasm (-11.66 % of base)
         -36 : 8270.dasm (-6.67 % of base)
         -36 : 236673.dasm (-20.45 % of base)
         -34 : 184046.dasm (-3.76 % of base)
         -32 : 646.dasm (-26.67 % of base)
         -28 : 179413.dasm (-6.64 % of base)
         -28 : 218077.dasm (-1.24 % of base)
         -28 : 146551.dasm (-6.64 % of base)
         -28 : 250253.dasm (-1.84 % of base)
         -26 : 48791.dasm (-1.62 % of base)
         -26 : 216977.dasm (-2.88 % of base)
         -26 : 682.dasm (-1.50 % of base)

71 total files with Code Size differences (42 improved, 29 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)
          24 (0.41 % of base) : 70.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          20 (0.67 % of base) : 79591.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
          18 (2.03 % of base) : 55277.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          18 (3.41 % of base) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          18 (1.42 % of base) : 269624.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          16 (0.58 % of base) : 56835.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
          14 (0.69 % of base) : 253836.dasm - Microsoft.VisualBasic.VBCodeGenerator:GenerateProperty(System.CodeDom.CodeMemberProperty,System.CodeDom.CodeTypeDeclaration):this (FullOpts)
          14 (2.12 % of base) : 242265.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int]):int: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)
          10 (0.82 % of base) : 167808.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
          10 (0.82 % of base) : 229979.dasm - System.Reflection.TypeLoading.Assignability:CanCastTo(System.Type,System.Type,System.Reflection.TypeLoading.CoreTypes):ubyte (FullOpts)
           8 (1.97 % of base) : 54923.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

Top method improvements (bytes):
        -272 (-30.98 % of base) : 235993.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -154 (-18.78 % of base) : 8320.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -86 (-3.20 % of base) : 245988.dasm - System.Net.Http.HttpConnectionPool+<HandleHttp11Downgrade>d__82:MoveNext():this (FullOpts)
         -70 (-6.97 % of base) : 195478.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         -58 (-11.98 % of base) : 8268.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (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)
         -38 (-4.19 % of base) : 178395.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
         -38 (-11.66 % of base) : 8269.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -36 (-20.45 % of base) : 236673.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -36 (-6.67 % of base) : 8270.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -34 (-3.76 % of base) : 184046.dasm - ILCompiler.AssemblyExtensions:HasOptimizationsDisabled(Internal.TypeSystem.Ecma.EcmaAssembly):ubyte (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) : 179413.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 146551.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)

Top method regressions (percentages):
          18 (3.41 % of base) : 181260.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          12 (3.37 % of base) : 100289.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
           2 (2.70 % of base) : 149077.dasm - Microsoft.Build.Internal.ProjectXmlUtilities:GetAttributeValue(Microsoft.Build.Construction.XmlElementWithLocation,System.String):System.String (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)
          14 (2.12 % of base) : 242265.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFromAsync(System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,byref,byref,System.Action`4[int,System.Memory`1[ubyte],int,int]):int:this (FullOpts)
          18 (2.03 % of base) : 55277.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
           4 (1.98 % of base) : 185142.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelayLoadMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
           4 (1.98 % of base) : 185134.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.PrecodeMethodImport:CompareToImpl(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.CompilerComparer):int:this (FullOpts)
           8 (1.97 % of base) : 54923.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           4 (1.80 % of base) : 246909.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (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)
          18 (1.42 % of base) : 269624.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (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)
           4 (0.94 % of base) : 181721.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this (FullOpts)
           2 (0.85 % of base) : 181852.dasm - System.ComponentModel.BindingList`1[System.__Canon]:AddNewCore():System.Object:this (FullOpts)

Top method improvements (percentages):
        -272 (-30.98 % of base) : 235993.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -24 (-27.91 % of base) : 185919.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -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)
         -36 (-20.45 % of base) : 236673.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -22 (-20.00 % of base) : 236678.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
        -154 (-18.78 % of base) : 8320.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -18 (-16.36 % of base) : 47403.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
         -18 (-14.29 % of base) : 197024.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -18 (-13.85 % of base) : 179742.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -18 (-12.68 % of base) : 8284.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -58 (-11.98 % of base) : 8268.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -20 (-11.76 % of base) : 89712.dasm - System.Data.ExpressionParser:ScanDate():this (FullOpts)
         -38 (-11.66 % of base) : 8269.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -22 (-10.48 % of base) : 47396.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte: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)
         -18 (-6.87 % of base) : 170450.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[ubyte](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,ubyte):ubyte (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 243535854 (overridden on cmd)
Total bytes of diff: 243522006 (overridden on cmd)
Total bytes of delta: -13848 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         776 : 42526.dasm (22.57 % of base)
         106 : 230459.dasm (9.76 % of base)
          70 : 111041.dasm (1.77 % of base)
          70 : 667023.dasm (2.48 % of base)
          68 : 676091.dasm (1.63 % of base)
          66 : 698560.dasm (1.70 % of base)
          60 : 660981.dasm (1.01 % of base)
          58 : 557163.dasm (3.12 % of base)
          58 : 90096.dasm (3.74 % of base)
          58 : 403565.dasm (3.12 % of base)
          46 : 153770.dasm (2.31 % of base)
          46 : 182827.dasm (0.98 % of base)
          46 : 665948.dasm (1.20 % of base)
          46 : 140264.dasm (2.31 % of base)
          46 : 183654.dasm (0.98 % of base)
          46 : 182100.dasm (0.98 % of base)
          42 : 122756.dasm (1.48 % of base)
          40 : 90357.dasm (2.33 % of base)
          40 : 431279.dasm (3.46 % of base)
          36 : 176800.dasm (3.65 % of base)

Top file improvements (bytes):
        -202 : 188144.dasm (-0.89 % of base)
        -150 : 76347.dasm (-2.37 % of base)
        -112 : 673813.dasm (-5.88 % of base)
        -110 : 63131.dasm (-3.03 % of base)
        -102 : 91544.dasm (-2.87 % of base)
         -90 : 77178.dasm (-3.16 % of base)
         -88 : 179379.dasm (-4.68 % of base)
         -80 : 178150.dasm (-2.05 % of base)
         -80 : 361615.dasm (-4.03 % of base)
         -72 : 470955.dasm (-1.47 % of base)
         -70 : 102039.dasm (-6.85 % of base)
         -68 : 672069.dasm (-1.89 % of base)
         -64 : 76327.dasm (-1.69 % of base)
         -58 : 305080.dasm (-1.50 % of base)
         -52 : 519565.dasm (-3.72 % of base)
         -52 : 173106.dasm (-4.38 % of base)
         -52 : 172961.dasm (-1.51 % of base)
         -48 : 530570.dasm (-6.90 % of base)
         -46 : 56086.dasm (-3.90 % of base)
         -44 : 550990.dasm (-2.82 % of base)

86 total files with Code Size differences (48 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         776 (22.57 % of base) : 42526.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         106 (9.76 % of base) : 230459.dasm - System.Text.RegularExpressions.RegexNode:ComputeMaxLength():System.Nullable`1[int]:this (Tier0-FullOpts)
          70 (1.77 % of base) : 111041.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
          70 (2.48 % of base) : 667023.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
          68 (1.63 % 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)
          66 (1.70 % of base) : 698560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,uint,ubyte,ubyte,ubyte,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
          60 (1.01 % of base) : 660981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
          58 (3.74 % of base) : 90096.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,uint,ubyte,ubyte,ubyte,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
          58 (3.12 % of base) : 557163.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():this (Tier1)
          58 (3.12 % of base) : 403565.dasm - System.Net.Http.HttpConnectionPool:CheckForHttp11ConnectionInjection():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 (0.98 % of base) : 182827.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          46 (0.98 % of base) : 183654.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          46 (0.98 % of base) : 182100.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
          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)
          40 (2.33 % of base) : 90357.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+<>c__DisplayClass3_0:<GetStatelessGetPinnableReference>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
          40 (3.46 % of base) : 431279.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly: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)

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)
        -150 (-2.37 % of base) : 76347.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
        -112 (-5.88 % of base) : 673813.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
        -110 (-3.03 % of base) : 63131.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
        -102 (-2.87 % of base) : 91544.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
         -90 (-3.16 % of base) : 77178.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         -88 (-4.68 % of base) : 179379.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Tier1)
         -80 (-2.05 % of base) : 178150.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:DefineLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (Tier1)
         -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)
         -70 (-6.85 % of base) : 102039.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (Tier1)
         -68 (-1.89 % of base) : 672069.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseForStatement(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ForStatementSyntax:this (Tier1)
         -64 (-1.69 % of base) : 76327.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
         -58 (-1.50 % of base) : 305080.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
         -52 (-1.51 % of base) : 172961.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -52 (-4.38 % of base) : 173106.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
         -52 (-3.72 % of base) : 519565.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (Tier1)
         -48 (-6.90 % of base) : 530570.dasm - System.Reflection.NullabilityInfoContext:TryUpdateGenericParameterNullability(System.Reflection.NullabilityInfo,System.Type,System.Type):ubyte:this (Tier1)
         -46 (-3.90 % of base) : 56086.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
         -44 (-2.82 % of base) : 550990.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Tier1)

Top method regressions (percentages):
         776 (22.57 % of base) : 42526.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyExplicitBuiltInOnlyConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (Tier1)
         106 (9.76 % of base) : 230459.dasm - System.Text.RegularExpressions.RegexNode:ComputeMaxLength():System.Nullable`1[int]:this (Tier0-FullOpts)
          24 (7.95 % of base) : 432766.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)
           6 (6.38 % of base) : 67468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:ShouldCheckRequiredMembers(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):ubyte (Tier1)
          20 (5.75 % of base) : 14822.dasm - System.Text.RegularExpressions.RegexNode:TryGetJoinableLengthCheckChildRange(int,byref,byref):ubyte:this (Tier0-FullOpts)
          24 (5.48 % of base) : 673833.dasm - Microsoft.CodeAnalysis.Compilation:get_HasStrongName():ubyte:this (Tier1)
          24 (5.24 % of base) : 530651.dasm - System.Reflection.NullabilityInfoContext:TryPopulateNullabilityInfo(System.Reflection.NullabilityInfo,System.Reflection.NullabilityInfoContext+NullableAttributeStateParser,byref):ubyte (Tier1)
           8 (5.06 % of base) : 55692.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           8 (5.06 % of base) : 671986.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)
          14 (4.96 % of base) : 122701.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpressionAsType(System.Linq.Expressions.Expression,System.Type,int):this (Tier1)
           8 (4.88 % of base) : 665264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyDelaySignAttributeSetting():ubyte: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)
          10 (4.46 % of base) : 381065.dasm - System.Net.NameResolutionTelemetry:GetHostnameFromStateObject(System.Object):System.String (Tier1)
          26 (4.39 % of base) : 396691.dasm - System.Net.Sockets.SocketAsyncContext:ReceiveFrom(System.Span`1[ubyte],byref,System.Memory`1[ubyte],byref,int,byref):int:this (Tier1)
           4 (4.35 % of base) : 578212.dasm - System.Collections.Generic.List`1+Enumerator[ubyte]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -24 (-32.43 % of base) : 215412.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 286856.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 459840.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -24 (-32.43 % of base) : 213559.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -24 (-30.77 % of base) : 644200.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -24 (-30.77 % of base) : 644205.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 507470.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 663686.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 284925.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 30558.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 493338.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 634066.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 460317.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 493344.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 722786.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 224031.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 435989.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 201367.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 508334.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -22 (-30.56 % of base) : 517706.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94520720 (overridden on cmd)
Total bytes of diff: 94517554 (overridden on cmd)
Total bytes of delta: -3166 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          46 : 49186.dasm (2.31 % of base)
          46 : 43492.dasm (2.31 % of base)
          44 : 23733.dasm (3.46 % of base)
          32 : 88706.dasm (0.95 % of base)
          30 : 24411.dasm (0.48 % of base)
          30 : 214538.dasm (0.45 % of base)
          24 : 221.dasm (0.41 % of base)
          22 : 302621.dasm (0.83 % of base)
          20 : 30996.dasm (0.74 % of base)
          20 : 184561.dasm (0.57 % of base)
          20 : 4136.dasm (2.87 % of base)
          20 : 89379.dasm (1.40 % of base)
          18 : 18075.dasm (0.17 % of base)
          18 : 33380.dasm (1.42 % of base)
          18 : 78112.dasm (3.56 % of base)
          16 : 54983.dasm (0.67 % of base)
          14 : 63808.dasm (0.71 % of base)
          14 : 23737.dasm (1.53 % of base)
          14 : 5207.dasm (0.37 % of base)
          14 : 149680.dasm (0.16 % of base)

Top file improvements (bytes):
        -224 : 24936.dasm (-29.40 % of base)
        -138 : 116843.dasm (-17.16 % of base)
         -82 : 201913.dasm (-8.58 % of base)
         -42 : 213377.dasm (-5.22 % of base)
         -42 : 90644.dasm (-1.45 % of base)
         -42 : 91053.dasm (-1.45 % of base)
         -36 : 201272.dasm (-5.06 % of base)
         -36 : 208778.dasm (-4.63 % of base)
         -36 : 208949.dasm (-4.68 % of base)
         -32 : 94842.dasm (-26.67 % of base)
         -28 : 152437.dasm (-6.64 % of base)
         -28 : 149450.dasm (-6.64 % of base)
         -28 : 152603.dasm (-6.64 % of base)
         -28 : 59999.dasm (-1.84 % of base)
         -26 : 183355.dasm (-0.44 % of base)
         -26 : 230812.dasm (-1.50 % of base)
         -26 : 31555.dasm (-2.98 % of base)
         -24 : 264884.dasm (-0.41 % of base)
         -24 : 194419.dasm (-31.58 % of base)
         -24 : 90960.dasm (-1.63 % of base)

71 total files with Code Size differences (38 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
          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)
          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)
          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)
          30 (0.48 % of base) : 24411.dasm - Tests.System.TimeProviderTests+<RunWaitAsyncTests>d__14:MoveNext():this (FullOpts)
          30 (0.45 % of base) : 214538.dasm - Tests.System.TimeProviderTests+<RunWaitAsyncTests>d__14:MoveNext():this (FullOpts)
          24 (0.41 % of base) : 221.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          22 (0.83 % of base) : 302621.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
          20 (0.74 % of base) : 30996.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          20 (0.57 % of base) : 184561.dasm - System.Reflection.Tests.TypeTests:TestArrayGetMethodsResultEqualsFilteredGetMethod() (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)
          18 (3.56 % of base) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          18 (0.17 % of base) : 18075.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (FullOpts)
          18 (1.42 % of base) : 33380.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          16 (0.67 % of base) : 54983.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (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)

Top method improvements (bytes):
        -224 (-29.40 % of base) : 24936.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -138 (-17.16 % of base) : 116843.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -82 (-8.58 % of base) : 201913.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -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)
         -42 (-5.22 % of base) : 213377.dasm - System.Tests.CharTests:EqualsTest(ushort,System.Object,ubyte) (FullOpts)
         -36 (-5.06 % of base) : 201272.dasm - System.Tests.Int16Tests:EqualsTest(short,System.Object,ubyte) (FullOpts)
         -36 (-4.68 % of base) : 208949.dasm - System.Tests.Int32Tests:EqualsTest(int,System.Object,ubyte) (FullOpts)
         -36 (-4.63 % of base) : 208778.dasm - System.Tests.SByteTests:EqualsTest(byte,System.Object,ubyte) (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) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 149450.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 (-31.58 % of base) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-0.41 % of base) : 264884.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (FullOpts)

Top method regressions (percentages):
           8 (5.13 % of base) : 35998.dasm - Stashbox.Registration.SelectionRules.NameRule:IsValidForCurrentRequest(Stashbox.Resolution.TypeInformation,Stashbox.Registration.ServiceRegistrations.ServiceRegistration,Stashbox.Resolution.ResolutionContext,byref):ubyte:this (FullOpts)
          18 (3.56 % of base) : 78112.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (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)
          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) : 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)
          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)
           8 (1.97 % of base) : 50521.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           8 (1.97 % of base) : 54365.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           8 (1.97 % of base) : 44640.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           4 (1.80 % of base) : 148625.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Contains(System.__Canon):ubyte:this (FullOpts)
           2 (1.75 % of base) : 96752.dasm - System.Data.EnumerableRowCollectionExtensionsTests+<>c:<Where_SuccessfullyFindRow>b__3_0(System.Data.DataRow):ubyte: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)
           4 (1.50 % of base) : 188609.dasm - System.Tests.BitConverterSpan:ToInt32(int,ubyte[]):this (FullOpts)
          18 (1.42 % of base) : 33380.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
          12 (1.41 % of base) : 159301.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[short]:<CopySign_AllLengths>b__25_0(int):this (FullOpts)

Top method improvements (percentages):
         -24 (-31.58 % of base) : 194419.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
        -224 (-29.40 % of base) : 24936.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -32 (-26.67 % of base) : 94842.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
         -22 (-18.64 % of base) : 90744.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
        -138 (-17.16 % of base) : 116843.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (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)
         -82 (-8.58 % of base) : 201913.dasm - System.Tests.UInt16Tests:EqualsTest(ushort,System.Object,ubyte) (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) : 152437.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -28 (-6.64 % of base) : 149450.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) : 51131.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:GetGenericTypeParamSymbol(int):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol: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)
          -6 (-6.12 % of base) : 7312.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
          -6 (-6.12 % of base) : 46212.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
          -6 (-6.12 % of base) : 52526.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (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)
         -42 (-5.22 % of base) : 213377.dasm - System.Tests.CharTests:EqualsTest(ushort,System.Object,ubyte) (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: 13606582 (overridden on cmd)
Total bytes of delta: -106 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 34551.dasm (0.41 % of base)
          24 : 10238.dasm (1.62 % of base)
          20 : 2743.dasm (2.45 % of base)
          20 : 29468.dasm (0.74 % of base)
          18 : 30756.dasm (0.67 % of base)
          18 : 28765.dasm (2.06 % of base)
          16 : 22082.dasm (1.49 % of base)
          16 : 31144.dasm (0.63 % of base)
          14 : 35382.dasm (1.62 % of base)
          12 : 1213.dasm (0.28 % of base)
          12 : 18520.dasm (3.35 % of base)
          12 : 20614.dasm (0.47 % of base)
          10 : 16505.dasm (0.90 % of base)
          10 : 27166.dasm (0.24 % of base)
          10 : 17379.dasm (0.72 % of base)
           8 : 23890.dasm (0.57 % of base)
           8 : 24342.dasm (1.97 % of base)
           8 : 22061.dasm (0.61 % of base)
           8 : 24056.dasm (0.49 % of base)
           6 : 27025.dasm (0.53 % 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)
         -24 : 13322.dasm (-28.57 % of base)
         -24 : 8710.dasm (-32.43 % of base)
         -24 : 7045.dasm (-32.43 % of base)
         -24 : 7363.dasm (-32.43 % of base)
         -16 : 25813.dasm (-0.55 % of base)
         -16 : 31107.dasm (-1.70 % of base)
         -14 : 24656.dasm (-7.37 % of base)
         -14 : 26225.dasm (-0.88 % of base)
         -12 : 935.dasm (-4.80 % of base)
         -12 : 24847.dasm (-0.47 % of base)
         -10 : 20697.dasm (-1.31 % of base)
          -8 : 21330.dasm (-0.93 % of base)
          -8 : 25791.dasm (-0.38 % of base)
          -6 : 29486.dasm (-1.74 % of base)
          -6 : 4135.dasm (-4.05 % of base)
          -6 : 27426.dasm (-6.12 % of base)
          -6 : 23348.dasm (-2.97 % of base)

50 total files with Code Size differences (27 improved, 23 regressed), 17 unchanged.

Top method regressions (bytes):
          24 (1.62 % of base) : 10238.dasm - FSharp.Compiler.TypeRelations:TypesFeasiblyEquivalent[System.__Canon](ubyte,int,FSharp.Compiler.TcGlobals+TcGlobals,System.__Canon,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):ubyte (FullOpts)
          24 (0.41 % of base) : 34551.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          20 (0.74 % of base) : 29468.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          18 (2.06 % of base) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          18 (0.67 % of base) : 30756.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          16 (0.63 % of base) : 31144.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (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 (3.35 % of base) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          12 (0.28 % of base) : 1213.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
          10 (0.24 % 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)
          10 (0.72 % of base) : 17379.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          10 (0.90 % of base) : 16505.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:this (FullOpts)
           8 (0.57 % of base) : 23890.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           8 (0.49 % of base) : 24056.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
           8 (1.97 % of base) : 24342.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):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)
           6 (0.53 % of base) : 27025.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveDefaultMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution: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)
         -24 (-32.43 % of base) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-32.43 % of base) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-32.43 % of base) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-28.57 % of base) : 13322.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -16 (-1.70 % of base) : 31107.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
         -16 (-0.55 % of base) : 25813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
         -14 (-0.88 % of base) : 26225.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int: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 (-6.12 % of base) : 27426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (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)

Top method regressions (percentages):
          12 (3.35 % of base) : 18520.dasm - System.IO.Path:TryJoin(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          20 (2.45 % of base) : 2743.dasm - System.Uri:ParseSchemeCheckImplicitFile(System.String,byref,byref,byref):int (FullOpts)
          18 (2.06 % of base) : 28765.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
           8 (1.97 % of base) : 24342.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          14 (1.62 % of base) : 35382.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          24 (1.62 % of base) : 10238.dasm - FSharp.Compiler.TypeRelations:TypesFeasiblyEquivalent[System.__Canon](ubyte,int,FSharp.Compiler.TcGlobals+TcGlobals,System.__Canon,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):ubyte (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)
          10 (0.90 % of base) : 16505.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer:CreatePixelSpecificQuantizer[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerOptions):SixLabors.ImageSharp.Processing.Processors.Quantization.IQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]: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)
          20 (0.74 % of base) : 29468.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          10 (0.72 % of base) : 17379.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          18 (0.67 % of base) : 30756.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          16 (0.63 % of base) : 31144.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
           8 (0.57 % of base) : 23890.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
           2 (0.56 % of base) : 29726.dasm - Microsoft.CodeAnalysis.SmallDictionary`2[System.__Canon,ubyte]:AddNode(Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,ubyte],System.__Canon,ubyte):this (FullOpts)
           6 (0.53 % of base) : 27025.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveDefaultMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           8 (0.49 % of base) : 24056.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (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)

Top method improvements (percentages):
         -24 (-32.43 % of base) : 7363.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-32.43 % of base) : 7045.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-32.43 % of base) : 8710.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -24 (-28.57 % of base) : 13322.dasm - System.Int64:Equals(System.Object):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)
          -6 (-6.12 % of base) : 27426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (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)
          -4 (-1.74 % of base) : 494.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
         -16 (-1.70 % of base) : 31107.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization: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)



windows x86

Diffs are based on 2,292,076 contexts (839,658 MinOpts, 1,452,418 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 1,420 (0.06%)

Overall (-7,570 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,956 -237
benchmarks.run_pgo.windows.x86.checked.mch 44,953,073 -523
benchmarks.run_tiered.windows.x86.checked.mch 9,468,479 -359
coreclr_tests.run.windows.x86.checked.mch 309,197,550 -1,795
libraries.crossgen2.windows.x86.checked.mch 31,713,985 -762
libraries.pmi.windows.x86.checked.mch 49,253,151 -1,180
libraries_tests.run.windows.x86.Release.mch 185,471,045 -3,289
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,778,092 -98
realworld.run.windows.x86.checked.mch 11,345,019 +673

FullOpts (-7,570 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,675 -237
benchmarks.run_pgo.windows.x86.checked.mch 38,364,442 -523
benchmarks.run_tiered.windows.x86.checked.mch 5,198,658 -359
coreclr_tests.run.windows.x86.checked.mch 107,409,416 -1,795
libraries.crossgen2.windows.x86.checked.mch 31,712,925 -762
libraries.pmi.windows.x86.checked.mch 49,157,918 -1,180
libraries_tests.run.windows.x86.Release.mch 87,197,345 -3,289
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,098,028 -98
realworld.run.windows.x86.checked.mch 11,049,305 +673

Example diffs

benchmarks.run.windows.x86.checked.mch

-30 (-46.88%) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,71 +8,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ecx] - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E - je SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+ movzx eax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 64, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-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)
; ============================================================

+3 (+3.61%) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)

@@ -9,9 +9,10 @@ ; ; V00 arg0 [V00,T01] ( 3, 3 ) ubyte -> ecx single-def ; V01 arg1 [V01,T00] ( 4, 3 ) ubyte -> edx single-def
-; V02 tmp0 [V02,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V03 tmp1 [V03,T04] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V04 cse0 [V04,T02] ( 5, 2.50) int -> ecx multi-def "CSE - aggressive"
+; V02 tmp0 [V02,T04] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V03 tmp1 [V03,T05] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V04 cse0 [V04,T03] ( 2, 2 ) int -> eax "CSE - aggressive" +; V05 cse1 [V05,T02] ( 5, 2.50) int -> ecx multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -21,9 +22,10 @@ G_M61710_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push esi ;; size=4 bbWeight=1 PerfScore 2.25 G_M61710_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test cl, cl
+ movzx eax, cl + test eax, eax
jne SHORT G_M61710_IG05
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M61710_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz movzx ecx, dl test ecx, ecx @@ -78,6 +80,6 @@ G_M61710_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 4, PerfScore 9.00, instruction count 35, allocated bytes for code 83 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
+; Total bytes of code 86, prolog size 4, PerfScore 9.25, instruction count 36, allocated bytes for code 86 (MethodHash=f5570ef1) for method System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
; ============================================================

+2 (+4.44%) : 5692.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)

@@ -12,6 +12,7 @@ ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> edx class-hnd single-def <System.Net.Http.HttpRequestMessage> ;* V02 tmp0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version> ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
+; V04 cse0 [V04,T02] ( 2, 1 ) int -> eax "CSE - moderate"
; ; Lcl frame size = 0 @@ -27,12 +28,15 @@ G_M47920_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000 G_M47920_IG03: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz mov eax, gword ptr [edx+0x10] ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 2
+ mov eax, dword ptr [eax+0x04] + ; gcrRegs -[eax] + cmp eax, 2
jl SHORT G_M47920_IG05 cmp dword ptr [edx+0x20], 0 je SHORT G_M47920_IG06 mov eax, gword ptr [ecx+0x4C]
- ;; size=18 bbWeight=0.50 PerfScore 6.00
+ ; gcrRegs +[eax] + ;; size=20 bbWeight=0.50 PerfScore 5.62
G_M47920_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret @@ -61,6 +65,6 @@ G_M47920_IG09: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 45, prolog size 3, PerfScore 17.50, instruction count 20, allocated bytes for code 45 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
+; Total bytes of code 47, prolog size 3, PerfScore 17.12, instruction count 21, allocated bytes for code 47 (MethodHash=a75444cf) for method System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
; ============================================================

+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

-34 (-49.28%) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E - jne SHORT G_M38955_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + ; byrRegs -[ecx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; gcrRegs +[eax edx] + ; byrRegs +[ecx] + cmp dword ptr [eax], 0xD1FFAB1E + jne SHORT G_M38955_IG03 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[eax]
- cmp edx, 0xD1FFAB1E - jne SHORT G_M38955_IG07 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov eax, dword ptr [esi+0x08] - cmp eax, dword ptr [edi+0x04]
+ mov eax, dword ptr [edx+0x08] + cmp eax, dword ptr [ecx+0x04]
sete al movzx eax, al ;; size=12 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - pop esi - pop edi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M38955_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - jmp SHORT G_M38955_IG05 - ;; size=14 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - ; byrRegs -[edi] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 69, prolog size 5, PerfScore 19.31, instruction count 31, allocated bytes for code 69 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-34 (-49.28%) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,74 +9,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax
- je SHORT G_M38955_IG08
+ jne SHORT G_M38955_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E - jne SHORT G_M38955_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M38955_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + ; byrRegs -[ecx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG04: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M38955_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; gcrRegs +[eax edx] + ; byrRegs +[ecx] + cmp dword ptr [eax], 0xD1FFAB1E + jne SHORT G_M38955_IG03 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref
; gcrRegs -[eax]
- cmp edx, 0xD1FFAB1E - jne SHORT G_M38955_IG07 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov eax, dword ptr [esi+0x08] - cmp eax, dword ptr [edi+0x04]
+ mov eax, dword ptr [edx+0x08] + cmp eax, dword ptr [ecx+0x04]
sete al movzx eax, al ;; size=12 bbWeight=1 PerfScore 6.25
-G_M38955_IG06: ; bbWeight=1, epilog, nogc, extend - pop esi - pop edi
+G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M38955_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - jmp SHORT G_M38955_IG05 - ;; size=14 bbWeight=0.50 PerfScore 1.75 -G_M38955_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - ; byrRegs -[edi] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M38955_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 69, prolog size 5, PerfScore 19.31, instruction count 31, allocated bytes for code 69 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-32 (-47.76%) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -9,73 +9,53 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object> -; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
+; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object> +; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V06 cse0 [V06,T03] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 2, 2 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz
; gcrRegs +[edx]
- test edx, edx - je SHORT G_M38955_IG08
+ ; byrRegs +[ecx] + mov eax, edx + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M38955_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [edx] - ; gcrRegs -[edx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M38955_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - cmp edx, 0xD1FFAB1E
+G_M38955_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M38955_IG06
- ;; size=8 bbWeight=1 PerfScore 1.25 -G_M38955_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M38955_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx] + ; byrRegs -[ecx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M38955_IG05: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M38955_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.50 PerfScore 0.75 -G_M38955_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov eax, dword ptr [esi+0x08] - cmp eax, dword ptr [edi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [edx+0x08] + cmp eax, dword ptr [ecx+0x04]
sete al movzx eax, al ;; size=12 bbWeight=1 PerfScore 6.25 G_M38955_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M38955_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - ; byrRegs -[edi] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M38955_IG09: ; bbWeight=0, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 67, prolog size 5, PerfScore 17.62, instruction count 30, allocated bytes for code 67 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

+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

-32 (-47.76%) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

@@ -8,74 +8,53 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Reflection.MetadataImport> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataImport> ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref "field V03.m_keepalive (fldOffset=0x0)" P-INDEP
-; V05 tmp3 [V05,T04] ( 2, 1 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP -; V06 cse0 [V06,T03] ( 3, 1 ) int -> edx "CSE - moderate"
+; V05 tmp3 [V05,T03] ( 2, 1 ) int -> eax "field V03.m_metadataImport2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0
-G_M38955_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M38955_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M38955_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M38955_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M38955_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M38955_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M38955_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi] - ; byrRegs -[edi]
+ ; gcrRegs -[eax edx] + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M38955_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M38955_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M38955_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M38955_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Reflection.MetadataImport - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.25 PerfScore 0.38 -G_M38955_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov eax, dword ptr [esi+0x08] - cmp eax, dword ptr [edi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [edx+0x08] + cmp eax, dword ptr [ecx+0x04]
sete al movzx eax, al ;; size=12 bbWeight=0.50 PerfScore 3.12
-G_M38955_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+G_M38955_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 67, prolog size 5, PerfScore 12.81, instruction count 30, allocated bytes for code 67 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 35, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 35 (MethodHash=885867d4) for method System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-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)
; ============================================================

+11 (+2.45%) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValuesSystem.__Canon:this (Tier1)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 9.50) ref -> esi this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler>
-; V01 arg1 [V01,T03] ( 4, 4 ) ref -> edi class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T20] ( 2, 2 ) int -> [ebp+0x0C] single-def -; V03 TypeCtx [V03,T13] ( 4, 3.20) int -> [ebp+0x08] single-def
+; V01 arg1 [V01,T06] ( 4, 3.12) ref -> [ebp-0x18] class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T19] ( 2, 2 ) int -> [ebp+0x0C] single-def +; V03 TypeCtx [V03,T13] ( 4, 3.20) int -> ebx single-def
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V05 loc1 [V05,T07] ( 5, 5 ) int -> [ebp-0x14] spill-single-def ;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> @@ -19,31 +19,31 @@ ; V08 tmp1 [V08,T01] ( 12, 10.50) ref -> [ebp-0x1C] ;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref ;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp4 [V11,T15] ( 3, 3 ) int -> ebx "fgMakeTemp is creating a new local variable" -; V12 tmp5 [V12,T02] ( 6, 8.50) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
+; V11 tmp4 [V11,T20] ( 3, 1.25) int -> edi "fgMakeTemp is creating a new local variable" +; V12 tmp5 [V12,T02] ( 6, 6.75) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.String]> ;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp8 [V15,T17] ( 3, 2 ) ref -> eax single-def -; V16 tmp9 [V16,T09] ( 3, 4 ) int -> [ebp-0x18] "spilling helperCall"
+; V15 tmp8 [V15,T18] ( 3, 2 ) ref -> [ebp-0x20] spill-single-def +; V16 tmp9 [V16,T09] ( 3, 4 ) int -> ebx "spilling helperCall"
; V17 tmp10 [V17,T22] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V18 tmp11 [V18,T08] ( 4, 4 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.String]> ;* V20 tmp13 [V20,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V21 tmp14 [V21,T23] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V22 tmp15 [V22,T16] ( 3, 2.50) ref -> ecx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V22 tmp15 [V22,T15] ( 3, 2.50) ref -> ecx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V23 tmp16 [V23,T14] ( 4, 3 ) int -> edx "Inline stloc first use temp" ;* V24 tmp17 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP ;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
-; V26 tmp19 [V26,T18] ( 3, 2 ) byref -> edi "field V19._reference (fldOffset=0x0)" P-INDEP -; V27 tmp20 [V27,T19] ( 3, 2 ) int -> eax "field V19._length (fldOffset=0x4)" P-INDEP -; V28 tmp21 [V28,T04] ( 3, 6 ) ref -> ecx single-def "argument with side effect" -; V29 tmp22 [V29,T05] ( 3, 6 ) ref -> ecx single-def "arr expr"
+; V26 tmp19 [V26,T16] ( 3, 2.50) byref -> edi "field V19._reference (fldOffset=0x0)" P-INDEP +; V27 tmp20 [V27,T17] ( 3, 2.50) int -> eax "field V19._length (fldOffset=0x4)" P-INDEP +; V28 tmp21 [V28,T03] ( 3, 6 ) ref -> ecx single-def "argument with side effect" +; V29 tmp22 [V29,T04] ( 3, 6 ) ref -> ecx single-def "arr expr"
; V30 tmp23 [V30,T11] ( 2, 4 ) ref -> ecx single-def "argument with side effect" ; V31 tmp24 [V31,T12] ( 2, 4 ) ref -> edx single-def "argument with side effect" ; V32 tmp25 [V32,T24] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V33 rat0 [V33,T06] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable"
+; V33 rat0 [V33,T05] ( 3, 5.60) int -> edx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 20
G_M20497_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -51,7 +51,7 @@ G_M20497_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 20
mov eax, dword ptr [ebp+0x08] mov dword ptr [ebp-0x10], eax mov esi, ecx @@ -85,37 +85,39 @@ G_M20497_IG04: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs= ; GC ptr vars +{V08} mov ecx, dword ptr [edx+0x08] mov dword ptr [ebp-0x14], ecx
- mov dword ptr [ebp+0x08], ebx
mov eax, dword ptr [ebx+0x20] cmp dword ptr [eax], 0xD1FFAB1E jne G_M20497_IG18
+ mov gword ptr [ebp-0x18], edi + ; GC ptr vars +{V01}
mov eax, edi ; gcrRegs +[eax] test eax, eax je SHORT G_M20497_IG07 ;; size=33 bbWeight=1 PerfScore 12.50
-G_M20497_IG05: ; bbWeight=0.25, gcVars=00000002 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[edx] - mov ebx, 0xD1FFAB1E ; <unknown class> - cmp dword ptr [eax], ebx
+G_M20497_IG05: ; bbWeight=0.25, gcVars=00000042 {V01 V08}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[edx edi] + mov edi, 0xD1FFAB1E ; <unknown class> + cmp dword ptr [eax], edi
je SHORT G_M20497_IG08 ;; size=9 bbWeight=0.25 PerfScore 1.06
-G_M20497_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M20497_IG06: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov ecx, ebx - mov edx, edi
+ mov ecx, edi + mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
call CORINFO_HELP_CHKCASTARRAY
- ; gcrRegs -[edx edi] +[eax]
+ ; gcrRegs -[edx] +[eax]
jmp SHORT G_M20497_IG08
- ;; size=11 bbWeight=1 PerfScore 3.50 -G_M20497_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=0.12 PerfScore 0.53 +G_M20497_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] xor edi, edi ; byrRegs +[edi] xor eax, eax jmp SHORT G_M20497_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 2.50
G_M20497_IG08: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[eax] ; byrRegs -[edi] @@ -125,9 +127,9 @@ G_M20497_IG08: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0 ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 1.25 G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov ebx, dword ptr [ebp+0x0C] - add ebx, -4 - cmp ebx, 1
+ mov ecx, dword ptr [ebp+0x0C] + add ecx, -4 + cmp ecx, 1
ja G_M20497_IG19 push eax push edi @@ -137,6 +139,8 @@ G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 call [<unknown method>] ; gcrRegs +[eax] ; byrRegs -[edi]
+ mov gword ptr [ebp-0x20], eax + ; GC ptr vars +{V15}
mov edi, gword ptr [ebp-0x1C] ; gcrRegs +[edi] inc dword ptr [edi+0x0C] @@ -145,25 +149,30 @@ G_M20497_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 mov edx, dword ptr [edi+0x08] cmp dword ptr [ecx+0x04], edx jbe SHORT G_M20497_IG11
- ;; size=49 bbWeight=1 PerfScore 22.75 -G_M20497_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=52 bbWeight=1 PerfScore 23.75 +G_M20497_IG10: ; bbWeight=0.50, gcVars=00040000 {V15}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax]
; GC ptr vars -{V08}
- lea ebx, [edx+0x01] - mov dword ptr [edi+0x08], ebx - push eax
+ lea eax, [edx+0x01] + mov dword ptr [edi+0x08], eax + push gword ptr [ebp-0x20] + ; GC ptr vars -{V15}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
jmp SHORT G_M20497_IG12
- ;; size=14 bbWeight=0.50 PerfScore 2.75 -G_M20497_IG11: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.75 +G_M20497_IG11: ; bbWeight=0.50, gcVars=00040000 {V15}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V15 V18} + mov eax, gword ptr [ebp-0x20]
; gcrRegs +[eax] mov ecx, edi ; gcrRegs +[ecx] mov edx, eax ; gcrRegs +[edx]
+ ; GC ptr vars -{V15 V18}
call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=10 bbWeight=0.50 PerfScore 1.75
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx] @@ -177,8 +186,8 @@ G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov ebx, dword ptr [ebp-0x14] - lea edx, [4*ebx]
+ mov eax, dword ptr [ebp-0x14] + lea edx, [4*eax]
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] @@ -196,34 +205,36 @@ G_M20497_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov eax, dword ptr [eax+0x2C] call [eax+0x10]<unknown method> ; gcrRegs -[ecx]
- cmp ebx, dword ptr [edi+0x08]
+ mov eax, dword ptr [ebp-0x14] + cmp eax, dword ptr [edi+0x08]
jae G_M20497_IG20
- mov ecx, dword ptr [ebp+0x08] - mov edx, dword ptr [ecx+0x20] - mov eax, dword ptr [edx+0x08] - test eax, eax
+ mov ecx, dword ptr [ebx+0x20] + mov edx, dword ptr [ecx+0x08] + test edx, edx
je SHORT G_M20497_IG14 ;; size=97 bbWeight=1 PerfScore 42.00 G_M20497_IG13: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], eax
+ mov ebx, edx
jmp SHORT G_M20497_IG15
- ;; size=5 bbWeight=0.80 PerfScore 2.40
+ ;; size=4 bbWeight=0.80 PerfScore 1.80
G_M20497_IG14: ; bbWeight=0.20, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov dword ptr [ebp-0x18], eax - ;; size=13 bbWeight=0.20 PerfScore 0.45
+ mov ebx, eax + ;; size=14 bbWeight=0.20 PerfScore 0.35
G_M20497_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx]
- cmp ebx, dword ptr [ecx+0x04]
+ mov eax, dword ptr [ebp-0x14] + cmp eax, dword ptr [ecx+0x04]
jae SHORT G_M20497_IG17
- mov ecx, gword ptr [ecx+4*ebx+0x08]
+ mov ecx, gword ptr [ecx+4*eax+0x08]
call <unknown method> ; gcrRegs -[ecx edi] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x18]
+ mov edx, ebx
call [System.Text.RegularExpressions.RegexCompiler:<LoadSearchValues>g__MakeUnsafeAs|163_0[System.__Canon](System.Type):System.Reflection.MethodInfo] ; gcrRegs -[ecx] mov edx, eax @@ -232,7 +243,7 @@ G_M20497_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[eax ecx edx esi]
- ;; size=38 bbWeight=1 PerfScore 16.75
+ ;; size=40 bbWeight=1 PerfScore 17.00
G_M20497_IG16: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -288,6 +299,6 @@ G_M20497_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ...

+3 (+3.49%) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)

@@ -12,6 +12,7 @@ ; V01 arg1 [V01,T01] ( 3, 2.50) ubyte -> edx single-def ; V02 tmp0 [V02,T02] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Net.Http.HttpConnection> ; V03 cse0 [V03,T03] ( 3, 1.50) ref -> ecx "CSE - moderate"
+; V04 cse1 [V04,T04] ( 2, 1 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 0 @@ -44,7 +45,8 @@ G_M41763_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ;; size=4 bbWeight=0.50 PerfScore 1.25 G_M41763_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[esi]
- test dl, dl
+ movzx ecx, dl + test ecx, ecx
je SHORT G_M41763_IG03 mov ecx, esi ; gcrRegs +[ecx] @@ -58,7 +60,7 @@ G_M41763_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e ; gcrRegs +[ecx] call [System.Net.Http.HttpConnection+HttpContentReadStream:DrainOnDisposeAsync():System.Threading.Tasks.Task:this] ; gcrRegs -[ecx esi] +[eax]
- ;; size=26 bbWeight=0.50 PerfScore 6.50
+ ;; size=29 bbWeight=0.50 PerfScore 6.62
G_M41763_IG05: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -81,6 +83,6 @@ G_M41763_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e jmp SHORT G_M41763_IG03 ;; size=27 bbWeight=0.50 PerfScore 6.38
-; Total bytes of code 86, prolog size 5, PerfScore 44.12, instruction count 39, allocated bytes for code 86 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
+; Total bytes of code 89, prolog size 5, PerfScore 44.25, instruction count 40, allocated bytes for code 89 (MethodHash=201e5cdc) for method System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
; ============================================================

+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

-32 (-48.48%) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,70 +9,51 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax
- je SHORT G_M40448_IG08
+ jne SHORT G_M40448_IG05
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E - jne SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - ; gcrRegs -[eax] - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M40448_IG07 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M40448_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax
- cmp edi, dword ptr [esi+0x04]
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG04: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; gcrRegs +[eax edx] + ; byrRegs +[ecx] + cmp dword ptr [eax], 0xD1FFAB1E + jne SHORT G_M40448_IG03 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref + ; gcrRegs -[eax] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG06: ; bbWeight=1, epilog, nogc, extend - pop esi - pop edi
+ movzx eax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M40448_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Int32 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - jmp SHORT G_M40448_IG05 - ;; size=15 bbWeight=0.50 PerfScore 2.75 -G_M40448_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - xor eax, eax - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 66, prolog size 5, PerfScore 20.06, instruction count 30, allocated bytes for code 66 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-30 (-46.88%) : 309121.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,69 +9,49 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax
- je SHORT G_M40448_IG08 - ;; size=6 bbWeight=1 PerfScore 1.50 -G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E - jne SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - ; gcrRegs -[eax] - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Int32 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ;; size=13 bbWeight=0.50 PerfScore 1.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ;; size=6 bbWeight=1 PerfScore 1.50 +G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E + jne SHORT G_M40448_IG06 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref + ; gcrRegs -[eax] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend - pop esi - pop edi
+ movzx eax, al + ;; size=11 bbWeight=1 PerfScore 6.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M40448_IG08: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi]
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edx] + ; byrRegs -[ecx]
xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG09: ; bbWeight=0.25, epilog, nogc, extend - pop esi - pop edi
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 64, prolog size 5, PerfScore 19.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-30 (-46.88%) : 431398.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,69 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object> -; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.UInt32> -; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object> +; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.UInt32> +; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0 G_M22229_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M22229_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M22229_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi - ; gcrRegs +[edx] - test edx, edx - je SHORT G_M22229_IG08
+ mov eax, edx + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M22229_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [edx] - ; gcrRegs -[edx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M22229_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M22229_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E
+G_M22229_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M22229_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25 -G_M22229_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M22229_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M22229_IG05: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M22229_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.UInt32 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ;; size=13 bbWeight=0.50 PerfScore 1.75 -G_M22229_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M22229_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M22229_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M22229_IG09: ; bbWeight=0, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 64, prolog size 5, PerfScore 18.38, instruction count 29, allocated bytes for code 64 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=4843a92a) for method System.UInt32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

+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 ...

+33 (+5.17%) : 454875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,uint,int,System.RuntimeType,byref):this (Tier1)

@@ -13,12 +13,12 @@ ; V01 arg1 [V01,T17] ( 4, 2.10) struct (12) [ebp+0x14] do-not-enreg[SF] ld-addr-op single-def <System.RuntimeType+RuntimeTypeCache+Filter> ; V02 arg2 [V02,T05] ( 3, 3.53) int -> edi single-def ; V03 arg3 [V03,T16] ( 2, 2.53) int -> [ebp+0x10] single-def
-; V04 arg4 [V04,T07] ( 7, 4.12) ref -> ebx class-hnd single-def <System.RuntimeType>
+; V04 arg4 [V04,T08] ( 7, 4.12) ref -> ebx class-hnd single-def <System.RuntimeType>
; V05 arg5 [V05,T31] ( 1, 0.12) byref -> [ebp+0x08] single-def ; V06 loc0 [V06,T24] ( 2, 1.12) ubyte -> [ebp-0x10] spill-single-def ; V07 loc1 [V07,T23] ( 3, 1.23) ubyte -> [ebp-0x14] spill-single-def ; V08 loc2 [V08,T01] ( 5, 7.14) int -> [ebp-0x18]
-; V09 loc3 [V09,T08] ( 8, 3.53) int -> [ebp-0x1C] ld-addr-op
+; V09 loc3 [V09,T06] ( 8, 4.86) int -> [ebp-0x1C] ld-addr-op
; V10 loc4 [V10,T26] ( 3, 0.35) int -> eax ; V11 loc5 [V11,T28] ( 3, 0.23) int -> edx ; V12 loc6 [V12,T29] ( 2, 0.23) ubyte -> edx @@ -47,7 +47,7 @@ ;* V35 tmp19 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.MdUtf8String> ; V36 tmp20 [V36,T00] ( 5, 9.22) int -> [ebp-0x28] "Inlining Arg" ;* V37 tmp21 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp22 [V38,T06] ( 4, 4.33) ubyte -> registers "Inline stloc first use temp"
+; V38 tmp22 [V38,T07] ( 4, 4.33) ubyte -> registers "Inline stloc first use temp"
; V39 tmp23 [V39,T11] ( 2, 2.88) int -> eax ; V40 tmp24 [V40,T13] ( 3, 2.88) ubyte -> eax "Inline return value spill temp" ; V41 tmp25 [V41,T32] ( 4, 0 ) ubyte -> eax "Inline return value spill temp" @@ -131,10 +131,10 @@ G_M37727_IG06: ; bbWeight=1.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 G_M37727_IG07: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref movzx eax, al test eax, eax
- jne G_M37727_IG39
+ jne G_M37727_IG40
xor eax, eax ;; size=13 bbWeight=1 PerfScore 1.75
-G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
movzx eax, al mov dword ptr [ebp-0x10], eax mov eax, gword ptr [esi+0x08] @@ -146,21 +146,21 @@ G_M37727_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 mov dword ptr [ebp-0x14], eax xor eax, eax cmp dword ptr [ebp+0x10], 0
- jle SHORT G_M37727_IG20 - ;; size=29 bbWeight=1 PerfScore 11.75 -G_M37727_IG09: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M37727_IG31 + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M37727_IG09: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x18], eax mov edx, dword ptr [edi+4*eax] mov ecx, dword ptr [ebp-0x30] cmp ecx, 1
- jne SHORT G_M37727_IG21 - ;; size=14 bbWeight=1.53 PerfScore 8.06
+ jne G_M37727_IG23 + ;; size=18 bbWeight=1.53 PerfScore 8.06
G_M37727_IG10: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x1C], edx mov ecx, edx call <unknown method> test eax, eax
- je G_M37727_IG40
+ je G_M37727_IG41
;; size=18 bbWeight=1.53 PerfScore 5.37 G_M37727_IG11: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x28], eax @@ -170,113 +170,47 @@ G_M37727_IG11: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 G_M37727_IG12: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov edx, 1 cmp dword ptr [ebp-0x30], 1
- jne G_M37727_IG32
+ jne G_M37727_IG33
mov edx, dword ptr [ebp-0x2C] cmp eax, edx
- je G_M37727_IG31
+ je G_M37727_IG32
;; size=26 bbWeight=1.44 PerfScore 7.93 G_M37727_IG13: ; bbWeight=1.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref xor eax, eax ;; size=2 bbWeight=1.35 PerfScore 0.34
-G_M37727_IG14: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M37727_IG14: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test eax, eax
- jne SHORT G_M37727_IG25 - ;; size=4 bbWeight=1.44 PerfScore 1.80
+ jne G_M37727_IG25 + ;; size=8 bbWeight=1.44 PerfScore 1.80
G_M37727_IG15: ; bbWeight=1.37, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov ecx, dword ptr [ebp-0x30] cmp ecx, 1
- jne SHORT G_M37727_IG24
+ jne SHORT G_M37727_IG19
;; size=8 bbWeight=1.37 PerfScore 3.08 G_M37727_IG16: ; bbWeight=0.91, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref mov eax, 1 ;; size=5 bbWeight=0.91 PerfScore 0.23 G_M37727_IG17: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz test al, al
- jne SHORT G_M37727_IG19
+ jne SHORT G_M37727_IG21
;; size=4 bbWeight=1.44 PerfScore 1.80
-G_M37727_IG18: ; bbWeight=5.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M37727_IG18: ; bbWeight=5.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=5.77 PerfScore 20.19 -G_M37727_IG19: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x18] - inc eax - mov edx, dword ptr [ebp+0x10] - cmp eax, edx - mov dword ptr [ebp+0x10], edx - jl SHORT G_M37727_IG09 - ;; size=14 bbWeight=1.53 PerfScore 6.91 -G_M37727_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - ; gcrRegs -[ebx esi] - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 24 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M37727_IG21: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ebx esi] - cmp ecx, 2 - jne SHORT G_M37727_IG23 - ;; size=5 bbWeight=0.51 PerfScore 0.64 -G_M37727_IG22: ; bbWeight=0.51, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M37727_IG10 - ;; size=2 bbWeight=0.51 PerfScore 1.03 -G_M37727_IG23: ; bbWeight=0.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - mov dword ptr [ebp-0x1C], edx - mov edx, dword ptr [ebp-0x2C] - jmp SHORT G_M37727_IG25 - ;; size=8 bbWeight=0.26 PerfScore 1.03 -G_M37727_IG24: ; bbWeight=0.46, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M37727_IG21 + ;; size=18 bbWeight=5.77 PerfScore 31.72 +G_M37727_IG19: ; bbWeight=0.46, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
xor eax, eax cmp ecx, 2 sete al mov ecx, dword ptr [ebp-0x30] jmp SHORT G_M37727_IG17 ;; size=13 bbWeight=0.46 PerfScore 2.06
-G_M37727_IG25: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [ebp-0x1C], 0 - jne SHORT G_M37727_IG27 - ;; size=6 bbWeight=0.12 PerfScore 0.35 -G_M37727_IG26: ; bbWeight=0.47, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - mov ecx, 0xD1FFAB1E - ; gcrRegs +[ecx] - mov edx, 0xD1FFAB1E - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] - ;; size=16 bbWeight=0.47 PerfScore 1.63 -G_M37727_IG27: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - mov ecx, dword ptr [ebp-0x1C] - call <unknown method> - mov edx, eax - and edx, 7 - cmp dword ptr [ebp-0x14], 0 - jne G_M37727_IG37 - ;; size=23 bbWeight=0.12 PerfScore 0.64 -G_M37727_IG28: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - cmp edx, 6 - sete dl - movzx edx, dl - test al, 16 - setne al - movzx eax, al - mov dword ptr [ebp-0x20], eax - push eax - mov ecx, edx - mov edx, dword ptr [ebp-0x14] - call [<unknown method>] - mov dword ptr [ebp-0x24], eax - mov edx, dword ptr [ebp-0x10] - test edx, dword ptr [ebp-0x20] - jne G_M37727_IG38 - ;; size=47 bbWeight=0.12 PerfScore 1.66 -G_M37727_IG29: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M37727_IG20: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Reflection.RtFieldInfo call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -310,13 +244,87 @@ G_M37727_IG29: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[edx] ; byrRegs -[ecx]
- jmp G_M37727_IG19 - ;; size=76 bbWeight=0.12 PerfScore 2.50
+ ;; size=71 bbWeight=0.12 PerfScore 2.27 +G_M37727_IG21: ; bbWeight=1.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x18] + inc eax + mov ecx, dword ptr [ebp+0x10] + cmp eax, ecx + mov dword ptr [ebp+0x10], ecx + jl G_M37727_IG09 + ;; size=18 bbWeight=1.53 PerfScore 6.91 +G_M37727_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ebx esi] + jmp G_M37727_IG31 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M37727_IG23: ; bbWeight=0.51, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[ebx esi] + cmp ecx, 2 + je G_M37727_IG10 + ;; size=9 bbWeight=0.51 PerfScore 0.64 +G_M37727_IG24: ; bbWeight=0.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov dword ptr [ebp-0x1C], edx + mov edx, dword ptr [ebp-0x2C] + ;; size=6 bbWeight=0.26 PerfScore 0.51 +G_M37727_IG25: ; bbWeight=1.44, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [ebp-0x1C], 0 + jne SHORT G_M37727_IG29 + ;; size=6 bbWeight=1.44 PerfScore 4.33 +G_M37727_IG26: ; bbWeight=0.47, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov ecx, 0xD1FFAB1E + ; gcrRegs +[ecx] + mov edx, 0xD1FFAB1E + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx] + mov eax, dword ptr [ebp-0x1C] + ;; size=19 bbWeight=0.47 PerfScore 2.09 +G_M37727_IG27: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + mov dword ptr [ebp-0x1C], eax + mov ecx, eax + call <unknown method> + mov edx, eax + and edx, 7 + cmp dword ptr [ebp-0x14], 0 + jne G_M37727_IG38 + ;; size=25 bbWeight=0.12 PerfScore 0.67 +G_M37727_IG28: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref + cmp edx, 6 + sete dl + movzx edx, dl + test al, 16 + setne al + movzx eax, al + mov dword ptr [ebp-0x20], eax + push eax
...

+8 (+11.43%) : 236896.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)

@@ -26,9 +26,10 @@ ;* V15 arg15 [V15 ] ( 0, 0 ) float -> zero-ref single-def ;* V16 arg16 [V16 ] ( 0, 0 ) float -> zero-ref single-def ;* V17 arg17 [V17 ] ( 0, 0 ) float -> zero-ref single-def
-; V18 arg18 [V18,T00] ( 1, 1 ) simd12 -> [ebp+0x08] single-def <System.Numerics.Vector3>
+; V18 arg18 [V18,T01] ( 1, 1 ) simd12 -> [ebp+0x08] single-def <System.Numerics.Vector3>
;* V19 tmp0 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp1 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V21 cse0 [V21,T00] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,7 +45,12 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} vmovmskps ecx, xmm0 and ecx, 7 cmp ecx, 7
- je SHORT G_M16340_IG04
+ sete cl + movzx ecx, cl + test ecx, ecx + jne SHORT G_M16340_IG05 + ;; size=38 bbWeight=1 PerfScore 14.00 +G_M16340_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -52,21 +58,21 @@ G_M16340_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] ; gcrRegs -[ecx edx] mov eax, 101
- ;; size=51 bbWeight=1 PerfScore 16.25 -G_M16340_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=21 bbWeight=0.50 PerfScore 1.88 +G_M16340_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret 76
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M16340_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=4 bbWeight=0.50 PerfScore 1.25 +G_M16340_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov eax, 100 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M16340_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M16340_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret 76 ;; size=4 bbWeight=0.50 PerfScore 1.25 RWD00 dq 3F8000003F800000h, 000000003F800000h
-; Total bytes of code 70, prolog size 6, PerfScore 22.38, instruction count 19, allocated bytes for code 70 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
+; Total bytes of code 78, prolog size 6, PerfScore 20.75, instruction count 22, allocated bytes for code 78 (MethodHash=48a0c02b) for method Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
; ============================================================

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 (+12.50%) : 75902.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,8 +9,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -20,8 +21,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M54186_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M54186_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -29,13 +33,13 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M54186_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M54186_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 75995.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,8 +9,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -20,8 +21,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M31021_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M31021_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -29,13 +33,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 75964.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -9,8 +9,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -20,8 +21,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -29,13 +33,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-33 (-42.31%) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,84 +8,63 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T02] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey> ; V03 tmp1 [V03,T03] ( 3, 1.50) ubyte -> eax "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <ILCompiler.IBC.IBCProfileParser+IBCBlobKey>
-; V05 tmp3 [V05,T05] ( 2, 1 ) int -> eax "field V04.Token (fldOffset=0x0)" P-INDEP -; V06 tmp4 [V06,T06] ( 2, 1 ) int -> edx "field V04.Type (fldOffset=0x4)" P-INDEP -; V07 cse0 [V07,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V05 tmp3 [V05,T04] ( 2, 1 ) int -> eax "field V04.Token (fldOffset=0x0)" P-INDEP +; V06 tmp4 [V06,T05] ( 2, 1 ) int -> edx "field V04.Type (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M25636_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M25636_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M25636_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M25636_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M25636_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M25636_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M25636_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi] - ; byrRegs -[edi]
+ ; gcrRegs -[eax edx] + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M25636_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M25636_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M25636_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M25636_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; ILCompiler.IBC.IBCProfileParser+IBCBlobKey - call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx] + mov eax, dword ptr [edx+0x04] + mov edx, dword ptr [edx+0x08]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, dword ptr [esi+0x04] - mov edx, dword ptr [esi+0x08] - cmp eax, dword ptr [edi] - jne SHORT G_M25636_IG09
+ cmp eax, dword ptr [ecx] + jne SHORT G_M25636_IG07
xor eax, eax
- cmp edx, dword ptr [edi+0x04]
+ cmp edx, dword ptr [ecx+0x04]
sete al
- jmp SHORT G_M25636_IG10
+ jmp SHORT G_M25636_IG08
;; size=20 bbWeight=0.50 PerfScore 7.12
-G_M25636_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - ; byrRegs -[edi]
+G_M25636_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25636_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop esi - pop edi
+G_M25636_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 78, prolog size 5, PerfScore 17.44, instruction count 35, allocated bytes for code 78 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 45, prolog size 3, PerfScore 12.62, instruction count 21, allocated bytes for code 45 (MethodHash=acaf9bdb) for method ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-33 (-40.74%) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,79 +8,58 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[S] "Inlining Arg" <System.Speech.Synthesis.TtsEngine.SpeechEventInfo>
-; V04 cse0 [V04,T03] ( 3, 1 ) int -> edx "CSE - moderate"
; ; Lcl frame size = 0
-G_M46071_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M46071_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M46071_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M46071_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M46071_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M46071_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M46071_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M46071_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi] - ; byrRegs -[edi]
+ ; gcrRegs -[eax edx] + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46071_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M46071_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M46071_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M46071_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M46071_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Speech.Synthesis.TtsEngine.SpeechEventInfo - call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx] + push dword ptr [ecx+0x08] + push dword ptr [ecx+0x04] + push dword ptr [ecx] + add edx, 4
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M46071_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - push dword ptr [edi+0x08] - push dword ptr [edi+0x04] - push dword ptr [edi] - add esi, 4 - ; gcrRegs -[esi] - ; byrRegs +[esi] - push dword ptr [esi+0x08] - push dword ptr [esi+0x04] - push dword ptr [esi]
+ ; byrRegs +[edx] + push dword ptr [edx+0x08] + push dword ptr [edx+0x04] + push dword ptr [edx]
call [System.Speech.Synthesis.TtsEngine.SpeechEventInfo:op_Equality(System.Speech.Synthesis.TtsEngine.SpeechEventInfo,System.Speech.Synthesis.TtsEngine.SpeechEventInfo):ubyte]
- ; byrRegs -[esi edi]
+ ; byrRegs -[ecx edx]
;; size=25 bbWeight=0.50 PerfScore 7.62
-G_M46071_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+G_M46071_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 81, prolog size 5, PerfScore 17.81, instruction count 34, allocated bytes for code 81 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 3, PerfScore 13.00, instruction count 20, allocated bytes for code 48 (MethodHash=c43e4c08) for method System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-33 (-40.74%) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,82 +8,61 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.50) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Speech.Synthesis.TtsEngine.ContourPoint> ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.Speech.Synthesis.TtsEngine.ContourPoint> ;* V04 tmp2 [V04 ] ( 0, 0 ) float -> zero-ref "field V03._start (fldOffset=0x0)" P-INDEP ;* V05 tmp3 [V05 ] ( 0, 0 ) float -> zero-ref "field V03._change (fldOffset=0x4)" P-INDEP ;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._changeType (fldOffset=0x8)" P-INDEP
-; V07 cse0 [V07,T03] ( 3, 1 ) int -> edx "CSE - moderate"
; ; Lcl frame size = 0
-G_M17647_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M17647_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M17647_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M17647_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M17647_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M17647_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M17647_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M17647_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi] - ; byrRegs -[edi]
+ ; gcrRegs -[eax edx] + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M17647_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M17647_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M17647_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M17647_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M17647_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Speech.Synthesis.TtsEngine.ContourPoint - call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx] + push dword ptr [ecx+0x08] + push dword ptr [ecx+0x04] + push dword ptr [ecx] + add edx, 4
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M17647_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - push dword ptr [edi+0x08] - push dword ptr [edi+0x04] - push dword ptr [edi] - add esi, 4 - ; gcrRegs -[esi] - ; byrRegs +[esi] - push dword ptr [esi+0x08] - push dword ptr [esi+0x04] - push dword ptr [esi]
+ ; byrRegs +[edx] + push dword ptr [edx+0x08] + push dword ptr [edx+0x04] + push dword ptr [edx]
call [System.Speech.Synthesis.TtsEngine.ContourPoint:op_Equality(System.Speech.Synthesis.TtsEngine.ContourPoint,System.Speech.Synthesis.TtsEngine.ContourPoint):ubyte]
- ; byrRegs -[esi edi]
+ ; byrRegs -[ecx edx]
;; size=25 bbWeight=0.50 PerfScore 7.62
-G_M17647_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+G_M17647_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 81, prolog size 5, PerfScore 17.81, instruction count 34, allocated bytes for code 81 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 3, PerfScore 13.00, instruction count 20, allocated bytes for code 48 (MethodHash=2f77bb10) for method System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

+3 (+12.50%) : 181033.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA256CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M57738_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M57738_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M57738_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M57738_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M57738_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M57738_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M57738_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M57738_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=76961e75) for method System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 181065.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 181097.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M31021_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M31021_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-29 (-46.03%) : 462141.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,71 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.83) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.83) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 3.34) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 1.83) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 3.34) int -> eax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG04: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax esi]
+ ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax
- ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M40448_IG05: ; bbWeight=0.25, epilog, nogc, extend - pop esi - pop edi
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.25 PerfScore 0.62 -G_M40448_IG06: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ecx] - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E - je SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.83 PerfScore 2.71 -G_M40448_IG07: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.42 PerfScore 0.63 -G_M40448_IG08: ; bbWeight=0.83, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.83 PerfScore 3.55 -G_M40448_IG09: ; bbWeight=0.83, epilog, nogc, extend - pop esi - pop edi
+ movzx eax, al + ;; size=11 bbWeight=0.83 PerfScore 5.21 +G_M40448_IG07: ; bbWeight=0.83, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.83 PerfScore 2.09
+ ;; size=2 bbWeight=0.83 PerfScore 1.25
-; Total bytes of code 63, prolog size 5, PerfScore 16.28, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 12.97, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-29 (-46.03%) : 182222.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,69 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object> -; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Int32> -; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object> +; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32> +; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi - ; gcrRegs +[edx] - test edx, edx - je SHORT G_M40448_IG08
+ mov eax, edx + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [edx] - ; gcrRegs -[edx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M40448_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 63, prolog size 5, PerfScore 17.38, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

-29 (-46.03%) : 236886.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

@@ -9,69 +9,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd single-def <System.Object> -; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> edx class-hnd "spilling QMark2" <System.Int32> -; V03 tmp1 [V03,T03] ( 2, 4 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 2 ) int -> edx "CSE - aggressive"
+; V01 arg1 [V01,T00] ( 4, 4 ) ref -> edx class-hnd single-def <System.Object> +; V02 tmp0 [V02,T01] ( 3, 5 ) ref -> eax class-hnd "spilling QMark2" <System.Int32> +; V03 tmp1 [V03,T03] ( 2, 4 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0 G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edx, esi - ; gcrRegs +[edx] - test edx, edx - je SHORT G_M40448_IG08
+ mov eax, edx + ; gcrRegs +[eax] + test eax, eax + je SHORT G_M40448_IG04
;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [edx] - ; gcrRegs -[edx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=1 PerfScore 3.25 -G_M40448_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M40448_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax edx]
; byrRegs -[ecx]
- mov edx, esi
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M40448_IG05: ; bbWeight=1, epilog, nogc, extend + pop ebp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M40448_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32 - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.50 PerfScore 0.75 -G_M40448_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=1 PerfScore 4.25
+ movzx eax, al + ;; size=11 bbWeight=1 PerfScore 6.25
G_M40448_IG07: ; bbWeight=1, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M40448_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi] - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M40448_IG09: ; bbWeight=0, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 63, prolog size 5, PerfScore 17.38, instruction count 29, allocated bytes for code 63 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
+; Total bytes of code 34, prolog size 3, PerfScore 14.25, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (Tier1)
; ============================================================

+36 (+10.81%) : 579948.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)

@@ -9,49 +9,50 @@ ; 6 inlinees with PGO data; 14 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 13, 7.99) ref -> esi class-hnd single-def <Microsoft.Cci.INamedTypeReference>
+; V00 arg0 [V00,T00] ( 12, 6.76) ref -> esi class-hnd single-def <Microsoft.Cci.INamedTypeReference>
; V01 arg1 [V01,T01] ( 4, 3.01) int -> edi ld-addr-op single-def ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V04 tmp0 [V04,T04] ( 5, 2.00) ref -> edi
+; V04 tmp0 [V04,T05] ( 5, 2.00) ref -> edi
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V06 tmp2 [V06,T05] ( 3, 1.97) ref -> edi "guarded devirt return temp"
+; V06 tmp2 [V06,T06] ( 3, 1.97) ref -> edi "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V08 tmp4 [V08,T02] ( 4, 2.79) ref -> ebx "guarded devirt return temp"
+; V08 tmp4 [V08,T03] ( 4, 2.28) ref -> [ebp-0x10] "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V10 tmp6 [V10,T03] ( 3, 2.57) int -> eax "guarded devirt return temp"
+; V10 tmp6 [V10,T04] ( 3, 2.06) int -> edx "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V12 tmp8 [V12,T13] ( 4, 0.50) int -> ecx "guarded devirt return temp"
+; V12 tmp8 [V12,T14] ( 4, 0.50) int -> eax "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol> ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V15 tmp11 [V15,T11] ( 2, 1.01) ref -> eax "guarded devirt return temp"
+; V15 tmp11 [V15,T12] ( 2, 1.01) ref -> eax "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V17 tmp13 [V17,T08] ( 3, 1.14) ref -> ebx class-hnd "Inline return value spill temp" <System.String>
+; V17 tmp13 [V17,T09] ( 3, 1.14) ref -> eax class-hnd "Inline return value spill temp" <System.String>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
-; V19 tmp15 [V19,T12] ( 2, 0.57) ref -> [ebp-0x10] class-hnd exact spill-single-def "impAppendStmt" <System.String>
+; V19 tmp15 [V19,T13] ( 2, 0.57) ref -> [ebp-0x14] class-hnd exact spill-single-def "impAppendStmt" <System.String>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V21 tmp17 [V21,T06] ( 7, 1.71) ref -> ebx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier> -; V22 tmp18 [V22,T07] ( 4, 1.71) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V21 tmp17 [V21,T07] ( 7, 1.71) ref -> [ebp-0x18] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier> +; V22 tmp18 [V22,T08] ( 4, 1.71) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V24 tmp20 [V24,T18] ( 3, 0 ) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <System.String>
+; V24 tmp20 [V24,T19] ( 3, 0 ) ref -> [ebp-0x1C] class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V26 tmp22 [V26,T19] ( 3, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
+; V26 tmp22 [V26,T20] ( 3, 0 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.FileIdentifier>
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V28 tmp24 [V28,T09] ( 2, 1.14) int -> eax "guarded devirt return temp"
+; V28 tmp24 [V28,T10] ( 2, 1.14) int -> edx "guarded devirt return temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric> ;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
-; V31 tmp27 [V31,T15] ( 2, 0.41) int -> eax "guarded devirt return temp"
+; V31 tmp27 [V31,T16] ( 2, 0.41) int -> eax "guarded devirt return temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol> ;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref single-def
-; V35 tmp31 [V35,T14] ( 3, 0.44) ref -> eax
+; V35 tmp31 [V35,T15] ( 3, 0.44) ref -> eax
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP
-; V37 tmp33 [V37,T10] ( 3, 1.14) ref -> [ebp-0x18] single-def "field V23.array (fldOffset=0x0)" P-INDEP
+; V37 tmp33 [V37,T11] ( 3, 1.14) ref -> [ebp-0x24] single-def "field V23.array (fldOffset=0x0)" P-INDEP
;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.array (fldOffset=0x0)" P-INDEP
-; V39 tmp35 [V39,T17] ( 2, 0.05) ref -> ebx single-def "argument with side effect" -; V40 tmp36 [V40,T16] ( 2, 0.28) ref -> edx single-def "argument with side effect"
+; V39 tmp35 [V39,T18] ( 2, 0.05) ref -> ebx single-def "argument with side effect" +; V40 tmp36 [V40,T17] ( 2, 0.28) ref -> edx single-def "argument with side effect" +; V41 cse0 [V41,T02] ( 5, 4.19) int -> ebx multi-def "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 24
G_M11037_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -59,19 +60,20 @@ G_M11037_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 24
mov esi, ecx ; gcrRegs +[esi] mov edi, edx ;; size=13 bbWeight=1 PerfScore 5.00 G_M11037_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref test edi, edi
- jne G_M11037_IG27
+ jne G_M11037_IG19
;; size=8 bbWeight=1 PerfScore 1.25 G_M11037_IG03: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi], 0xD1FFAB1E - jne SHORT G_M11037_IG14 - ;; size=8 bbWeight=0.99 PerfScore 3.95
+ mov ebx, dword ptr [esi] + cmp ebx, 0xD1FFAB1E + jne SHORT G_M11037_IG16 + ;; size=10 bbWeight=0.99 PerfScore 3.21
G_M11037_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi ; gcrRegs +[ecx] @@ -82,48 +84,79 @@ G_M11037_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ;; size=10 bbWeight=0.50 PerfScore 1.76 G_M11037_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
- cmp dword ptr [esi], 0xD1FFAB1E
+ mov ebx, dword ptr [esi] + cmp ebx, 0xD1FFAB1E
jne SHORT G_M11037_IG15
- ;; size=8 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.25
G_M11037_IG06: ; bbWeight=0.57, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, gword ptr [esi+0x3C] - ; gcrRegs +[ebx] - test ebx, ebx - je SHORT G_M11037_IG08 - ;; size=7 bbWeight=0.57 PerfScore 1.85 -G_M11037_IG07: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov eax, gword ptr [ebx+0x34]
+ mov eax, gword ptr [esi+0x3C]
; gcrRegs +[eax] test eax, eax
+ je SHORT G_M11037_IG08 + ;; size=7 bbWeight=0.57 PerfScore 1.85 +G_M11037_IG07: ; bbWeight=0.57, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + mov edx, gword ptr [eax+0x34] + ; gcrRegs +[edx] + test edx, edx
jne G_M11037_IG28 ;; size=11 bbWeight=0.57 PerfScore 1.85 G_M11037_IG08: ; bbWeight=0.57, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ebx] - xor ebx, ebx - ; gcrRegs +[ebx]
+ ; gcrRegs -[eax edx] + xor ecx, ecx + ; gcrRegs +[ecx]
;; size=2 bbWeight=0.57 PerfScore 0.14
-G_M11037_IG09: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - test ebx, ebx - jne SHORT G_M11037_IG24 - ;; size=4 bbWeight=0.57 PerfScore 0.71
+G_M11037_IG09: ; bbWeight=0.57, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref + test ecx, ecx + jne G_M11037_IG26 + ;; size=8 bbWeight=0.57 PerfScore 0.71
G_M11037_IG10: ; bbWeight=0.43, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx] - xor ebx, ebx - ; gcrRegs +[ebx] - ;; size=2 bbWeight=0.43 PerfScore 0.11 -G_M11037_IG11: ; bbWeight=0.57, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
xor eax, eax
+ ; gcrRegs +[eax] + ;; size=2 bbWeight=0.43 PerfScore 0.11 +G_M11037_IG11: ; bbWeight=0.57, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + xor edx, edx
;; size=2 bbWeight=0.57 PerfScore 0.14
-G_M11037_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - or eax, ebx - jne SHORT G_M11037_IG18 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M11037_IG13: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ebx esi] - jmp SHORT G_M11037_IG16 - ;; size=2 bbWeight=0.78 PerfScore 1.56 -G_M11037_IG14: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[edi] +[esi]
+G_M11037_IG12: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz + mov gword ptr [ebp-0x10], eax + ; GC ptr vars +{V08} + or edx, eax + jne SHORT G_M11037_IG17 + ;; size=7 bbWeight=1 PerfScore 2.25 +G_M11037_IG13: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax esi] + ; GC ptr vars -{V08} + mov eax, edi + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.78 PerfScore 0.20 +G_M11037_IG14: ; bbWeight=0.78, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret + ;; size=8 bbWeight=0.78 PerfScore 2.74 +G_M11037_IG15: ; bbWeight=0.49, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[esi] + mov ecx, esi + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[ecx] +[eax] + mov gword ptr [ebp-0x10], eax + ; GC ptr vars +{V08} + mov ecx, esi + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[eax ecx] + mov edx, eax + mov eax, gword ptr [ebp-0x10] + ; gcrRegs +[eax] + jmp SHORT G_M11037_IG12 + ;; size=26 bbWeight=0.49 PerfScore 5.27 +G_M11037_IG16: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax edi] + ; GC ptr vars -{V08}
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] @@ -132,120 +165,18 @@ G_M11037_IG14: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs +[edi] jmp SHORT G_M11037_IG05 ;; size=12 bbWeight=0.48 PerfScore 2.66
-G_M11037_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11037_IG17: ; bbWeight=0.22, gcVars=00000008 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
- mov ecx, esi - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx] +[eax] - mov ebx, eax - ; gcrRegs +[ebx] - mov ecx, esi - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx] - jmp SHORT G_M11037_IG12 - ;; size=20 bbWeight=1 PerfScore 8.75 -G_M11037_IG16: ; bbWeight=0.78, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx esi] - mov eax, edi - ; gcrRegs +[eax] - ;; size=2 bbWeight=0.78 PerfScore 0.20 -G_M11037_IG17: ; bbWeight=0.78, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret - ;; size=8 bbWeight=0.78 PerfScore 2.74 -G_M11037_IG18: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[ebx esi] - cmp dword ptr [esi], 0xD1FFAB1E - jne SHORT G_M11037_IG26 - ;; size=8 bbWeight=0.22 PerfScore 0.87 -G_M11037_IG19: ; bbWeight=0.20, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [esi+0x20] - ; gcrRegs +[ecx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.CSharp.MergedTypeDeclaration:get_Arity():int:this]
...

+20 (+11.43%) : 574837.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)

@@ -10,20 +10,21 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 3, 2.59) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass>
-; V01 arg1 [V01,T01] ( 6, 4.18) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> -; V02 arg2 [V02,T00] ( 9, 6.77) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> -; V03 tmp0 [V03,T04] ( 2, 1.82) int -> eax "guarded devirt return temp"
+; V01 arg1 [V01,T00] ( 6, 4.77) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> +; V02 arg2 [V02,T01] ( 7, 5.27) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol> +; V03 tmp0 [V03,T05] ( 2, 1.82) int -> eax "guarded devirt return temp"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-; V05 tmp2 [V05,T06] ( 2, 1.18) int -> eax "guarded devirt return temp"
+; V05 tmp2 [V05,T07] ( 2, 1.18) int -> eax "guarded devirt return temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T02] ( 6, 4.73) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V09 tmp6 [V09,T05] ( 3, 1.18) int -> eax "guarded devirt return temp"
+; V09 tmp6 [V09,T06] ( 3, 1.18) int -> eax "guarded devirt return temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric> ;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V12 tmp9 [V12,T07] ( 3, 0 ) ref -> ecx single-def "argument with side effect"
+; V12 tmp9 [V12,T08] ( 3, 3.55) ref -> ecx single-def "argument with side effect" +; V13 cse0 [V13,T04] ( 4, 3.31) int -> [ebp-0x10] "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M52952_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -31,118 +32,123 @@ G_M52952_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
+ push eax
mov ebx, ecx ; gcrRegs +[ebx]
- mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x08]
+ mov esi, edx
; gcrRegs +[esi]
- ;; size=13 bbWeight=1 PerfScore 5.75 -G_M52952_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - test esi, esi - je SHORT G_M52952_IG11 - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M52952_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, gword ptr [ebp+0x08] + ; gcrRegs +[edi] + ;; size=14 bbWeight=1 PerfScore 6.75 +G_M52952_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test edi, edi
- je SHORT G_M52952_IG11 - ;; size=4 bbWeight=1.00 PerfScore 1.25
+ je G_M52952_IG14 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M52952_IG03: ; bbWeight=1.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + test esi, esi + je G_M52952_IG14 + ;; size=8 bbWeight=1.00 PerfScore 1.25
G_M52952_IG04: ; bbWeight=0.91, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi], 0xD1FFAB1E
+ mov eax, dword ptr [edi] + cmp eax, 0xD1FFAB1E
jne SHORT G_M52952_IG06
- ;; size=8 bbWeight=0.91 PerfScore 3.63
+ ;; size=9 bbWeight=0.91 PerfScore 2.95
G_M52952_IG05: ; bbWeight=0.68, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [esi+0x28], 16 - jne SHORT G_M52952_IG11 - jmp SHORT G_M52952_IG10 - ;; size=8 bbWeight=0.68 PerfScore 4.08
+ test byte ptr [edi+0x28], 16 + jne G_M52952_IG14 + jmp SHORT G_M52952_IG08 + ;; size=12 bbWeight=0.68 PerfScore 4.08
G_M52952_IG06: ; bbWeight=0.91, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
+ mov ecx, edi
; gcrRegs +[ecx]
- mov eax, dword ptr [esi] - mov eax, dword ptr [eax+0x40] - call [eax+0x10]<unknown method>
+ mov dword ptr [ebp-0x10], eax + mov edx, dword ptr [eax+0x40] + call [edx+0x10]<unknown method>
; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M52952_IG11 - ;; size=14 bbWeight=0.91 PerfScore 7.71 -G_M52952_IG07: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, esi - ; gcrRegs +[ecx] - mov eax, dword ptr [esi] - mov eax, dword ptr [eax+0x68] - call [eax+0x08]<unknown method> - ; gcrRegs -[ecx esi] - test eax, eax - jne SHORT G_M52952_IG11 - ;; size=14 bbWeight=0.59 PerfScore 5.03 -G_M52952_IG08: ; bbWeight=0.59, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - cmp byte ptr [edi+0x0A], 22 - je SHORT G_M52952_IG11 - mov ecx, gword ptr [edi+0x0C] - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M52952_IG11 - cmp byte ptr [ebx+0xDD], 0
jne SHORT G_M52952_IG14
- cmp dword ptr [ecx], 0xD1FFAB1E - jne SHORT G_M52952_IG13 - call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this] - ; gcrRegs -[ecx ebx] - ;; size=36 bbWeight=0.59 PerfScore 10.79 -G_M52952_IG09: ; bbWeight=0.59, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp eax, 10 - jne SHORT G_M52952_IG11 - jmp SHORT G_M52952_IG14 - ;; size=7 bbWeight=0.59 PerfScore 1.92 -G_M52952_IG10: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - mov ecx, esi
+ ;; size=15 bbWeight=0.91 PerfScore 6.81 +G_M52952_IG07: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov eax, dword ptr [ebp-0x10] + jmp SHORT G_M52952_IG09 + ;; size=5 bbWeight=0.59 PerfScore 1.77 +G_M52952_IG08: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, edi
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx]
- cmp gword ptr [esi+0x20], 0 - je SHORT G_M52952_IG08 - ;; size=14 bbWeight=0.59 PerfScore 4.29 -G_M52952_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[ebx esi edi] - xor eax, eax - ;; size=2 bbWeight=1 PerfScore 0.25 -G_M52952_IG12: ; bbWeight=1, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 4 - ;; size=7 bbWeight=1 PerfScore 4.00 -G_M52952_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ecx edi] - mov eax, dword ptr [ecx] - mov eax, dword ptr [eax+0x5C] - call [eax+0x14]<unknown method> - ; gcrRegs -[ecx] - jmp SHORT G_M52952_IG09 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M52952_IG14: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov ecx, gword ptr [edi+0x0C]
+ cmp gword ptr [edi+0x20], 0 + jne SHORT G_M52952_IG14 + jmp SHORT G_M52952_IG10 + ;; size=16 bbWeight=0.59 PerfScore 5.47 +G_M52952_IG09: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, edi + ; gcrRegs +[ecx] + mov eax, dword ptr [eax+0x68] + call [eax+0x08]<unknown method> + ; gcrRegs -[ecx edi] + test eax, eax + jne SHORT G_M52952_IG14 + ;; size=12 bbWeight=0.59 PerfScore 3.84 +G_M52952_IG10: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + cmp byte ptr [esi+0x0A], 22 + je SHORT G_M52952_IG14 + mov ecx, gword ptr [esi+0x0C] + ; gcrRegs +[ecx] + test ecx, ecx + je SHORT G_M52952_IG14 + cmp byte ptr [ebx+0xDD], 0 + jne SHORT G_M52952_IG12 + cmp dword ptr [ecx], 0xD1FFAB1E + jne SHORT G_M52952_IG16 + call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this] + ; gcrRegs -[ecx ebx] + ;; size=36 bbWeight=0.59 PerfScore 10.79 +G_M52952_IG11: ; bbWeight=0.59, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp eax, 10 + jne SHORT G_M52952_IG14 + ;; size=5 bbWeight=0.59 PerfScore 0.74 +G_M52952_IG12: ; bbWeight=0.59, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx] mov eax, dword ptr [ecx] mov eax, dword ptr [eax+0x5C] call [eax+0x18]<unknown method>
- ; gcrRegs -[ecx edi]
+ ; gcrRegs -[ecx esi]
mov ecx, eax call [Microsoft.CodeAnalysis.SpecialTypeExtensions:IsPrimitiveRecursiveStruct(byte):ubyte] test eax, eax sete al movzx eax, al
- ;; size=27 bbWeight=0 PerfScore 0.00 -G_M52952_IG15: ; bbWeight=0, epilog, nogc, extend
+ ;; size=27 bbWeight=0.59 PerfScore 8.13 +G_M52952_IG13: ; bbWeight=0.59, epilog, nogc, extend + pop ecx
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.59 PerfScore 2.66 +G_M52952_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M52952_IG15: ; bbWeight=1, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 4 + ;; size=8 bbWeight=1 PerfScore 4.50 +G_M52952_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx esi] + mov eax, dword ptr [ecx] + mov eax, dword ptr [eax+0x5C] + call [eax+0x14]<unknown method> + ; gcrRegs -[ecx] + jmp SHORT G_M52952_IG11 + ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 6, PerfScore 49.96, instruction count 70, allocated bytes for code 175 (MethodHash=6fcd3127) for method Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
+; Total bytes of code 195, prolog size 7, PerfScore 61.25, instruction count 75, allocated bytes for code 195 (MethodHash=6fcd3127) for method Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
; ============================================================

+7 (+12.07%) : 570185.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)

@@ -9,63 +9,74 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V01 tmp0 [V01,T03] ( 2, 2 ) int -> eax "guarded devirt return temp"
+; V00 this [V00,T00] ( 5, 4.52) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V01 tmp0 [V01,T02] ( 2, 2 ) int -> eax "guarded devirt return temp"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V03 tmp2 [V03,T02] ( 3, 2.48) int -> eax "guarded devirt return temp"
+; V03 tmp2 [V03,T03] ( 3, 2 ) int -> ebx "guarded devirt return temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V05 cse0 [V05,T01] ( 4, 4 ) int -> edi "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 4, 3.52) int -> edi "CSE - aggressive"
; ; Lcl frame size = 0
-G_M9932_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M9932_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push edi push esi
+ push ebx
mov esi, ecx ; gcrRegs +[esi]
- ;; size=7 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M9932_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edi, dword ptr [esi] cmp edi, 0xD1FFAB1E
- je SHORT G_M9932_IG05
+ je SHORT G_M9932_IG04
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x70] call [eax+0x1C]<unknown method> ; gcrRegs -[ecx] cmp eax, 1
- jne SHORT G_M9932_IG06
+ jne SHORT G_M9932_IG08 + ;; size=23 bbWeight=1 PerfScore 9.75 +G_M9932_IG03: ; bbWeight=0.52, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M9932_IG05 + ;; size=2 bbWeight=0.52 PerfScore 1.04 +G_M9932_IG04: ; bbWeight=0.48, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[esi] + xor ebx, ebx + jmp SHORT G_M9932_IG06 + ;; size=4 bbWeight=0.48 PerfScore 1.08 +G_M9932_IG05: ; bbWeight=0.52, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[esi]
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [edi+0x88] call [eax+0x0C]<unknown method> ; gcrRegs -[ecx esi]
- ;; size=34 bbWeight=1 PerfScore 15.00 -G_M9932_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - movzx eax, al
+ mov ebx, eax + ;; size=13 bbWeight=0.52 PerfScore 2.86 +G_M9932_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + movzx eax, bl
;; size=3 bbWeight=1 PerfScore 0.25
-G_M9932_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M9932_IG07: ; bbWeight=1, epilog, nogc, extend + pop ebx
pop esi pop edi pop ebp ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M9932_IG05: ; bbWeight=0.48, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - xor eax, eax - jmp SHORT G_M9932_IG03 - ;; size=4 bbWeight=0.48 PerfScore 1.08 -G_M9932_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=5 bbWeight=1 PerfScore 3.00 +G_M9932_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M9932_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M9932_IG09: ; bbWeight=0, epilog, nogc, extend + pop ebx
pop esi pop edi pop ebp ret
- ;; size=4 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 5, PerfScore 22.33, instruction count 28, allocated bytes for code 58 (MethodHash=05c1d933) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
+; Total bytes of code 65, prolog size 6, PerfScore 22.48, instruction count 33, allocated bytes for code 65 (MethodHash=05c1d933) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-32 (-48.48%) : 203179.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,75 +8,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs>
-; V03 tmp1 [V03,T03] ( 2, 2 ) ref -> edi class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]> -; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) ref -> ecx class-hnd exact single-def "impAppendStmt" <System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]>
; ; Lcl frame size = 0
-G_M20050_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M20050_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M20050_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M20050_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M20050_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M20050_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M20050_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M20050_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M20050_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi]
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M20050_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov edi, gword ptr [ecx] - ; gcrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M20050_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M20050_IG07: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs - call CORINFO_HELP_UNBOX - ; gcrRegs -[edx] - ;; size=12 bbWeight=0.25 PerfScore 0.38 -G_M20050_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - mov edx, gword ptr [esi+0x04] - ; gcrRegs +[edx] - mov ecx, edi
+ mov ecx, gword ptr [ecx]
; gcrRegs +[ecx]
+ ; byrRegs -[ecx] + mov edx, gword ptr [edx+0x04]
call [System.Runtime.Serialization.Formatters.Tests.EqualityHelpers:ArraysAreEqual[System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs](System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[],System.Runtime.Serialization.Formatters.Tests.StructContainingOtherStructs[]):ubyte]
- ; gcrRegs -[ecx edx esi edi] - ;; size=11 bbWeight=0.50 PerfScore 2.62 -G_M20050_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+ ; gcrRegs -[ecx edx] + ;; size=11 bbWeight=0.50 PerfScore 3.50 +G_M20050_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 66, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 66 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.88, instruction count 15, allocated bytes for code 34 (MethodHash=8ccbb1ad) for method System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-30 (-26.79%) : 95859.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,124 +8,105 @@ ; 2 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3 ) byref -> edi this single-def -; V01 arg1 [V01,T00] ( 6, 4.25) ref -> esi class-hnd single-def <System.Object>
+; V00 this [V00,T01] ( 4, 3 ) byref -> ecx this single-def +; V01 arg1 [V01,T00] ( 5, 4 ) ref -> edx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Data.Tests.DataRowTest2+Address> ; V03 tmp0 [V03,T04] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Data.Tests.DataRowTest2+Address> ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V05 tmp2 [V05,T03] ( 5, 4.83) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String> ; V06 tmp3 [V06,T07] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
-; V07 tmp4 [V07,T02] ( 5, 4.83) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String> -; V08 tmp5 [V08,T05] ( 2, 2 ) byref -> ecx single-def "impAppendStmt"
+; V07 tmp4 [V07,T02] ( 5, 4.83) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String> +; V08 tmp5 [V08,T05] ( 2, 2 ) byref -> eax single-def "impAppendStmt"
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp11 [V14,T09] ( 2, 1.00) ref -> ecx single-def "field V02.Street (fldOffset=0x0)" P-INDEP -; V15 tmp12 [V15,T10] ( 2, 1 ) int -> edx single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP -; V16 cse0 [V16,T06] ( 3, 1.42) int -> eax "CSE - moderate" -; V17 cse1 [V17,T08] ( 3, 1 ) int -> edx "CSE - moderate"
+; V14 tmp11 [V14,T08] ( 2, 1.00) ref -> eax single-def "field V02.Street (fldOffset=0x0)" P-INDEP +; V15 tmp12 [V15,T09] ( 2, 1 ) int -> edx single-def "field V02.HouseNumber (fldOffset=0x4)" P-INDEP +; V16 cse0 [V16,T06] ( 3, 1.42) int -> ecx "CSE - moderate"
; ; Lcl frame size = 0 G_M31876_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push edi - push esi - mov edi, ecx - ; byrRegs +[edi] - mov esi, edx - ; gcrRegs +[esi] - ;; size=9 bbWeight=1 PerfScore 3.75 -G_M31876_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov eax, esi
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M31876_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx] + ; byrRegs +[ecx] + mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M31876_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M31876_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M31876_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M31876_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi] - ; byrRegs -[edi]
+ ; gcrRegs -[eax edx] + ; byrRegs -[ecx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31876_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[edi] - cmp edx, 0xD1FFAB1E - je SHORT G_M31876_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M31876_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M31876_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref, isz
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Data.Tests.DataRowTest2+Address - call CORINFO_HELP_UNBOX
+ ; byrRegs +[ecx] + mov eax, gword ptr [edx+0x04] + ; gcrRegs +[eax] + mov edx, dword ptr [edx+0x08]
; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38 -G_M31876_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz - mov ecx, gword ptr [esi+0x04] - ; gcrRegs +[ecx] - mov edx, dword ptr [esi+0x08] - cmp edx, dword ptr [edi+0x04]
+ cmp edx, dword ptr [ecx+0x04]
jne SHORT G_M31876_IG04 ;; size=11 bbWeight=0.50 PerfScore 4.00
-G_M31876_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref, isz - ; gcrRegs -[esi] - mov edx, gword ptr [edi]
+G_M31876_IG07: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000002 {ecx}, byref, isz + mov edx, gword ptr [ecx]
; gcrRegs +[edx]
- cmp ecx, edx - je SHORT G_M31876_IG14
+ cmp eax, edx + je SHORT G_M31876_IG12
;; size=6 bbWeight=0.50 PerfScore 1.63
-G_M31876_IG10: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - ; byrRegs -[edi] - test ecx, ecx
+G_M31876_IG08: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + ; byrRegs -[ecx] + test eax, eax
je SHORT G_M31876_IG04 ;; size=4 bbWeight=0.46 PerfScore 0.57
-G_M31876_IG11: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+G_M31876_IG09: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz
test edx, edx je SHORT G_M31876_IG04 ;; size=4 bbWeight=0.46 PerfScore 0.57
-G_M31876_IG12: ; bbWeight=0.46, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ecx+0x04] - cmp eax, dword ptr [edx+0x04]
+G_M31876_IG10: ; bbWeight=0.46, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [eax+0x04] + cmp ecx, dword ptr [edx+0x04]
jne SHORT G_M31876_IG04 ;; size=8 bbWeight=0.46 PerfScore 2.75
-G_M31876_IG13: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz - add ecx, 8 - ; gcrRegs -[ecx] - ; byrRegs +[ecx] - add eax, eax - push eax
+G_M31876_IG11: ; bbWeight=0.50, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + add eax, 8 + ; gcrRegs -[eax] + ; byrRegs +[eax] + add ecx, ecx + push ecx
add edx, 8 ; gcrRegs -[edx] ; byrRegs +[edx]
+ mov ecx, eax + ; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[eax ecx edx]
test eax, eax je SHORT G_M31876_IG04
- ;; size=19 bbWeight=0.50 PerfScore 3.00 -G_M31876_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 3.12 +G_M31876_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M31876_IG15: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+G_M31876_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 112, prolog size 5, PerfScore 22.33, instruction count 48, allocated bytes for code 112 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 82, prolog size 3, PerfScore 18.14, instruction count 35, allocated bytes for code 82 (MethodHash=de0c837b) for method System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-23 (-21.90%) : 3010.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)

@@ -11,13 +11,12 @@ ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> esi class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object> ; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
-; V03 tmp1 [V03,T02] ( 4, 2.75) ref -> esi class-hnd single-def "Inline return value spill temp" <System.Object>
+; V03 tmp1 [V03,T02] ( 3, 2.50) ref -> edx class-hnd single-def "Inline return value spill temp" <System.Object>
; V04 tmp2 [V04 ] ( 3, 3 ) ref -> [ebp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-; V05 cse0 [V05,T03] ( 3, 1 ) int -> edx "CSE - moderate"
; ; Lcl frame size = 4
-G_M11822_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M11822_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp push esi @@ -43,22 +42,21 @@ G_M11822_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx esi]
- mov esi, gword ptr [ebp-0x08] - ; gcrRegs +[esi]
+ mov edx, gword ptr [ebp-0x08] + ; gcrRegs +[edx]
xor eax, eax ; gcrRegs +[eax] mov gword ptr [ebp-0x08], eax
- mov eax, esi
+ mov eax, edx
test eax, eax je SHORT G_M11822_IG04 ;; size=49 bbWeight=1 PerfScore 13.25
-G_M11822_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M11822_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M11822_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M11822_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M11822_IG05: ; bbWeight=0.50, epilog, nogc, extend @@ -67,28 +65,17 @@ G_M11822_IG05: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M11822_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi] - cmp edx, 0xD1FFAB1E - je SHORT G_M11822_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M11822_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov edx, esi
+G_M11822_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class> - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M11822_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - mov eax, dword ptr [esi+0x04]
+ mov eax, dword ptr [edx+0x04]
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M11822_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M11822_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx pop esi pop ebp ret ;; size=4 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 105, prolog size 10, PerfScore 23.94, instruction count 40, allocated bytes for code 105 (MethodHash=e58ed1d1) for method Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
+; Total bytes of code 82, prolog size 10, PerfScore 22.62, instruction count 34, allocated bytes for code 82 (MethodHash=e58ed1d1) for method Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
; ============================================================

+3 (+12.50%) : 227130.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA1CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M54186_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M54186_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M54186_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M54186_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M54186_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M54186_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M54186_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=9cf42c55) for method System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 227355.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA512CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M31021_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M31021_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M31021_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M31021_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M31021_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M31021_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M31021_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=150886d2) for method System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

+3 (+12.50%) : 227363.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
+; V00 this [V00,T00] ( 4, 3 ) ref -> esi this class-hnd single-def <System.Security.Cryptography.SHA384CryptoServiceProvider>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> edx single-def
+; V02 cse0 [V02,T02] ( 2, 2 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -19,8 +20,11 @@ G_M59236_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] ;; size=3 bbWeight=1 PerfScore 1.25 G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test dl, dl - je SHORT G_M59236_IG03
+ movzx ecx, dl + test ecx, ecx + je SHORT G_M59236_IG04 + ;; size=7 bbWeight=1 PerfScore 1.50 +G_M59236_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx @@ -28,13 +32,13 @@ G_M59236_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] ; gcr arg pop 0 mov byte ptr [esi+0x10], 1
- ;; size=19 bbWeight=1 PerfScore 10.25 -G_M59236_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=0.50 PerfScore 4.50 +G_M59236_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi] pop esi ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 1, PerfScore 13.00, instruction count 10, allocated bytes for code 24 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
+; Total bytes of code 27, prolog size 1, PerfScore 8.75, instruction count 11, allocated bytes for code 27 (MethodHash=ebc3189b) for method System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-30 (-46.88%) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,71 +8,50 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Int32>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> edi "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0
-G_M40448_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M40448_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push edi - push esi - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M40448_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M40448_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M40448_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M40448_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M40448_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M40448_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop esi - pop edi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ecx] - mov edi, dword ptr [ecx] - cmp edx, 0xD1FFAB1E - je SHORT G_M40448_IG08 - ;; size=10 bbWeight=0.50 PerfScore 1.62 -G_M40448_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M40448_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32 - call [CORINFO_HELP_UNBOX] - ; gcrRegs -[edx] - ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M40448_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - xor eax, eax - cmp edi, dword ptr [esi+0x04]
+ ; byrRegs +[ecx] + mov eax, dword ptr [ecx] + cmp eax, dword ptr [edx+0x04]
sete al
- ;; size=8 bbWeight=0.50 PerfScore 2.12 -G_M40448_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi
+ movzx eax, al + ;; size=11 bbWeight=0.50 PerfScore 3.12 +G_M40448_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 64, prolog size 5, PerfScore 13.06, instruction count 29, allocated bytes for code 64 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 34, prolog size 3, PerfScore 8.50, instruction count 16, allocated bytes for code 34 (MethodHash=d61e61ff) for method System.Int32:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-31 (-44.93%) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,72 +8,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Byte>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> ebx "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0
-G_M19224_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M19224_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi - push ebx - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M19224_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M19224_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M19224_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M19224_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M19224_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M19224_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M19224_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx - pop esi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ecx] - movzx ebx, byte ptr [ecx] - cmp edx, 0xD1FFAB1E - je SHORT G_M19224_IG08 - ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M19224_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M19224_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Byte - call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx] + movzx eax, byte ptr [ecx] + movzx edx, byte ptr [edx+0x04]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M19224_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - movzx eax, byte ptr [esi+0x04] - cmp ebx, eax
+ cmp eax, edx
sete al movzx eax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M19224_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M19224_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 69, prolog size 5, PerfScore 12.69, instruction count 30, allocated bytes for code 69 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 3, PerfScore 8.12, instruction count 17, allocated bytes for code 38 (MethodHash=3af2b4e7) for method System.Byte:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

-31 (-44.93%) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)

@@ -8,72 +8,52 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 2.50) byref -> ecx this single-def
-; V01 arg1 [V01,T00] ( 5, 3.75) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 4, 3.50) ref -> edx class-hnd single-def <System.Object>
; V02 tmp0 [V02,T01] ( 3, 4.50) ref -> eax class-hnd "spilling QMark2" <System.Boolean>
-; V03 tmp1 [V03,T03] ( 2, 2 ) int -> ebx "impAppendStmt" -; V04 cse0 [V04,T04] ( 3, 1 ) int -> edx "CSE - moderate"
+; V03 tmp1 [V03,T03] ( 2, 2 ) int -> eax "impAppendStmt"
; ; Lcl frame size = 0
-G_M31030_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M31030_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi - push ebx - mov esi, edx - ; gcrRegs +[esi] - ;; size=7 bbWeight=1 PerfScore 3.50 -G_M31030_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref, isz
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M31030_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, byref, isz + ; gcrRegs +[edx]
; byrRegs +[ecx]
- mov eax, esi
+ mov eax, edx
; gcrRegs +[eax] test eax, eax je SHORT G_M31030_IG04 ;; size=6 bbWeight=1 PerfScore 1.50
-G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000002 {ecx}, byref, isz - mov edx, dword ptr [eax] - cmp edx, 0xD1FFAB1E
+G_M31030_IG03: ; bbWeight=0.25, gcrefRegs=00000005 {eax edx}, byrefRegs=00000002 {ecx}, byref, isz + cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M31030_IG06
- ;; size=10 bbWeight=0.25 PerfScore 0.81
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
G_M31030_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31030_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx - pop esi
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz - ; gcrRegs +[esi] - ; byrRegs +[ecx] - movzx ebx, byte ptr [ecx] - cmp edx, 0xD1FFAB1E - je SHORT G_M31030_IG08 - ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M31030_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; byrRegs -[ecx] - mov edx, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M31030_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Boolean - call [CORINFO_HELP_UNBOX]
+ ; byrRegs +[ecx] + movzx eax, byte ptr [ecx] + movzx edx, byte ptr [edx+0x04]
; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88 -G_M31030_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - movzx eax, byte ptr [esi+0x04] - cmp ebx, eax
+ cmp eax, edx
sete al movzx eax, al
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M31030_IG09: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi
+ ;; size=15 bbWeight=0.50 PerfScore 2.75 +G_M31030_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 69, prolog size 5, PerfScore 12.69, instruction count 30, allocated bytes for code 69 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 3, PerfScore 8.12, instruction count 17, allocated bytes for code 38 (MethodHash=c96e86c9) for method System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================

+22 (+6.04%) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T02] ( 6, 4 ) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode> ; V02 arg2 [V02,T04] ( 7, 3.50) ref -> ebx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol> ; V03 arg3 [V03,T05] ( 6, 3 ) ref -> [ebp+0x08] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V04 loc0 [V04,T18] ( 2, 1 ) ubyte -> eax
+; V04 loc0 [V04,T18] ( 3, 1.50) ubyte -> ecx
; V05 loc1 [V05,T19] ( 3, 1.25) ref -> edx class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundLambda> ; V06 loc2 [V06,T20] ( 3, 1.25) ref -> edx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol> ; V07 loc3 [V07,T15] ( 3, 1.50) ref -> eax class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> @@ -98,14 +98,15 @@ G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 ;; size=10 bbWeight=0.50 PerfScore 2.25 G_M21353_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[eax ebx esi edi]
+ xor ecx, ecx
mov edx, esi ; gcrRegs +[edx] test edx, edx je SHORT G_M21353_IG09
- ;; size=6 bbWeight=0.50 PerfScore 0.75
+ ;; size=8 bbWeight=0.50 PerfScore 0.88
G_M21353_IG05: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [edx], 0xD1FFAB1E
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG12
;; size=8 bbWeight=0.25 PerfScore 1.00 G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] @@ -116,7 +117,7 @@ G_M21353_IG06: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr ;; size=6 bbWeight=0.50 PerfScore 0.75 G_M21353_IG07: ; bbWeight=0.25, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [edx], 0xD1FFAB1E
- jne SHORT G_M21353_IG09
+ jne SHORT G_M21353_IG11
;; size=8 bbWeight=0.25 PerfScore 1.00 G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx] @@ -151,26 +152,38 @@ G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr mov eax, dword ptr [eax+0x44] call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx]
- test eax, eax
+ mov ecx, eax
mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- jne SHORT G_M21353_IG12 - ;; size=67 bbWeight=0.50 PerfScore 13.00
+ ;; size=65 bbWeight=0.50 PerfScore 12.50
G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx + mov gword ptr [ebp+0x08], eax + jne SHORT G_M21353_IG14 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M21353_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax]
test ebx, ebx
- jne SHORT G_M21353_IG11
+ jne SHORT G_M21353_IG13 + mov eax, gword ptr [ebp+0x08] + ; gcrRegs +[eax]
test eax, eax mov gword ptr [ebp+0x08], eax
- jne SHORT G_M21353_IG15 - jmp SHORT G_M21353_IG12 - ;; size=13 bbWeight=0.50 PerfScore 2.75 -G_M21353_IG10: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M21353_IG17 + jmp SHORT G_M21353_IG14 + ;; size=20 bbWeight=0.50 PerfScore 3.25 +G_M21353_IG11: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov gword ptr [ebp+0x08], eax + jmp SHORT G_M21353_IG10 + ;; size=5 bbWeight=0.12 PerfScore 0.38 +G_M21353_IG12: ; bbWeight=0.12, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz + mov gword ptr [ebp+0x08], eax + jmp SHORT G_M21353_IG10 + ;; size=5 bbWeight=0.12 PerfScore 0.38 +G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov eax, gword ptr [ebp+0x08] ; gcrRegs +[eax]
- jmp SHORT G_M21353_IG09 - ;; size=5 bbWeight=0.25 PerfScore 0.75 -G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push 0 mov ecx, ebx ; gcrRegs +[ecx] @@ -183,9 +196,9 @@ G_M21353_IG11: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byr call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx] test eax, eax
- je SHORT G_M21353_IG15 - ;; size=21 bbWeight=0.50 PerfScore 5.38 -G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M21353_IG17 + ;; size=24 bbWeight=0.50 PerfScore 5.88 +G_M21353_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [edi+0xC8] ; gcrRegs +[ecx] mov edi, gword ptr [ecx+0x04] @@ -214,7 +227,7 @@ G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe mov eax, dword ptr [ebp-0x18] inc dword ptr [edi+0x18] cmp gword ptr [edi+0x04], ecx
- je SHORT G_M21353_IG13
+ je SHORT G_M21353_IG15
lea edx, bword ptr [edi+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX @@ -224,11 +237,11 @@ G_M21353_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe ; gcrRegs +[ecx] mov gword ptr [edi+0x0C], ecx ;; size=76 bbWeight=0.50 PerfScore 16.12
-G_M21353_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M21353_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] add dword ptr [edi+0x14], eax ;; size=3 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M21353_IG16: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -236,7 +249,7 @@ G_M21353_IG14: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M21353_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi] mov ecx, gword ptr [edi+0xC8] ; gcrRegs +[ecx] @@ -268,7 +281,7 @@ G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e mov ecx, dword ptr [ebp-0x28] inc dword ptr [edi+0x18] cmp gword ptr [edi+0x04], eax
- je SHORT G_M21353_IG16
+ je SHORT G_M21353_IG18
lea edx, bword ptr [edi+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -278,11 +291,11 @@ G_M21353_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e ; gcrRegs +[eax] mov gword ptr [edi+0x0C], eax ;; size=81 bbWeight=0.50 PerfScore 17.50
-G_M21353_IG16: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M21353_IG18: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] add dword ptr [edi+0x14], ecx ;; size=3 bbWeight=0.50 PerfScore 1.50
-G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M21353_IG19: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C] pop ebx pop esi @@ -291,6 +304,6 @@ G_M21353_IG17: ; bbWeight=0.50, epilog, nogc, extend ret 8 ;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 364, prolog size 18, PerfScore 82.08, instruction count 134, allocated bytes for code 364 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
+; Total bytes of code 386, prolog size 18, PerfScore 83.83, instruction count 141, allocated bytes for code 386 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
; ============================================================

+42 (+6.58%) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)

@@ -15,29 +15,29 @@ ;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode> ; V05 tmp1 [V05,T09] ( 2, 4 ) ref -> edx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V06 tmp2 [V06,T01] ( 9, 12 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V07 tmp3 [V07,T21] ( 2, 2 ) ubyte -> [ebp-0x1C] spill-single-def "Inline stloc first use temp"
+; V07 tmp3 [V07,T20] ( 2, 2 ) ubyte -> [ebp-0x1C] spill-single-def "Inline stloc first use temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V09 tmp5 [V09,T06] ( 4, 6 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
+; V09 tmp5 [V09,T06] ( 4, 6 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp7 [V11,T20] ( 2, 2 ) ref -> [ebp-0x54] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
+; V11 tmp7 [V11,T19] ( 2, 2 ) ref -> [ebp-0x58] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.SortedDictionary`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V13 tmp9 [V13,T22] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "impAppendStmt"
+; V13 tmp9 [V13,T21] ( 2, 2 ) int -> [ebp-0x20] spill-single-def "impAppendStmt"
;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot> ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <<unknown class>> ;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref single-def ;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp15 [V19,T26] ( 3, 1.50) ref -> [ebp-0x58]
+; V19 tmp15 [V19,T25] ( 3, 1.50) ref -> [ebp-0x5C]
; V20 tmp16 [V20,T03] ( 7, 7 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot> ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.BitVector> ;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T27] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
+; V23 tmp19 [V23,T26] ( 3, 1.50) ref -> registers class-hnd "Inline stloc first use temp" <ulong[]>
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector> ;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ulong[]> ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V27 tmp23 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V29 tmp25 [V29,T23] ( 2, 2 ) int -> ecx "Inlining Arg"
+; V29 tmp25 [V29,T22] ( 2, 2 ) int -> ecx "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref single-def ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode> ;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression> @@ -46,10 +46,10 @@ ;* V35 tmp31 [V35 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]> ; V36 tmp32 [V36 ] ( 3, 6 ) struct ( 8) [ebp-0x28] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState> ;* V37 tmp33 [V37 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V38 tmp34 [V38,T08] ( 3, 5 ) ref -> [ebp-0x5C] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V38 tmp34 [V38,T08] ( 3, 4 ) ref -> [ebp-0x60] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> ;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref single-def
-; V41 tmp37 [V41,T19] ( 3, 2 ) ref -> [ebp-0x60] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V41 tmp37 [V41,T17] ( 3, 2.50) ref -> [ebp-0x64] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> ;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref single-def ;* V44 tmp40 [V44 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult> @@ -66,11 +66,11 @@ ;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref single-def "field V22._bits0 (fldOffset=0x0)" P-INDEP ;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._bits (fldOffset=0x8)" P-INDEP ;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref single-def "field V22._capacity (fldOffset=0xc)" P-INDEP
-; V58 tmp54 [V58,T29] ( 3, 1.50) long -> [ebp-0x30] do-not-enreg[F] single-def "field V24._bits0 (fldOffset=0x0)" P-INDEP -; V59 tmp55 [V59,T31] ( 2, 1 ) ref -> [ebp-0x64] spill-single-def "field V24._bits (fldOffset=0x8)" P-INDEP
+; V58 tmp54 [V58,T28] ( 3, 1.50) long -> [ebp-0x30] do-not-enreg[F] single-def "field V24._bits0 (fldOffset=0x0)" P-INDEP +; V59 tmp55 [V59,T31] ( 2, 1 ) ref -> [ebp-0x68] spill-single-def "field V24._bits (fldOffset=0x8)" P-INDEP
; V60 tmp56 [V60,T33] ( 2, 1 ) int -> [ebp-0x34] spill-single-def "field V24._capacity (fldOffset=0xc)" P-INDEP
-; V61 tmp57 [V61,T10] ( 4, 3.50) ref -> [ebp-0x68] spill-single-def "field V34.DefaultType (fldOffset=0x0)" P-INDEP -; V62 tmp58 [V62,T07] ( 6, 5.50) ref -> [ebp-0x6C] spill-single-def "field V34._extensions (fldOffset=0x4)" P-INDEP
+; V61 tmp57 [V61,T10] ( 4, 3 ) ref -> [ebp-0x6C] spill-single-def "field V34.DefaultType (fldOffset=0x0)" P-INDEP +; V62 tmp58 [V62,T07] ( 6, 4.50) ref -> [ebp-0x70] spill-single-def "field V34._extensions (fldOffset=0x4)" P-INDEP
; V63 tmp59 [V63,T14] ( 3, 3 ) ubyte -> [ebp-0x38] spill-single-def "field V34.NullableAnnotation (fldOffset=0x8)" P-INDEP ;* V64 tmp60 [V64 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP ;* V65 tmp61 [V65 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.value (fldOffset=0x1)" P-INDEP @@ -81,30 +81,31 @@ ;* V70 tmp66 [V70 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V37.NullableAnnotation (fldOffset=0x8)" P-INDEP ;* V71 tmp67 [V71,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V45.hasValue (fldOffset=0x0)" P-INDEP ;* V72 tmp68 [V72,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V45.value (fldOffset=0x1)" P-INDEP
-; V73 tmp69 [V73,T28] ( 3, 1.50) ref -> [ebp-0x70] spill-single-def "V12.[000..004)"
+; V73 tmp69 [V73,T27] ( 3, 1.50) ref -> [ebp-0x74] spill-single-def "V12.[000..004)"
; V74 tmp70 [V74,T34] ( 2, 1 ) int -> [ebp-0x3C] spill-single-def "V12.[004..008)" ;* V75 tmp71 [V75 ] ( 0, 0 ) long -> zero-ref single-def "V12.[008..016)"
-; V76 tmp72 [V76,T18] ( 4, 2 ) ref -> [ebp-0x74] spill-single-def "V12.[016..020)"
+; V76 tmp72 [V76,T18] ( 4, 2 ) ref -> [ebp-0x78] spill-single-def "V12.[016..020)"
; V77 tmp73 [V77,T35] ( 2, 1 ) int -> [ebp-0x40] spill-single-def "V12.[020..024)" ;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[000..004)"
-; V79 tmp75 [V79,T24] ( 2, 2 ) ubyte -> ecx single-def "V44.[004..005)"
+; V79 tmp75 [V79,T23] ( 2, 2 ) ubyte -> ecx single-def "V44.[004..005)"
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[008..012)" ;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "V44.[012..016)"
-; V82 tmp78 [V82,T25] ( 2, 2 ) ubyte -> [ebp-0x44] spill-single-def "V44.[016..017)"
+; V82 tmp78 [V82,T24] ( 2, 2 ) ubyte -> [ebp-0x44] spill-single-def "V44.[016..017)"
; V83 tmp79 [V83,T05] ( 6, 6 ) byref -> ecx single-def "Spilling address for field-by-field copy" ; V84 tmp80 [V84,T02] ( 6, 12 ) byref -> ebx single-def "Spilling address for field-by-field copy"
-; V85 cse0 [V85,T17] ( 3, 2.50) int -> ebx "CSE - conservative" -; V86 cse1 [V86,T11] ( 3, 3 ) byref -> [ebp-0x78] spill-single-def "CSE - moderate"
+; V85 cse0 [V85,T29] ( 3, 1.50) int -> [ebp-0x48] spill-single-def "CSE - conservative" +; V86 cse1 [V86,T11] ( 3, 3 ) byref -> [ebp-0x7C] spill-single-def "CSE - moderate"
;* V87 rat0 [V87 ] ( 0, 0 ) int -> zero-ref "field V27.lo (fldOffset=0x0)" P-INDEP ;* V88 rat1 [V88 ] ( 0, 0 ) int -> zero-ref "field V27.hi (fldOffset=0x4)" P-INDEP
-; V89 rat2 [V89,T36] ( 2, 1 ) int -> [ebp-0x48] spill-single-def "field V75.lo (fldOffset=0x0)" P-INDEP -; V90 rat3 [V90,T37] ( 2, 1 ) int -> [ebp-0x4C] spill-single-def "field V75.hi (fldOffset=0x4)" P-INDEP -; V91 rat4 [V91,T12] ( 3, 3 ) byref -> [ebp-0x7C] spill-single-def "ReplaceWithLclVar is creating a new local variable"
+; V89 rat2 [V89,T36] ( 2, 1 ) int -> [ebp-0x4C] spill-single-def "field V75.lo (fldOffset=0x0)" P-INDEP +; V90 rat3 [V90,T37] ( 2, 1 ) int -> [ebp-0x50] spill-single-def "field V75.hi (fldOffset=0x4)" P-INDEP +; V91 rat4 [V91,T12] ( 3, 3 ) byref -> [ebp-0x80] spill-single-def "ReplaceWithLclVar is creating a new local variable"
; V92 rat5 [V92,T13] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 int -> [ebp-0x80] -; TEMP_01 int -> [ebp-0x84]
+; TEMP_03 ref -> [ebp-0x84] +; TEMP_02 int -> [ebp-0x88] +; TEMP_01 int -> [ebp-0x8C]
;
-; Lcl frame size = 120
+; Lcl frame size = 128
G_M5919_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -112,18 +113,20 @@ G_M5919_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 120
+ sub esp, 128
vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [ebp-0x28], xmm4
+ vmovdqu ymmword ptr [ebp-0x84], ymm4 + vmovdqu ymmword ptr [ebp-0x64], ymm4 + vmovdqu ymmword ptr [ebp-0x44], ymm4 + vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
- mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax mov dword ptr [ebp-0x10], eax mov esi, ecx ; gcrRegs +[esi] mov edi, edx ; gcrRegs +[edi]
- ;; size=33 bbWeight=1 PerfScore 10.58
+ ;; size=51 bbWeight=1 PerfScore 15.58
G_M5919_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ebx, gword ptr [edi+0x10] ; gcrRegs +[ebx] @@ -132,7 +135,7 @@ G_M5919_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov byte ptr [esi+0xEF], 1 mov edx, gword ptr [esi+0xC8] ; gcrRegs +[edx]
- mov gword ptr [ebp-0x50], edx
+ mov gword ptr [ebp-0x54], edx
; GC ptr vars +{V09} test edx, edx je G_M5919_IG09 @@ -142,30 +145,30 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0 ; byrRegs +[ecx] mov eax, gword ptr [ecx] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x70], eax
+ mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V73} mov eax, dword ptr [ecx+0x04] ; gcrRegs -[eax] mov dword ptr [ebp-0x3C], eax lea eax, bword ptr [ecx+0x08] ; byrRegs +[eax]
- mov bword ptr [ebp-0x7C], eax
+ mov bword ptr [ebp-0x80], eax
; GC ptr vars +{V91} mov eax, dword ptr [eax] ; byrRegs -[eax]
- mov dword ptr [ebp-0x80], eax - mov eax, bword ptr [ebp-0x7C]
+ mov dword ptr [ebp-0x88], eax + mov eax, bword ptr [ebp-0x80]
; byrRegs +[eax] mov eax, dword ptr [eax+0x04] ; byrRegs -[eax]
- mov dword ptr [ebp-0x84], eax - mov eax, dword ptr [ebp-0x80] - mov dword ptr [ebp-0x48], eax - mov eax, dword ptr [ebp-0x84]
+ mov dword ptr [ebp-0x8C], eax + mov eax, dword ptr [ebp-0x88]
mov dword ptr [ebp-0x4C], eax
+ mov eax, dword ptr [ebp-0x8C] + mov dword ptr [ebp-0x50], eax
mov eax, gword ptr [ecx+0x10] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x74], eax
+ mov gword ptr [ebp-0x78], eax
; GC ptr vars +{V76} mov ecx, dword ptr [ecx+0x14] ; byrRegs -[ecx] @@ -176,7 +179,7 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0 jne G_M5919_IG09 mov ecx, gword ptr [edx+0x0C] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x54], ecx
+ mov gword ptr [ebp-0x58], ecx
; GC ptr vars +{V11} mov ecx, gword ptr [ebx+0x04] cmp dword ptr [ecx], ecx @@ -184,14 +187,14 @@ G_M5919_IG03: ; bbWeight=0.50, gcVars=0000000000000040 {V09}, gcrefRegs=0 call [Microsoft.CodeAnalysis.SyntaxNode:get_SpanStart():int:this] ; gcrRegs -[eax ecx edx] mov dword ptr [ebp-0x20], eax
- mov ecx, gword ptr [ebp-0x70]
+ mov ecx, gword ptr [ebp-0x74]
; gcrRegs +[ecx] test ecx, ecx jne SHORT G_M5919_IG04 xor edx, edx ; gcrRegs +[edx] jmp SHORT G_M5919_IG05
- ;; size=113 bbWeight=0.50 PerfScore 23.38
+ ;; size=119 bbWeight=0.50 PerfScore 23.38
G_M5919_IG04: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx] add ecx, 4 @@ -201,33 +204,33 @@ G_M5919_IG04: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byre call [Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState:CreateSnapshot():Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalStateSnapshot:this] ; gcrRegs +[eax] ; byrRegs -[ecx]
- mov gword ptr [ebp-0x58], eax
+ mov gword ptr [ebp-0x5C], eax
; GC ptr vars +{V19}
- mov edx, gword ptr [ebp-0x58]
+ mov edx, gword ptr [ebp-0x5C]
; gcrRegs +[edx] ;; size=15 bbWeight=0.50 PerfScore 2.62 G_M5919_IG05: ; bbWeight=0.50, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] ; GC ptr vars -{V19}
- mov ecx, gword ptr [ebp-0x74]
+ mov ecx, gword ptr [ebp-0x78]
; gcrRegs +[ecx] test ecx, ecx je SHORT G_M5919_IG06 cmp dword ptr [ecx+0x04], 0 jne SHORT G_M5919_IG07 ;; size=13 bbWeight=0.50 PerfScore 3.12
-G_M5919_IG06: ; bbWeight=0.50, gcVars=0000000000100040 {V09 V11}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5919_IG06: ; bbWeight=0.50, gcVars=0000000000080040 {V09 V11}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx] ; GC ptr vars -{V76} mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x58], edx
+ mov gword ptr [ebp-0x5C], edx
; GC ptr vars +{V19} jmp SHORT G_M5919_IG08 ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M5919_IG07: ; bbWeight=0.50, gcVars=0000000000140040 {V09 V11 V76}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M5919_IG07: ; bbWeight=0.50, gcVars=00000000000C0040 {V09 V11 V76}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V19} +{V76}
- mov gword ptr [ebp-0x58], edx
+ mov gword ptr [ebp-0x5C], edx
; GC ptr vars +{V19} ; GC ptr vars -{V76} ...

+20 (+7.49%) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)

@@ -18,10 +18,10 @@ ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]> ; V08 tmp4 [V08 ] ( 3, 6 ) struct ( 8) [ebp-0x20] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState> ;* V09 tmp5 [V09 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V10 tmp6 [V10,T04] ( 3, 5 ) ref -> [ebp-0x34] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 tmp6 [V10,T04] ( 3, 4 ) ref -> [ebp-0x34] class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
-; V13 tmp9 [V13,T13] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V13 tmp9 [V13,T12] ( 3, 2.50) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult> @@ -30,8 +30,8 @@ ; V19 tmp15 [V19 ] ( 2, 2 ) ref -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V02._extensions (fldOffset=0x4)" P-DEP ; V20 tmp16 [V20 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V02.NullableAnnotation (fldOffset=0x8)" P-DEP ;* V21 tmp17 [V21,T16] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V22 tmp18 [V22,T07] ( 4, 3.50) ref -> [ebp-0x38] spill-single-def "field V06.DefaultType (fldOffset=0x0)" P-INDEP -; V23 tmp19 [V23,T03] ( 6, 5.50) ref -> [ebp-0x3C] spill-single-def "field V06._extensions (fldOffset=0x4)" P-INDEP
+; V22 tmp18 [V22,T07] ( 4, 3 ) ref -> [ebp-0x38] spill-single-def "field V06.DefaultType (fldOffset=0x0)" P-INDEP +; V23 tmp19 [V23,T03] ( 6, 4.50) ref -> [ebp-0x3C] spill-single-def "field V06._extensions (fldOffset=0x4)" P-INDEP
; V24 tmp20 [V24,T09] ( 3, 3 ) ubyte -> [ebp-0x24] spill-single-def "field V06.NullableAnnotation (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP @@ -43,15 +43,16 @@ ;* V32 tmp28 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.hasValue (fldOffset=0x0)" P-INDEP ;* V33 tmp29 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.value (fldOffset=0x1)" P-INDEP ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[000..004)"
-; V35 tmp31 [V35,T14] ( 2, 2 ) ubyte -> ecx single-def "V16.[004..005)"
+; V35 tmp31 [V35,T13] ( 2, 2 ) ubyte -> ecx single-def "V16.[004..005)"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[008..012)" ;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[012..016)"
-; V38 tmp34 [V38,T15] ( 2, 2 ) ubyte -> [ebp-0x28] spill-single-def "V16.[016..017)"
+; V38 tmp34 [V38,T14] ( 2, 2 ) ubyte -> [ebp-0x28] spill-single-def "V16.[016..017)"
; V39 tmp35 [V39,T00] ( 6, 12 ) byref -> ebx single-def "Spilling address for field-by-field copy"
-; V40 cse0 [V40,T12] ( 3, 2.50) int -> [ebp-0x2C] spill-single-def "CSE - conservative"
+; V40 cse0 [V40,T15] ( 3, 1.50) int -> [ebp-0x2C] spill-single-def "CSE - conservative"
; V41 cse1 [V41,T08] ( 3, 3 ) byref -> [ebp-0x40] spill-single-def "CSE - moderate"
+; TEMP_01 ref -> [ebp-0x44]
;
-; Lcl frame size = 52
+; Lcl frame size = 56
G_M29279_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -59,16 +60,18 @@ G_M29279_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 52
+ sub esp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [ebp-0x20], xmm4
+ vmovdqu ymmword ptr [ebp-0x44], ymm4 + vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
+ mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp-0x10], eax mov esi, ecx ; gcrRegs +[esi] mov edi, edx ; gcrRegs +[edi]
- ;; size=27 bbWeight=1 PerfScore 8.58
+ ;; size=35 bbWeight=1 PerfScore 11.58
G_M29279_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx] @@ -98,35 +101,44 @@ G_M29279_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 test edx, edx jne SHORT G_M29279_IG04 ;; size=52 bbWeight=1 PerfScore 19.25
-G_M29279_IG03: ; bbWeight=0.50, gcVars=000000A8 {V04 V22 V23}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - xor ecx, ecx - ; gcrRegs +[ecx]
+G_M29279_IG03: ; bbWeight=0.50, gcVars=000000A8 {V04 V22 V23}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] + xor eax, eax + ; gcrRegs +[eax]
jmp SHORT G_M29279_IG05 ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M29279_IG04: ; bbWeight=1, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx]
+G_M29279_IG04: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] + mov eax, gword ptr [ebp-0x38] + ; gcrRegs +[eax]
mov ecx, edx ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x44], ecx
mov edx, eax mov eax, gword ptr [ebp-0x3C]
- mov eax, dword ptr [eax]
+ mov ecx, dword ptr [eax] + ; gcrRegs -[ecx] + mov ecx, dword ptr [ecx+0x2C] + mov dword ptr [ebp-0x2C], ecx + mov ecx, gword ptr [ebp-0x44] + ; gcrRegs +[ecx] + mov eax, dword ptr [ebp-0x2C]
; gcrRegs -[eax]
- mov eax, dword ptr [eax+0x2C] - mov dword ptr [ebp-0x2C], eax
call [eax+0x14]<unknown method> ; gcrRegs -[ecx edx] +[eax] mov gword ptr [ebp-0x34], eax ; GC ptr vars +{V10} jmp SHORT G_M29279_IG06
- ;; size=23 bbWeight=1 PerfScore 12.50 -G_M29279_IG05: ; bbWeight=0.50, gcrefRegs=000000C7 {eax ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx edx]
+ ;; size=35 bbWeight=0.50 PerfScore 8.25 +G_M29279_IG05: ; bbWeight=1, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[edx]
; GC ptr vars -{V04 V10}
- xor eax, eax - mov gword ptr [ebp-0x34], ecx
+ xor ecx, ecx + ; gcrRegs +[ecx] + mov gword ptr [ebp-0x34], eax
; GC ptr vars +{V10} jmp SHORT G_M29279_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.62
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M29279_IG06: ; bbWeight=0.50, gcVars=000000B8 {V04 V10 V22 V23}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax ecx edx] ; GC ptr vars +{V04} @@ -138,13 +150,14 @@ G_M29279_IG06: ; bbWeight=0.50, gcVars=000000B8 {V04 V10 V22 V23}, gcrefR mov ebx, dword ptr [ebp-0x2C] call [ebx+0x14]<unknown method> ; gcrRegs -[ecx edx] +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 3.12 -G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref - movzx edx, byte ptr [ebp-0x24]
mov ecx, eax ; gcrRegs +[ecx]
+ ;; size=16 bbWeight=0.50 PerfScore 3.25 +G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] + movzx edx, byte ptr [ebp-0x24]
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:<ToTypeWithState>g__getFlowState|79_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):ubyte]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
push eax lea ecx, [ebp-0x20] mov edx, gword ptr [ebp-0x34] @@ -210,7 +223,7 @@ G_M29279_IG07: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs= ; byrRegs -[ebx] mov eax, gword ptr [ebp-0x30] ; gcrRegs +[eax]
- ;; size=132 bbWeight=1 PerfScore 43.00
+ ;; size=130 bbWeight=1 PerfScore 42.75
G_M29279_IG08: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -220,6 +233,6 @@ G_M29279_IG08: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 267, prolog size 23, PerfScore 92.71, instruction count 94, allocated bytes for code 267 (MethodHash=e3348da0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 287, prolog size 31, PerfScore 92.96, instruction count 100, allocated bytes for code 287 (MethodHash=e3348da0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode: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 106 57 29 20 -548 +311
benchmarks.run_pgo.windows.x86.checked.mch 760 264 254 242 -3,838 +3,315
benchmarks.run_tiered.windows.x86.checked.mch 87 54 19 14 -546 +187
coreclr_tests.run.windows.x86.checked.mch 1,017 500 349 168 -5,344 +3,549
libraries.crossgen2.windows.x86.checked.mch 411 169 151 91 -1,608 +846
libraries.pmi.windows.x86.checked.mch 773 311 286 176 -3,612 +2,432
libraries_tests.run.windows.x86.Release.mch 4,323 1,686 1,662 975 -19,672 +16,383
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1,477 626 484 367 -5,882 +5,784
realworld.run.windows.x86.checked.mch 136 43 71 22 -572 +1,245
9,090 3,710 3,305 2,075 -41,622 +34,052

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,490 4 24,486 0 (0.00%) 3 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 117,682 41,904 75,778 0 (0.00%) 125 (0.11%)
benchmarks.run_tiered.windows.x86.checked.mch 47,880 28,747 19,133 0 (0.00%) 3 (0.01%)
coreclr_tests.run.windows.x86.checked.mch 574,519 319,847 254,672 1 (0.00%) 149 (0.03%)
libraries.crossgen2.windows.x86.checked.mch 242,614 15 242,599 0 (0.00%) 5 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,729 6 305,723 0 (0.00%) 44 (0.01%)
libraries_tests.run.windows.x86.Release.mch 626,797 427,222 199,575 0 (0.00%) 1,036 (0.17%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,389 21,910 294,479 0 (0.00%) 46 (0.01%)
realworld.run.windows.x86.checked.mch 35,976 3 35,973 0 (0.00%) 9 (0.03%)
2,292,076 839,658 1,452,418 1 (0.00%) 1,420 (0.06%)

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

Detail diffs



Top file regressions (bytes):
          75 : 18049.dasm (7.49 % of base)
          70 : 10039.dasm (2.41 % of base)
          22 : 21769.dasm (0.58 % of base)
          19 : 2817.dasm (1.79 % of base)
          19 : 19251.dasm (0.38 % of base)
          14 : 18159.dasm (0.42 % of base)
          14 : 3588.dasm (7.37 % of base)
          14 : 8089.dasm (0.23 % of base)
          12 : 18925.dasm (0.25 % of base)
          11 : 2446.dasm (2.45 % of base)
           4 : 16685.dasm (0.05 % of base)
           3 : 5821.dasm (3.49 % of base)
           3 : 13875.dasm (0.02 % of base)
           3 : 15220.dasm (3.61 % of base)
           3 : 13965.dasm (1.45 % of base)
           2 : 10659.dasm (0.37 % of base)
           2 : 14963.dasm (0.68 % of base)
           2 : 5794.dasm (0.85 % of base)
           2 : 5081.dasm (0.35 % of base)
           2 : 5692.dasm (4.44 % 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)
         -30 : 9846.dasm (-46.88 % of base)
         -26 : 2418.dasm (-2.25 % 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 : 8238.dasm (-2.39 % of base)
         -12 : 18620.dasm (-0.45 % of base)
         -10 : 562.dasm (-1.58 % of base)
         -10 : 15721.dasm (-1.77 % of base)
          -9 : 21367.dasm (-1.88 % of base)
          -9 : 17565.dasm (-1.48 % of base)
          -9 : 18642.dasm (-0.48 % of base)
          -8 : 13310.dasm (-3.40 % of base)
          -8 : 404.dasm (-3.08 % of base)
          -8 : 813.dasm (-0.15 % of base)

58 total files with Code Size differences (33 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          75 (7.49 % of base) : 18049.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          70 (2.41 % of base) : 10039.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          22 (0.58 % of base) : 21769.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte: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 (0.42 % of base) : 18159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          14 (0.23 % of base) : 8089.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
          12 (0.25 % of base) : 18925.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          11 (2.45 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],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)
           3 (0.02 % of base) : 13875.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
           3 (1.45 % of base) : 13965.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           3 (3.49 % of base) : 5821.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
           3 (3.61 % of base) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
           2 (0.38 % of base) : 22104.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (FullOpts)
           2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
           2 (1.18 % of base) : 16240.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
           2 (0.69 % of base) : 16241.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
           2 (1.14 % of base) : 14961.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():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)
         -30 (-46.88 % of base) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -26 (-2.25 % 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)
         -10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
          -9 (-0.48 % of base) : 18642.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          -9 (-1.88 % of base) : 21367.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):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 (-2.12 % of base) : 18377.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (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)

Top method regressions (percentages):
          75 (7.49 % of base) : 18049.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          14 (7.37 % of base) : 3588.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           2 (4.44 % of base) : 5692.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
           3 (3.61 % of base) : 15220.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:ReadEncoding(ubyte,ubyte):int (FullOpts)
           3 (3.49 % of base) : 5821.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
          11 (2.45 % of base) : 2446.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (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)
           3 (1.45 % of base) : 13965.dasm - ProtoBuf.Internal.Serializers.SurrogateSerializer`1[System.DateTimeOffset]:GetConversion(ubyte):System.Reflection.MethodInfo:this (FullOpts)
           2 (1.18 % of base) : 16240.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
           2 (1.14 % of base) : 14961.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (FullOpts)
           2 (0.85 % of base) : 5794.dasm - System.Net.Http.Headers.BaseHeaderParser:TryParseValue(System.String,System.Object,byref,byref):ubyte:this (FullOpts)
           2 (0.69 % of base) : 16241.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
           2 (0.68 % of base) : 14963.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          22 (0.58 % of base) : 21769.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (FullOpts)
          14 (0.42 % of base) : 18159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol: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.38 % of base) : 22104.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (FullOpts)
           2 (0.37 % of base) : 10659.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportElement(System.Xml.Serialization.TypeModel,System.Xml.Serialization.XmlRootAttribute,System.String,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.ElementAccessor:this (FullOpts)
           2 (0.35 % of base) : 5081.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)

Top method improvements (percentages):
         -30 (-46.88 % of base) : 9846.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -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)
          -2 (-2.50 % of base) : 19139.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (FullOpts)
         -12 (-2.39 % of base) : 8238.dasm - System.Text.Json.Reflection.ReflectionExtensions:TryGetDeserializationConstructor(System.Type,ubyte,byref):ubyte (FullOpts)
         -26 (-2.25 % of base) : 2418.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
          -4 (-2.19 % of base) : 21547.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (FullOpts)
          -8 (-2.12 % of base) : 18377.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
          -4 (-1.95 % of base) : 14443.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (FullOpts)
          -9 (-1.88 % of base) : 21367.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (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)


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

Detail diffs



Top file regressions (bytes):
         204 : 104822.dasm (13.27 % of base)
         204 : 104827.dasm (13.27 % of base)
         132 : 81587.dasm (5.25 % of base)
          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)
          58 : 1198.dasm (3.16 % of base)
          50 : 51741.dasm (5.35 % of base)
          42 : 114742.dasm (15.61 % of base)
          42 : 101037.dasm (15.61 % of base)
          42 : 62415.dasm (15.61 % of base)
          42 : 18132.dasm (15.61 % of base)
          42 : 31473.dasm (15.61 % of base)
          42 : 39276.dasm (15.61 % of base)
          40 : 106891.dasm (2.86 % of base)
          34 : 107227.dasm (6.71 % of base)
          34 : 5674.dasm (1.81 % of base)
          32 : 62580.dasm (3.67 % of base)
          30 : 108528.dasm (7.63 % of base)

Top file improvements (bytes):
        -146 : 83749.dasm (-1.55 % of base)
         -43 : 27417.dasm (-0.52 % of base)
         -43 : 71115.dasm (-10.31 % of base)
         -38 : 7763.dasm (-1.68 % of base)
         -34 : 42186.dasm (-49.28 % of base)
         -34 : 25899.dasm (-49.28 % of base)
         -33 : 5725.dasm (-1.09 % of base)
         -32 : 117673.dasm (-47.76 % of base)
         -32 : 22861.dasm (-47.76 % of base)
         -32 : 22965.dasm (-2.75 % of base)
         -32 : 23377.dasm (-47.76 % of base)
         -32 : 36162.dasm (-47.76 % of base)
         -32 : 37314.dasm (-47.76 % of base)
         -32 : 38634.dasm (-47.76 % of base)
         -32 : 45489.dasm (-47.76 % of base)
         -32 : 88873.dasm (-47.76 % of base)
         -32 : 108513.dasm (-47.76 % of base)
         -32 : 11613.dasm (-47.76 % of base)
         -32 : 31226.dasm (-47.76 % of base)
         -32 : 69525.dasm (-47.76 % of base)

55 total files with Code Size differences (29 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
         204 (13.27 % of base) : 104822.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
         204 (13.27 % of base) : 104827.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
         132 (5.25 % of base) : 81587.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
          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)
          58 (3.16 % of base) : 1198.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier0-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) : 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) : 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) : 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) : 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) : 31473.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)
          40 (2.86 % of base) : 106891.dasm - System.Net.IPEndPoint:Create(System.Net.SocketAddress):System.Net.EndPoint:this (Tier1)
          34 (1.81 % of base) : 5674.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (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)
          32 (3.67 % of base) : 62580.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):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)

Top method improvements (bytes):
        -146 (-1.55 % of base) : 83749.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
         -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)
         -34 (-49.28 % of base) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -34 (-49.28 % of base) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -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)
         -32 (-47.76 % of base) : 117673.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 22861.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 23377.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 36162.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 37314.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 38634.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 45489.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 88873.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 108513.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 31226.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 69525.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 70445.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
          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) : 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) : 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) : 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) : 31473.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)
         204 (13.27 % of base) : 104822.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
         204 (13.27 % of base) : 104827.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (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)
          10 (9.09 % of base) : 79936.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:set_CurrentFunction(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):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)
          25 (6.22 % of base) : 93493.dasm - System.RuntimeType:CreateInstanceOfT():System.Object:this (Tier1)
          25 (6.22 % of base) : 96511.dasm - System.RuntimeType:CreateInstanceOfT():System.Object: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)

Top method improvements (percentages):
         -34 (-49.28 % of base) : 42186.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -34 (-49.28 % of base) : 25899.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 117673.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 22861.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 23377.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 36162.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 37314.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 38634.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 45489.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 88873.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 108513.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 11613.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 31226.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 69525.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 70445.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 86169.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 87813.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 41261.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 48349.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -32 (-47.76 % of base) : 73665.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9468479 (overridden on cmd)
Total bytes of diff: 9468120 (overridden on cmd)
Total bytes of delta: -359 (-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 : 6999.dasm (1.79 % of base)
          19 : 41122.dasm (0.38 % of base)
          14 : 18979.dasm (0.23 % of base)
          14 : 6624.dasm (7.37 % of base)
          14 : 36895.dasm (0.42 % of base)
          11 : 24450.dasm (2.45 % of base)
           4 : 32394.dasm (0.05 % of base)
           3 : 28201.dasm (3.49 % of base)
           3 : 27527.dasm (0.02 % of base)
           2 : 29705.dasm (0.68 % of base)
           2 : 44186.dasm (0.38 % of base)
           2 : 9243.dasm (0.20 % of base)
           2 : 16456.dasm (0.35 % of base)
           2 : 29704.dasm (1.14 % of base)
           2 : 31783.dasm (1.18 % of base)
           2 : 31785.dasm (0.69 % of base)
           1 : 14940.dasm (0.31 % of base)
           1 : 20519.dasm (0.25 % 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)
         -32 : 3274.dasm (-47.76 % of base)
         -26 : 5174.dasm (-2.25 % 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 : 18825.dasm (-2.39 % of base)
         -12 : 36802.dasm (-0.45 % of base)
         -10 : 29886.dasm (-1.77 % of base)
         -10 : 1461.dasm (-1.58 % of base)
          -9 : 42671.dasm (-1.88 % of base)
          -9 : 38140.dasm (-0.48 % of base)
          -8 : 1038.dasm (-3.08 % of base)
          -8 : 18397.dasm (-1.86 % of base)
          -8 : 2174.dasm (-0.15 % of base)
          -8 : 26548.dasm (-3.40 % of base)

51 total files with Code Size differences (32 improved, 19 regressed), 14 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 (0.42 % of base) : 36895.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          14 (7.37 % of base) : 6624.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (Tier0-FullOpts)
          14 (0.23 % of base) : 18979.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
          11 (2.45 % of base) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (Tier1)
           4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
           3 (0.02 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
           3 (3.49 % of base) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
           2 (0.38 % of base) : 44186.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (Tier0-FullOpts)
           2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
           2 (1.18 % of base) : 31783.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
           2 (0.69 % of base) : 31785.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
           2 (1.14 % of base) : 29704.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (Tier0-FullOpts)
           2 (0.68 % of base) : 29705.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
           2 (0.20 % of base) : 9243.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
           1 (0.31 % of base) : 14940.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
           1 (0.25 % of base) : 20519.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,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)
         -32 (-47.76 % of base) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -26 (-2.25 % 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)
         -10 (-1.58 % of base) : 1461.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
          -9 (-0.48 % of base) : 38140.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          -9 (-1.88 % of base) : 42671.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -8 (-2.12 % of base) : 36192.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol: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)

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)
           3 (3.49 % of base) : 28201.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (Tier1)
          11 (2.45 % of base) : 24450.dasm - System.Text.RegularExpressions.RegexCompiler:LoadSearchValues[System.__Canon](System.__Canon[],int):this (Tier1)
          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)
           2 (1.18 % of base) : 31783.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
           2 (1.14 % of base) : 29704.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:Initialize():this (Tier0-FullOpts)
           2 (0.69 % of base) : 31785.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
           2 (0.68 % of base) : 29705.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
          14 (0.42 % of base) : 36895.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
          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.38 % of base) : 44186.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:ReadAttributes(System.Xml.XmlReader,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement) (Tier0-FullOpts)
           2 (0.35 % of base) : 16456.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
           1 (0.31 % of base) : 14940.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)
           1 (0.25 % of base) : 20519.dasm - System.Text.RegularExpressions.RegexCharClass:AddCategoryFromName(System.String,ubyte,ubyte,System.String,int):this (Tier0-FullOpts)
          14 (0.23 % of base) : 18979.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier0-FullOpts)
           2 (0.20 % of base) : 9243.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
           4 (0.05 % of base) : 32394.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
           3 (0.02 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

Top method improvements (percentages):
         -32 (-47.76 % of base) : 3274.dasm - System.Reflection.MetadataImport:Equals(System.Object):ubyte:this (Tier1)
         -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)
         -26 (-2.25 % of base) : 5174.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (Tier0-FullOpts)
          -4 (-2.19 % of base) : 43317.dasm - Benchstone.BenchI.QuickSort:Quick(int,int,int[]) (Tier0-FullOpts)
          -8 (-2.12 % of base) : 36192.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier0-FullOpts)
          -4 (-1.95 % of base) : 29021.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier0-FullOpts)
          -9 (-1.88 % of base) : 42671.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (Tier1)
          -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)


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

Detail diffs



Top file regressions (bytes):
         133 : 330141.dasm (8.17 % of base)
         132 : 190690.dasm (9.13 % of base)
         132 : 190688.dasm (9.13 % of base)
         119 : 568825.dasm (2.55 % of base)
          98 : 564038.dasm (2.36 % of base)
          98 : 301726.dasm (2.36 % of base)
          91 : 327619.dasm (5.69 % of base)
          88 : 167894.dasm (2.87 % of base)
          88 : 165818.dasm (2.87 % of base)
          88 : 419356.dasm (2.83 % of base)
          75 : 185978.dasm (7.49 % of base)
          70 : 189465.dasm (2.33 % of base)
          70 : 450605.dasm (2.33 % of base)
          60 : 571206.dasm (1.84 % of base)
          59 : 165834.dasm (1.82 % of base)
          59 : 167910.dasm (1.82 % of base)
          56 : 566678.dasm (2.81 % of base)
          54 : 419369.dasm (1.62 % of base)
          54 : 571296.dasm (1.13 % of base)
          53 : 302592.dasm (2.68 % of base)

Top file improvements (bytes):
        -210 : 20251.dasm (-26.02 % of base)
        -188 : 167305.dasm (-28.53 % of base)
        -105 : 549219.dasm (-4.79 % of base)
         -66 : 20250.dasm (-24.72 % of base)
         -61 : 20249.dasm (-14.81 % of base)
         -56 : 568785.dasm (-1.75 % of base)
         -44 : 282661.dasm (-6.14 % of base)
         -44 : 545906.dasm (-6.14 % of base)
         -35 : 405671.dasm (-22.88 % of base)
         -35 : 431115.dasm (-31.53 % of base)
         -35 : 431388.dasm (-34.31 % of base)
         -35 : 426243.dasm (-22.88 % of base)
         -35 : 426244.dasm (-31.53 % of base)
         -34 : 396723.dasm (-7.91 % of base)
         -34 : 132749.dasm (-7.91 % of base)
         -34 : 132758.dasm (-7.91 % of base)
         -34 : 396715.dasm (-7.91 % of base)
         -33 : 302606.dasm (-3.85 % of base)
         -33 : 236801.dasm (-21.43 % of base)
         -32 : 431532.dasm (-48.48 % of base)

74 total files with Code Size differences (39 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         133 (8.17 % of base) : 330141.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         132 (9.13 % of base) : 190688.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (FullOpts)
         132 (9.13 % of base) : 190690.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (FullOpts)
         119 (2.55 % of base) : 568825.dasm - Internal.JitInterface.CorInfoImpl:getMethodInfo(uint,uint,uint):ubyte:this (Tier1)
          98 (2.36 % of base) : 301726.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (FullOpts)
          98 (2.36 % of base) : 564038.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:ReadNewTargetElement(Microsoft.Build.Construction.ProjectTargetElement,ubyte,Microsoft.Build.Evaluation.EvaluationProfiler):Microsoft.Build.Execution.ProjectTargetInstance (Tier0-FullOpts)
          91 (5.69 % of base) : 327619.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          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)
          75 (7.49 % of base) : 185978.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (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)
          60 (1.84 % of base) : 571206.dasm - Internal.JitInterface.CorInfoImpl:getClassAttribsInternal(Internal.TypeSystem.TypeDesc):uint:this (Tier1)
          59 (1.82 % of base) : 165834.dasm - NetClient.StringTests:Marshal_LPWString():this (FullOpts)
          59 (1.82 % of base) : 167910.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.13 % of base) : 571296.dasm - Internal.JitInterface.CorInfoImpl:getMethodInfo(uint,uint,uint):ubyte:this (Tier1)
          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)

Top method improvements (bytes):
        -210 (-26.02 % of base) : 20251.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -188 (-28.53 % of base) : 167305.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -105 (-4.79 % of base) : 549219.dasm - System.Reflection.PortableExecutable.PEReader:.ctor(System.IO.Stream,int,int):this (Tier1)
         -66 (-24.72 % of base) : 20250.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -61 (-14.81 % of base) : 20249.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -56 (-1.75 % of base) : 568785.dasm - Internal.JitInterface.CorInfoImpl:getFieldInfo(byref,uint,int,uint):this (Tier1)
         -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)
         -35 (-22.88 % of base) : 426243.dasm - System.Double:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -35 (-31.53 % of base) : 426244.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -35 (-22.88 % of base) : 405671.dasm - System.Single:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -35 (-34.31 % of base) : 431388.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -35 (-31.53 % of base) : 431115.dasm - System.UInt64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -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)
         -33 (-3.85 % of base) : 302606.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
         -33 (-21.43 % of base) : 236801.dasm - Runtime_40440+LargeStruct:Equals(System.Object):ubyte:this (FullOpts)
         -32 (-48.48 % of base) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)

Top method regressions (percentages):
           8 (11.43 % of base) : 236896.dasm - Runtime_49101:Test(int,int,int,int,int,int,int,int,int,float,float,float,float,float,float,float,float,float,System.Numerics.Vector3):int (FullOpts)
          50 (9.14 % of base) : 570327.dasm - ILCompiler.ReadyToRunHashCode:TypeHashCode(Internal.TypeSystem.TypeDesc):int (Tier1)
         132 (9.13 % of base) : 190688.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (FullOpts)
         132 (9.13 % of base) : 190690.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (FullOpts)
         133 (8.17 % of base) : 330141.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          75 (7.49 % of base) : 185978.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          91 (5.69 % of base) : 327619.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          33 (5.17 % of base) : 454875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateRtFields(System.RuntimeType+RuntimeTypeCache+Filter,uint,int,System.RuntimeType,byref):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)
           4 (4.08 % of base) : 467268.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature):System.Reflection.ParameterInfo[] (Tier1)
           3 (3.80 % of base) : 562067.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 562778.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 449355.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 458730.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 566312.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 483179.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 543653.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
           3 (3.80 % of base) : 570687.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -32 (-48.48 % of base) : 431532.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -30 (-46.88 % of base) : 439284.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -30 (-46.88 % of base) : 309121.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -30 (-46.88 % of base) : 431392.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -30 (-46.88 % of base) : 487154.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -30 (-46.88 % of base) : 431398.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -31 (-44.93 % of base) : 431395.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -31 (-44.93 % of base) : 431396.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)
         -31 (-44.93 % of base) : 431397.dasm - System.SByte:Equals(System.Object):ubyte:this (Tier1)
         -31 (-44.93 % of base) : 431394.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -31 (-38.75 % of base) : 431393.dasm - System.Int64:Equals(System.Object):ubyte:this (Tier1)
         -31 (-38.75 % of base) : 431399.dasm - System.UInt64:Equals(System.Object):ubyte:this (Tier1)
         -35 (-34.31 % of base) : 431388.dasm - System.Single:Equals(System.Object):ubyte:this (Tier1)
         -35 (-31.53 % of base) : 426244.dasm - System.Int64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -35 (-31.53 % of base) : 431115.dasm - System.UInt64:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -28 (-29.17 % of base) : 326952.dasm - System.Byte:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -28 (-29.17 % of base) : 405680.dasm - System.SByte:Equals(System.Object):ubyte:this (Instrumented Tier1)
        -188 (-28.53 % of base) : 167305.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -25 (-28.09 % of base) : 174537.dasm - System.Int32:Equals(System.Object):ubyte:this (Instrumented Tier1)
         -25 (-28.09 % of base) : 405688.dasm - System.UInt32:Equals(System.Object):ubyte:this (Instrumented 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: 31713985 (overridden on cmd)
Total bytes of diff: 31713223 (overridden on cmd)
Total bytes of delta: -762 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         198 : 58113.dasm (4.80 % of base)
          33 : 111896.dasm (3.12 % of base)
          33 : 125645.dasm (3.12 % of base)
          25 : 23401.dasm (3.51 % of base)
          22 : 20953.dasm (2.10 % of base)
          17 : 138161.dasm (4.01 % of base)
          17 : 140500.dasm (1.95 % of base)
          17 : 217702.dasm (0.56 % of base)
          16 : 6897.dasm (1.07 % of base)
          12 : 215389.dasm (2.38 % of base)
          12 : 73932.dasm (1.87 % of base)
          12 : 183647.dasm (2.38 % of base)
          12 : 198099.dasm (0.92 % of base)
          11 : 50714.dasm (0.31 % of base)
          11 : 232207.dasm (5.91 % of base)
           9 : 227192.dasm (3.31 % of base)
           9 : 219569.dasm (1.55 % of base)
           9 : 227193.dasm (3.31 % of base)
           8 : 196830.dasm (0.49 % of base)
           8 : 22183.dasm (1.06 % 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 : 226942.dasm (-20.47 % of base)
         -26 : 231425.dasm (-4.73 % of base)
         -24 : 179561.dasm (-5.74 % of base)
         -24 : 189238.dasm (-2.54 % of base)
         -24 : 222943.dasm (-4.11 % of base)
         -24 : 189620.dasm (-2.75 % of base)
         -24 : 231738.dasm (-5.74 % of base)
         -23 : 22065.dasm (-11.33 % of base)
         -22 : 25158.dasm (-4.64 % of base)
         -22 : 71840.dasm (-3.25 % of base)
         -21 : 23429.dasm (-2.13 % of base)
         -21 : 135715.dasm (-0.90 % of base)
         -20 : 178852.dasm (-15.75 % of base)

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

Top method regressions (bytes):
         198 (4.80 % 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)
          33 (3.12 % of base) : 111896.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          33 (3.12 % of base) : 125645.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization: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 (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)
          17 (0.56 % of base) : 217702.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):ubyte:this (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)
          12 (2.38 % of base) : 215389.dasm - System.Configuration.ClientSettingsStore:ReadSettingsFromFile(System.String,System.String,ubyte):System.Collections.IDictionary (FullOpts)
          12 (2.38 % of base) : 183647.dasm - System.Configuration.ClientSettingsStore:ReadSettingsFromFile(System.String,System.String,ubyte):System.Collections.IDictionary (FullOpts)
          12 (1.87 % of base) : 73932.dasm - System.Data.BinaryNode:ResultSqlType(int,int,int):int (FullOpts)
          11 (0.31 % of base) : 50714.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:CheckModifiers(ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           9 (1.55 % of base) : 219569.dasm - System.DirectoryServices.AccountManagement.PrincipalContext:.ctor(int,System.String,System.String,int,System.String,System.String):this (FullOpts)
           9 (3.31 % of base) : 227193.dasm - System.IO.Pipelines.Pipe:CancelPendingFlush():this (FullOpts)
           9 (3.31 % of base) : 227192.dasm - System.IO.Pipelines.Pipe:CancelPendingRead():this (FullOpts)
           8 (0.49 % of base) : 196830.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeText(System.String,System.String):ubyte (FullOpts)
           8 (1.06 % of base) : 22183.dasm - System.TimeZoneInfo:TryGetEndOfDstIfYearStartWithDst(int,System.TimeSpan,System.TimeZoneInfo,byref):ubyte (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) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.74 % of base) : 231738.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):
           3 (12.50 % of base) : 75902.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 75933.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 75964.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 75995.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.57 % of base) : 201008.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
           3 (8.57 % of base) : 75491.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
           6 (7.06 % of base) : 18577.dasm - System.Threading.Tasks.Task`1[int]:.ctor(ubyte,int,int,System.Threading.CancellationToken):this (FullOpts)
           6 (7.06 % 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)
           6 (6.98 % of base) : 17736.dasm - System.Threading.Tasks.Task`1[ubyte]:.ctor(ubyte,ubyte,int,System.Threading.CancellationToken):this (FullOpts)
           6 (6.45 % of base) : 21566.dasm - System.Threading.Tasks.Task`1[long]:.ctor(ubyte,long,int,System.Threading.CancellationToken):this (FullOpts)
           6 (6.38 % of base) : 19273.dasm - System.Threading.Tasks.Task`1[System.__Canon]:.ctor(ubyte,System.__Canon,int,System.Threading.CancellationToken):this (FullOpts)
          11 (5.91 % of base) : 232207.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
           3 (5.26 % of base) : 76173.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:Dispose(ubyte):this (FullOpts)
           3 (5.08 % of base) : 197562.dasm - Microsoft.VisualBasic.CompilerServices.StringType:StrLikeCompareBinary(ubyte,ubyte,ushort,ushort):ubyte (FullOpts)
           3 (4.84 % of base) : 169842.dasm - System.Net.Mail.AlternateView:Dispose(ubyte):this (FullOpts)
         198 (4.80 % 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)
           3 (4.48 % of base) : 71629.dasm - System.Data.SqlTypes.SqlBoolean:Equals(System.Data.SqlTypes.SqlBoolean):ubyte:this (FullOpts)
           3 (4.48 % of base) : 231488.dasm - System.Net.WebSockets.HttpWebSocket:ThrowIfConnectionAborted(System.IO.Stream,ubyte) (FullOpts)
          17 (4.01 % of base) : 138161.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:SetSlotUnassigned(int,byref):this (FullOpts)
          25 (3.51 % of base) : 23401.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (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) : 179561.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
         -24 (-5.74 % of base) : 231738.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: 49253151 (overridden on cmd)
Total bytes of diff: 49251971 (overridden on cmd)
Total bytes of delta: -1180 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          75 : 110570.dasm (7.49 % of base)
          75 : 148749.dasm (7.49 % of base)
          70 : 270996.dasm (2.36 % of base)
          63 : 38799.dasm (5.69 % of base)
          58 : 49685.dasm (5.12 % of base)
          52 : 36913.dasm (6.39 % of base)
          49 : 36970.dasm (5.65 % of base)
          44 : 36708.dasm (3.14 % of base)
          42 : 36889.dasm (6.01 % of base)
          42 : 36856.dasm (6.43 % of base)
          42 : 36860.dasm (6.40 % of base)
          42 : 36883.dasm (6.24 % of base)
          41 : 185541.dasm (2.05 % of base)
          41 : 213240.dasm (1.78 % of base)
          40 : 61448.dasm (1.34 % of base)
          39 : 209718.dasm (1.61 % of base)
          37 : 36852.dasm (3.00 % of base)
          35 : 212484.dasm (5.30 % of base)
          34 : 78545.dasm (2.07 % of base)
          33 : 36884.dasm (4.44 % of base)

Top file improvements (bytes):
        -210 : 21394.dasm (-26.02 % of base)
        -196 : 191230.dasm (-28.12 % of base)
         -85 : 70958.dasm (-2.38 % of base)
         -85 : 71019.dasm (-2.38 % of base)
         -75 : 21344.dasm (-12.98 % of base)
         -71 : 36706.dasm (-2.61 % of base)
         -66 : 21343.dasm (-24.72 % of base)
         -61 : 21342.dasm (-14.81 % of base)
         -51 : 212497.dasm (-1.22 % of base)
         -50 : 71190.dasm (-3.98 % of base)
         -43 : 165420.dasm (-10.31 % of base)
         -39 : 40903.dasm (-2.24 % of base)
         -37 : 107343.dasm (-1.10 % of base)
         -36 : 228803.dasm (-16.51 % of base)
         -34 : 258235.dasm (-4.52 % of base)
         -33 : 186555.dasm (-42.31 % of base)
         -33 : 201925.dasm (-3.85 % of base)
         -33 : 279631.dasm (-40.74 % of base)
         -33 : 279591.dasm (-40.74 % of base)
         -33 : 279611.dasm (-31.43 % of base)

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

Top method regressions (bytes):
          75 (7.49 % of base) : 110570.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 148749.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          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)
          52 (6.39 % of base) : 36913.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitFunctionPointerInvocation(Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          49 (5.65 % of base) : 36970.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          44 (3.14 % of base) : 36708.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.01 % of base) : 36889.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicIndexerAccess(Microsoft.CodeAnalysis.CSharp.BoundDynamicIndexerAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.24 % of base) : 36883.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicMemberAccess(Microsoft.CodeAnalysis.CSharp.BoundDynamicMemberAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.43 % of base) : 36856.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.40 % of base) : 36860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitRefValueOperator(Microsoft.CodeAnalysis.CSharp.BoundRefValueOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          41 (2.05 % of base) : 185541.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AttributePresenceFilterNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          41 (1.78 % of base) : 213240.dasm - Microsoft.Build.Evaluation.Project+ProjectImpl:BuildGlobResultFromIncludeItem(Microsoft.Build.Construction.ProjectItemElement,System.Collections.Generic.IReadOnlyDictionary`2[System.String,Microsoft.Build.Evaluation.Project+ProjectImpl+CumulativeRemoveElementData]):Microsoft.Build.Evaluation.GlobResult:this (FullOpts)
          40 (1.34 % of base) : 61448.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
          39 (1.61 % of base) : 209718.dasm - Microsoft.Build.Execution.ProjectInstance:Initialize(Microsoft.Build.Construction.ProjectRootElement,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String,System.String,int,Microsoft.Build.Execution.BuildParameters,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,Microsoft.Build.BackEnd.SdkResolution.ISdkResolverService,int,System.Nullable`1[int],Microsoft.Build.Evaluation.Context.EvaluationContext):this (FullOpts)
          37 (3.00 % of base) : 36852.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitBadExpression(Microsoft.CodeAnalysis.CSharp.BoundBadExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          35 (5.30 % of base) : 212484.dasm - Microsoft.Build.Shared.FileMatcher:IsMatch(System.ReadOnlySpan`1[ushort],System.String):ubyte (FullOpts)
          34 (2.07 % of base) : 78545.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildAndVerifyUsingInfo(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.ValueTuple`3[Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression]],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          33 (4.44 % of base) : 36884.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDynamicInvocation(Microsoft.CodeAnalysis.CSharp.BoundDynamicInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)

Top method improvements (bytes):
        -210 (-26.02 % of base) : 21394.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -196 (-28.12 % of base) : 191230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -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)
         -75 (-12.98 % of base) : 21344.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isInteger(System.Object):ubyte (FullOpts)
         -71 (-2.61 % of base) : 36706.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
         -66 (-24.72 % of base) : 21343.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -61 (-14.81 % of base) : 21342.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -51 (-1.22 % of base) : 212497.dasm - Microsoft.Build.Shared.FileMatcher:GetFilesImplementation(System.String,System.String,System.Collections.Generic.List`1[System.String]):System.ValueTuple`3[System.String[],int,System.String]: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)
         -39 (-2.24 % of base) : 40903.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitMethodDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
         -37 (-1.10 % of base) : 107343.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:RewriteIncludeElement(System.Xml.Linq.XElement,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,byref):System.Xml.Linq.XNode[]:this (FullOpts)
         -36 (-16.51 % of base) : 228803.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
         -34 (-4.52 % of base) : 258235.dasm - System.Net.Http.AuthenticationHelper+DigestResponse:GetNextValue(System.String,int,ubyte,byref):System.String (FullOpts)
         -33 (-42.31 % of base) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-3.85 % of base) : 201925.dasm - Internal.TypeSystem.Ecma.EcmaMethod:GetImportAttributesFromBestFitMappingAttribute(System.Reflection.Metadata.CustomAttributeHandleCollection):short:this (FullOpts)
         -33 (-40.74 % of base) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-31.43 % of base) : 279611.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-40.74 % of base) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
           3 (12.50 % of base) : 181001.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 181033.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 181065.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 181097.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
          14 (11.76 % of base) : 162523.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          14 (11.76 % of base) : 206692.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          14 (11.76 % of base) : 124467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           3 (8.57 % of base) : 237568.dasm - System.Diagnostics.Eventing.Reader.EventLogWatcher:set_Enabled(ubyte):this (FullOpts)
           3 (8.57 % of base) : 180236.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
           3 (8.57 % of base) : 180445.dasm - System.Security.Cryptography.KeyedHashAlgorithm:Dispose(ubyte):this (FullOpts)
          20 (7.49 % of base) : 36857.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          75 (7.49 % of base) : 110570.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 148749.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          14 (7.37 % of base) : 295838.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):ubyte (FullOpts)
          15 (7.18 % of base) : 36572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetLvalueResultType(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (FullOpts)
          10 (6.85 % of base) : 274267.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
          10 (6.58 % of base) : 274183.dasm - System.Numerics.BigInteger:Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
          42 (6.43 % of base) : 36856.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.40 % of base) : 36860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitRefValueOperator(Microsoft.CodeAnalysis.CSharp.BoundRefValueOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          52 (6.39 % of base) : 36913.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitFunctionPointerInvocation(Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)

Top method improvements (percentages):
         -33 (-42.31 % of base) : 186555.dasm - ILCompiler.IBC.IBCProfileParser+IBCBlobKey:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-40.74 % of base) : 279631.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-40.74 % of base) : 279591.dasm - System.Speech.Synthesis.TtsEngine.SpeechEventInfo:Equals(System.Object):ubyte:this (FullOpts)
         -33 (-31.43 % of base) : 279611.dasm - System.Speech.Synthesis.TtsEngine.FragmentState:Equals(System.Object):ubyte:this (FullOpts)
        -196 (-28.12 % of base) : 191230.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -30 (-26.79 % of base) : 191928.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[ubyte,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)
         -30 (-26.79 % of base) : 144730.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+IdOfIncompleteAction:Equals(System.Object):ubyte:this (FullOpts)
        -210 (-26.02 % of base) : 21394.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -66 (-24.72 % of base) : 21343.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:isNumber(System.Object):ubyte (FullOpts)
         -28 (-23.73 % of base) : 233904.dasm - System.Data.Odbc.OdbcParameter:GetParameterScale(System.Object):ubyte:this (FullOpts)
         -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)
         -21 (-16.80 % of base) : 21358.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
         -36 (-16.51 % of base) : 228803.dasm - System.ComponentModel.Composition.Hosting.ScopingExtensions:ContainsPartMetadata[int](System.ComponentModel.Composition.Primitives.ComposablePartDefinition,System.String,int):ubyte (FullOpts)
         -20 (-15.87 % of base) : 274154.dasm - System.Numerics.BigIntegerCalculator:Compare(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint]):int (FullOpts)
         -21 (-15.11 % of base) : 279645.dasm - System.Speech.Synthesis.TtsEngine.ProsodyNumber:Equals(System.Object):ubyte:this (FullOpts)
         -27 (-14.84 % of base) : 144723.dasm - Microsoft.Diagnostics.Tracing.CLRRuntimeActivityComputer+EventUID:Equals(System.Object):ubyte:this (FullOpts)
         -61 (-14.81 % of base) : 21342.dasm - Microsoft.FSharp.Core.PrintfImpl+FloatAndDecimal:toFormattedString(System.String,System.Object):System.String (FullOpts)
         -22 (-14.19 % of base) : 202920.dasm - R2RDump.Disassembler:TryParseAbsoluteAddress(System.String,byref,byref,byref):ubyte:this (FullOpts)
         -26 (-13.98 % of base) : 191924.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeTable+KeyPair`2[System.__Canon,System.Nullable`1[int]]:Equals(System.Object):ubyte:this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 185471045 (overridden on cmd)
Total bytes of diff: 185467756 (overridden on cmd)
Total bytes of delta: -3289 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         158 : 407074.dasm (3.36 % of base)
         130 : 84083.dasm (3.79 % of base)
         127 : 78143.dasm (2.46 % of base)
         116 : 573705.dasm (16.25 % of base)
         116 : 406710.dasm (3.13 % of base)
         110 : 84079.dasm (3.21 % of base)
          95 : 281976.dasm (3.17 % of base)
          92 : 570108.dasm (8.55 % of base)
          90 : 82787.dasm (4.41 % of base)
          89 : 479519.dasm (2.72 % of base)
          86 : 617764.dasm (6.09 % of base)
          84 : 618047.dasm (2.53 % of base)
          84 : 478453.dasm (4.12 % of base)
          79 : 577680.dasm (3.10 % of base)
          72 : 56360.dasm (1.76 % of base)
          70 : 576394.dasm (1.99 % of base)
          67 : 334103.dasm (3.29 % of base)
          67 : 341776.dasm (3.29 % of base)
          66 : 159750.dasm (7.07 % of base)
          66 : 542547.dasm (2.81 % of base)

Top file improvements (bytes):
        -163 : 578640.dasm (-3.76 % of base)
        -135 : 56966.dasm (-3.43 % of base)
        -121 : 572444.dasm (-5.78 % of base)
        -117 : 406650.dasm (-1.77 % of base)
        -108 : 57195.dasm (-4.85 % of base)
        -100 : 269808.dasm (-2.55 % of base)
         -96 : 56822.dasm (-1.76 % of base)
         -85 : 221650.dasm (-2.38 % of base)
         -85 : 221946.dasm (-2.38 % of base)
         -83 : 585488.dasm (-4.29 % of base)
         -82 : 84077.dasm (-2.60 % of base)
         -78 : 577683.dasm (-1.25 % of base)
         -77 : 51283.dasm (-2.16 % of base)
         -71 : 577209.dasm (-1.83 % of base)
         -70 : 272212.dasm (-2.07 % of base)
         -68 : 597898.dasm (-1.20 % of base)
         -66 : 504493.dasm (-3.48 % of base)
         -64 : 585564.dasm (-3.83 % of base)
         -63 : 549394.dasm (-3.68 % of base)
         -63 : 83198.dasm (-1.68 % of base)

84 total files with Code Size differences (43 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         158 (3.36 % of base) : 407074.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateTypeDefTableMod():this (Tier0-FullOpts)
         130 (3.79 % of base) : 84083.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass6_0:<GetManagedValuesDestination>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
         127 (2.46 % of base) : 78143.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
         116 (16.25 % of base) : 573705.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstraintLanguageVersionAndRuntimeSupportForOperator(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         116 (3.13 % of base) : 406710.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateAssemblyRefTable():this (Tier0-FullOpts)
         110 (3.21 % of base) : 84079.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass2_0:<GetManagedValuesSource>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
          95 (3.17 % of base) : 281976.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternDotIsStar():this (Tier1)
          92 (8.55 % of base) : 570108.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsolete(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,ubyte):this (Tier1)
          90 (4.41 % of base) : 82787.dasm - Microsoft.Interop.StatefulMarshallerShapeHelper+<>c__DisplayClass4_0:<GetToManagedMethod>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
          89 (2.72 % of base) : 479519.dasm - System.Security.Cryptography.ECDsaCng:GenerateKey(System.Security.Cryptography.ECCurve):this (Tier1)
          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)
          79 (3.10 % of base) : 577680.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:DeclareLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol):this (Tier1)
          72 (1.76 % of base) : 56360.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
          70 (1.99 % of base) : 576394.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStaticCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (Tier1)
          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 (7.07 % of base) : 159750.dasm - Microsoft.Extensions.Options.Generators.Emitter:EmitRangeAttribute(System.String,System.String,System.String,System.String,ubyte):this (Tier1)
          66 (2.81 % of base) : 542547.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:ReadPartialSegmentSizeOne(ubyte,int,System.String) (Tier0-FullOpts)

Top method improvements (bytes):
        -163 (-3.76 % of base) : 578640.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstantPatternWithFallbackToTypePattern(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (Tier1)
        -135 (-3.43 % of base) : 56966.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindElementAccessCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
        -121 (-5.78 % of base) : 572444.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
        -117 (-1.77 % of base) : 406650.dasm - System.Reflection.Metadata.Decoding.Tests.SignatureDecoderTests:SimpleSignatureProviderCoverage():this (Tier0-FullOpts)
        -108 (-4.85 % of base) : 57195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
        -100 (-2.55 % of base) : 269808.dasm - System.Globalization.Tests.GraphemeBreakTest:RunStringInfoTestCase(System.String,System.Range[]) (Tier0-FullOpts)
         -96 (-1.76 % of base) : 56822.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
         -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)
         -83 (-4.29 % of base) : 585488.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this (Tier1)
         -82 (-2.60 % of base) : 84077.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection+<>c__DisplayClass0_0:<AllocateContainerForUnmanagedElements>b__0(Microsoft.CodeAnalysis.IMethodSymbol):ubyte:this (Tier1)
         -78 (-1.25 % of base) : 577683.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
         -77 (-2.16 % of base) : 51283.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:AreParameterAnnotationsCompatible(ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte):ubyte (Tier1)
         -71 (-1.83 % of base) : 577209.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:DefineLocal(Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CodeGen.LocalDefinition: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)
         -64 (-3.83 % of base) : 585564.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this (Tier1)
         -63 (-1.68 % of base) : 83198.dasm - Microsoft.Interop.ManualTypeMarshallingHelper:GetStatefulMarshallerDataForType(Microsoft.CodeAnalysis.ITypeSymbol,int,Microsoft.CodeAnalysis.ITypeSymbol,ubyte,Microsoft.CodeAnalysis.Compilation,System.Func`2[Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.Interop.MarshallingInfo]):System.Nullable`1[Microsoft.Interop.CustomTypeMarshallerData] (Tier1)
         -63 (-3.68 % of base) : 549394.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadSimpleGenericIList>d__193:MoveNext():this (Tier0-FullOpts)

Top method regressions (percentages):
         116 (16.25 % of base) : 573705.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstraintLanguageVersionAndRuntimeSupportForOperator(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
           7 (12.07 % of base) : 570185.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_HasSetsRequiredMembers():ubyte:this (Tier1)
          52 (12.01 % of base) : 153940.dasm - Microsoft.CodeAnalysis.CSharp.LazyMissingNonNullTypesContextDiagnosticInfo:GetRawDiagnosticInfos(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DiagnosticInfo]) (Tier1)
          20 (11.43 % of base) : 574837.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
          36 (10.81 % of base) : 579948.dasm - Microsoft.Cci.MetadataWriter:GetMetadataName(Microsoft.Cci.INamedTypeReference,int):System.String (Tier1)
           7 (10.61 % of base) : 374568.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
           7 (10.61 % of base) : 495778.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
           7 (10.61 % of base) : 592571.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          18 (10.29 % of base) : 156469.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:MayRequireTracking(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):ubyte:this (Tier1)
          59 (8.65 % of base) : 575014.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
           3 (8.57 % of base) : 482538.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (Tier1)
          92 (8.55 % of base) : 570108.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsolete(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,ubyte):this (Tier1)
          22 (8.49 % of base) : 330330.dasm - System.Net.Http.Headers.RangeItemHeaderValue:.ctor(System.Nullable`1[long],System.Nullable`1[long]):this (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)
          66 (7.07 % of base) : 159750.dasm - Microsoft.Extensions.Options.Generators.Emitter:EmitRangeAttribute(System.String,System.String,System.String,System.String,ubyte):this (Tier1)
           8 (6.84 % of base) : 51203.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyFlags():int:this (Tier1)
           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)
           7 (6.80 % of base) : 233870.dasm - System.Diagnostics.Activity:set_Current(System.Diagnostics.Activity) (Tier1)

Top method improvements (percentages):
         -29 (-46.03 % of base) : 182222.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 462141.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 563140.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 555160.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 302360.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 375828.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 236886.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 323951.dasm - System.Int32:Equals(System.Object):ubyte:this (Tier1)
         -29 (-46.03 % of base) : 558830.dasm - System.UInt32:Equals(System.Object):ubyte:this (Tier1)
         -32 (-45.71 % of base) : 397645.dasm - System.UInt16:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 44911.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 145215.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 555469.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 152297.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 131777.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 71182.dasm - System.Boolean:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 398054.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 558734.dasm - System.Byte:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 558738.dasm - System.Char:Equals(System.Object):ubyte:this (Tier1)
         -30 (-44.12 % of base) : 558811.dasm - System.Int16:Equals(System.Object):ubyte:this (Tier1)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 103778092 (overridden on cmd)
Total bytes of diff: 103777994 (overridden on cmd)
Total bytes of delta: -98 (-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)
         128 : 31412.dasm (8.56 % of base)
          86 : 312065.dasm (6.09 % of base)
          76 : 312086.dasm (3.06 % of base)
          75 : 45957.dasm (7.49 % of base)
          75 : 52503.dasm (7.49 % of base)
          75 : 54972.dasm (7.49 % 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 : 173512.dasm (2.40 % of base)
          55 : 188980.dasm (1.99 % of base)
          55 : 189296.dasm (1.60 % of base)
          55 : 278043.dasm (3.50 % of base)
          52 : 149479.dasm (1.65 % of base)
          52 : 189173.dasm (1.11 % of base)
          50 : 172164.dasm (2.13 % of base)

Top file improvements (bytes):
        -202 : 121265.dasm (-25.28 % of base)
        -188 : 25514.dasm (-28.53 % of base)
        -172 : 268460.dasm (-6.40 % of base)
        -117 : 188325.dasm (-1.77 % of base)
         -96 : 272687.dasm (-5.02 % of base)
         -85 : 94132.dasm (-2.38 % of base)
         -85 : 93772.dasm (-2.38 % of base)
         -68 : 83390.dasm (-6.18 % of base)
         -52 : 251081.dasm (-2.92 % of base)
         -52 : 275188.dasm (-2.92 % of base)
         -52 : 276498.dasm (-2.92 % of base)
         -52 : 251074.dasm (-2.92 % of base)
         -51 : 294111.dasm (-7.96 % of base)
         -51 : 294112.dasm (-7.74 % of base)
         -50 : 93903.dasm (-3.98 % of base)
         -43 : 63312.dasm (-10.31 % of base)
         -39 : 7814.dasm (-2.24 % of base)
         -37 : 304680.dasm (-3.03 % of base)
         -34 : 211722.dasm (-1.77 % of base)
         -34 : 218499.dasm (-1.71 % of base)

75 total files with Code Size differences (40 improved, 35 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)
         128 (8.56 % of base) : 31412.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode: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)
          75 (7.49 % of base) : 45957.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 52503.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 54972.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization: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 (3.50 % of base) : 278043.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode: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.65 % of base) : 149479.dasm - System.Buffers.Text.Tests.TestData+<GeneralIntegerParserTestData>d__124`1[ubyte]:MoveNext():ubyte:this (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)

Top method improvements (bytes):
        -202 (-25.28 % of base) : 121265.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
        -188 (-28.53 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
        -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)
         -96 (-5.02 % of base) : 272687.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WritePartialHelloWorld(System.Text.Json.JsonWriterOptions):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)
         -68 (-6.18 % of base) : 83390.dasm - System.ComponentModel.Composition.Hosting.ScopeExtensionsTests:ContainsMetadata():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)
         -39 (-2.24 % of base) : 7814.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitMethodDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
         -37 (-3.03 % of base) : 304680.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -34 (-1.71 % of base) : 218499.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
         -34 (-1.77 % of base) : 211722.dasm - System.Tests.UInt16Tests:ToStringTest(ushort,System.String,System.IFormatProvider,System.String) (FullOpts)

Top method regressions (percentages):
           3 (12.50 % of base) : 160301.dasm - System.Net.NetworkInformation.Tests.PingTest+FinalizingPing:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 227130.dasm - System.Security.Cryptography.SHA1CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 227369.dasm - System.Security.Cryptography.SHA256CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 227363.dasm - System.Security.Cryptography.SHA384CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (12.50 % of base) : 227355.dasm - System.Security.Cryptography.SHA512CryptoServiceProvider:Dispose(ubyte):this (FullOpts)
           3 (8.57 % of base) : 232334.dasm - System.Security.Cryptography.HMAC:Dispose(ubyte):this (FullOpts)
         128 (8.56 % of base) : 31412.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          75 (7.49 % of base) : 45957.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 52503.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          75 (7.49 % of base) : 54972.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
          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)
          10 (6.85 % of base) : 201151.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (FullOpts)
          86 (6.09 % of base) : 312065.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
          22 (6.04 % of base) : 54638.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          22 (6.04 % of base) : 44949.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          22 (6.04 % of base) : 50809.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          18 (5.96 % of base) : 55105.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte: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)
           3 (5.88 % of base) : 181642.dasm - XmlCoreTest.Common.CustomWriter:Dispose(ubyte):this (FullOpts)

Top method improvements (percentages):
         -32 (-48.48 % of base) : 203179.dasm - System.Runtime.Serialization.Formatters.Tests.StructContainingArraysOfOtherStructs:Equals(System.Object):ubyte:this (FullOpts)
        -188 (-28.53 % of base) : 25514.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:IsDefault(System.Object):ubyte (FullOpts)
         -30 (-26.79 % of base) : 95859.dasm - System.Data.Tests.DataRowTest2+Address:Equals(System.Object):ubyte:this (FullOpts)
        -202 (-25.28 % of base) : 121265.dasm - Microsoft.FSharp.Core.PrintfImpl+GenericNumber:isPositive(System.Object):ubyte (FullOpts)
         -23 (-21.90 % of base) : 3010.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetOrderMetadata(System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]):int (FullOpts)
         -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) : 218.dasm - System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this (FullOpts)
         -22 (-10.58 % of base) : 277850.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)
         -16 (-6.69 % of base) : 310680.dasm - System.Threading.Tasks.Tests.TaskRtTests:<FromResult_KnownResults_Cached>g__AssertCached|5_0[int](int) (FullOpts)
          -9 (-6.62 % of base) : 92079.dasm - System.Configuration.Internal.WriteFileContext:ReplaceFile(System.String,System.String) (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: 11345019 (overridden on cmd)
Total bytes of diff: 11345692 (overridden on cmd)
Total bytes of delta: 673 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         312 : 24340.dasm (6.70 % of base)
         128 : 25967.dasm (8.57 % of base)
          75 : 28446.dasm (7.49 % of base)
          52 : 16614.dasm (1.45 % of base)
          49 : 27255.dasm (5.77 % of base)
          44 : 25642.dasm (3.20 % of base)
          42 : 26989.dasm (6.58 % of base)
          42 : 14563.dasm (3.70 % of base)
          40 : 23140.dasm (1.35 % of base)
          34 : 13011.dasm (1.12 % of base)
          30 : 21635.dasm (1.64 % of base)
          24 : 23521.dasm (1.49 % of base)
          22 : 21646.dasm (6.04 % of base)
          20 : 27007.dasm (7.49 % of base)
          20 : 2901.dasm (0.80 % of base)
          20 : 11422.dasm (1.49 % of base)
          19 : 2144.dasm (1.82 % of base)
          19 : 21205.dasm (0.38 % of base)
          18 : 25073.dasm (5.96 % of base)
          15 : 22000.dasm (1.11 % of base)

Top file improvements (bytes):
        -107 : 15973.dasm (-4.57 % of base)
         -71 : 27813.dasm (-2.66 % of base)
         -35 : 19569.dasm (-3.73 % of base)
         -31 : 11682.dasm (-38.75 % of base)
         -31 : 6947.dasm (-44.93 % of base)
         -31 : 6637.dasm (-44.93 % of base)
         -30 : 7766.dasm (-46.88 % of base)
         -22 : 20653.dasm (-10.58 % of base)
         -19 : 17977.dasm (-2.41 % of base)
         -13 : 21965.dasm (-7.03 % of base)
         -13 : 27349.dasm (-0.37 % of base)
         -12 : 22153.dasm (-0.45 % of base)
         -10 : 562.dasm (-1.58 % of base)
          -9 : 25279.dasm (-1.88 % of base)
          -9 : 21196.dasm (-0.48 % of base)
          -8 : 24977.dasm (-2.30 % of base)
          -8 : 876.dasm (-0.15 % of base)
          -8 : 404.dasm (-3.08 % of base)
          -8 : 22787.dasm (-0.41 % of base)
          -7 : 20423.dasm (-0.44 % of base)

57 total files with Code Size differences (26 improved, 31 regressed), 20 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)
         128 (8.57 % of base) : 25967.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          75 (7.49 % of base) : 28446.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization: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)
          49 (5.77 % of base) : 27255.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
          44 (3.20 % of base) : 25642.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (6.58 % of base) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          42 (3.70 % of base) : 14563.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          40 (1.35 % of base) : 23140.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:ComputeImplementationForInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
          30 (1.64 % of base) : 21635.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitMemberAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
          24 (1.49 % of base) : 23521.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):int:this (FullOpts)
          22 (6.04 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          20 (0.80 % of base) : 2901.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openPEFileReader[System.__Canon](System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,System.__Canon,ubyte):System.Tuple`6[int,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[System.Object]] (FullOpts)
          20 (1.49 % of base) : 11422.dasm - FSharp.Compiler.LexFilter:rulesForBothSoftWhiteAndHardWhite$cont@2481(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.LexFilter+TokenTup,ubyte,FSharp.Compiler.LexFilter+TokenTup,Microsoft.FSharp.Core.Unit) (FullOpts)
          20 (7.49 % of base) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode: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)
          19 (1.82 % of base) : 2144.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
          18 (5.96 % of base) : 25073.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte:this (FullOpts)
          15 (1.11 % of base) : 22000.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:LookupTopLevelMetadataTypeWithNoPiaLocalTypeUnification(byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol: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)
         -71 (-2.66 % of base) : 27813.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
         -35 (-3.73 % of base) : 19569.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
         -31 (-44.93 % of base) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -31 (-44.93 % of base) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -31 (-38.75 % of base) : 11682.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -30 (-46.88 % of base) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (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)
         -10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (FullOpts)
          -9 (-0.48 % of base) : 21196.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSpecialType(byte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          -9 (-1.88 % of base) : 25279.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
          -8 (-2.30 % of base) : 24977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol: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)

Top method regressions (percentages):
         128 (8.57 % of base) : 25967.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitIsPatternExpression(Microsoft.CodeAnalysis.CSharp.BoundIsPatternExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          20 (7.49 % of base) : 27007.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          75 (7.49 % of base) : 28446.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
         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)
          42 (6.58 % of base) : 26989.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerIndirectionOperator(Microsoft.CodeAnalysis.CSharp.BoundPointerIndirectionOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          22 (6.04 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
          18 (5.96 % of base) : 25073.dasm - System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.CSharp.NullableWalker+Snapshot]]:MoveNext():ubyte:this (FullOpts)
          49 (5.77 % of base) : 27255.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__visitMemberInitializer|169_0(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
           2 (4.44 % of base) : 17168.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this (FullOpts)
          42 (3.70 % of base) : 14563.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:.ctor(SixLabors.ImageSharp.Configuration,SixLabors.ImageSharp.Processing.Processors.Dithering.PaletteDitherProcessor,SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
           3 (3.49 % of base) : 17719.dasm - System.Net.Http.HttpConnection+HttpContentReadStream:Dispose(ubyte):this (FullOpts)
          44 (3.20 % of base) : 25642.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArrayAccess(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
           2 (3.17 % of base) : 12977.dasm - FSharp.Compiler.NameResolution:LookupTypeNameInEnvNoArity(FSharp.Compiler.NameResolution+FullyQualifiedFlag,System.String,FSharp.Compiler.NameResolution+NameResolutionEnv):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
           3 (3.03 % of base) : 24583.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithCheckedOrUncheckedRegion(ubyte):Microsoft.CodeAnalysis.CSharp.Binder: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)
           3 (2.88 % of base) : 33670.dasm - System.Management.Automation.CompiledScriptBlockData:Compile(ubyte):ubyte:this (FullOpts)
           2 (2.56 % of base) : 33380.dasm - System.Management.Automation.LocationGlobber:IsProviderDirectPath(System.String):ubyte (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)

Top method improvements (percentages):
         -30 (-46.88 % of base) : 7766.dasm - System.Int32:Equals(System.Object):ubyte:this (FullOpts)
         -31 (-44.93 % of base) : 6947.dasm - System.Boolean:Equals(System.Object):ubyte:this (FullOpts)
         -31 (-44.93 % of base) : 6637.dasm - System.Byte:Equals(System.Object):ubyte:this (FullOpts)
         -31 (-38.75 % of base) : 11682.dasm - System.Int64:Equals(System.Object):ubyte:this (FullOpts)
         -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)
         -71 (-2.66 % of base) : 27813.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:BestTypeForLambdaReturns(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte]],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (FullOpts)
          -2 (-2.50 % of base) : 24729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetSymbol[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon (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)
          -8 (-2.30 % of base) : 24977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
          -9 (-1.88 % of base) : 25279.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:LeaveParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location):this (FullOpts)
         -10 (-1.58 % of base) : 562.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (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)