Assembly Diffs

linux arm64

Diffs are based on 2,505,877 contexts (1,007,092 MinOpts, 1,498,785 FullOpts).

MISSED contexts: base: 1,433 (0.06%), diff: 1,441 (0.06%)

Overall (+904,416 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,545,232 +13,448
benchmarks.run_pgo.linux.arm64.checked.mch 79,735,896 +232,112
benchmarks.run_tiered.linux.arm64.checked.mch 24,597,876 +1,620
coreclr_tests.run.linux.arm64.checked.mch 508,521,576 +166,136
libraries.crossgen2.linux.arm64.checked.mch 55,834,212 +40,568
libraries.pmi.linux.arm64.checked.mch 76,274,408 +50,684
libraries_tests.run.linux.arm64.Release.mch 394,024,440 +327,664
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 164,978,292 +57,440
realworld.run.linux.arm64.checked.mch 15,900,008 +10,512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 +4,232

MinOpts (-22,888 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -5,292
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -3,656
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -2,712
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -10,636
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 13,497,464 -592

FullOpts (+927,304 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,240,304 +13,448
benchmarks.run_pgo.linux.arm64.checked.mch 53,801,112 +237,404
benchmarks.run_tiered.linux.arm64.checked.mch 4,859,440 +5,276
coreclr_tests.run.linux.arm64.checked.mch 160,373,424 +168,848
libraries.crossgen2.linux.arm64.checked.mch 55,832,576 +40,568
libraries.pmi.linux.arm64.checked.mch 76,154,424 +50,684
libraries_tests.run.linux.arm64.Release.mch 178,892,488 +338,300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,480,828 +58,032
realworld.run.linux.arm64.checked.mch 15,319,084 +10,512
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 +4,232

Example diffs

benchmarks.run.linux.arm64.checked.mch

-12 (-6.00%) : 7568.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:SwapIfGreater(System.Span1[System.Canon],System.Comparison`1[System.Canon],int,int) (FullOpts)

@@ -11,17 +11,16 @@ ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]> ; V02 arg1 [V02,T03] ( 4, 4 ) ref -> x22 class-hnd single-def <System.Comparison`1[System.__Canon]>
-; V03 arg2 [V03,T01] ( 5, 5 ) int -> x20 single-def -; V04 arg3 [V04,T02] ( 5, 5 ) int -> x21 single-def -; V05 loc0 [V05,T08] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T00] ( 7, 6 ) int -> x19 single-def +; V04 arg3 [V04,T01] ( 7, 6 ) int -> x20 single-def +; V05 loc0 [V05,T07] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp3 [V09,T00] ( 7, 5 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp3 [V09,T02] ( 7, 5 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T04] ( 3, 3 ) int -> x23 single-def "field V01._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 cse0 [V12,T06] ( 4, 3 ) long -> x20 "CSE - aggressive" -; V13 cse1 [V13,T07] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V12 cse0 [V12,T06] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 8 @@ -31,41 +30,39 @@ G_M47099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x28] str x23, [sp, #0x38] mov fp, sp
- mov x19, x1 - ; byrRegs +[x19]
+ mov x21, x1 + ; byrRegs +[x21]
mov w23, w2 mov x22, x3 ; gcrRegs +[x22]
- mov w20, w4 - mov w21, w5
+ mov w19, w4 + mov w20, w5
;; size=40 bbWeight=1 PerfScore 7.00
-G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w21
+G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w20
bne G_M47099_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x1 + ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ;; size=44 bbWeight=0.50 PerfScore 4.25 -G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz
+ ; gcrRegs -[x0] + ;; size=36 bbWeight=0.50 PerfScore 3.75 +G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w23 + bhs G_M47099_IG07 + ldr x1, [x21, w19, UXTW #3] + ; gcrRegs +[x1]
cmp w20, w23 bhs G_M47099_IG07
- ubfiz x20, x20, #3, #32 - ldr x1, [x19, x20] - ; gcrRegs +[x1] - cmp w21, w23 - bhs G_M47099_IG07 - ubfiz x21, x21, #3, #32 - ldr x2, [x19, x21]
+ ldr x2, [x21, w20, UXTW #3]
; gcrRegs +[x2] ldr x0, [x22, #0x08] ; gcrRegs +[x0] @@ -74,25 +71,26 @@ G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19 ; gcrRegs -[x0-x2 x22] cmp w0, #0 ble G_M47099_IG06
- ;; size=52 bbWeight=1 PerfScore 19.50 -G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x0, [x19, x20]
+ ;; size=44 bbWeight=1 PerfScore 17.50 +G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ldr x0, [x21, w19, UXTW #3]
; gcrRegs +[x0]
- add x14, x19, x20
+ ubfiz x14, x19, #3, #32 + add x14, x21, x14
; byrRegs +[x14]
- ldr x15, [x19, x21]
+ ldr x15, [x21, w20, UXTW #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- add x14, x19, x21
+ add x14, x21, x20, LSL #3
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19] - ;; size=28 bbWeight=0.50 PerfScore 4.75
+ ; byrRegs -[x14 x21] + ;; size=32 bbWeight=0.50 PerfScore 5.50
G_M47099_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -105,7 +103,7 @@ G_M47099_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 20, PerfScore 43.00, instruction count 50, allocated bytes for code 200 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
+; Total bytes of code 188, prolog size 20, PerfScore 41.25, instruction count 47, allocated bytes for code 188 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-5.56%) : 33284.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (FullOpts)

@@ -10,12 +10,13 @@ ; ; V00 this [V00,T04] ( 4, 4 ) ref -> x0 this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
-; V02 loc0 [V02,T01] ( 5, 17 ) int -> x3 -; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x4 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref +; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x3 class-hnd <System.Linq.SingleLinkedNode`1[int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V07 tmp3 [V07,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 5, 17 ) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -26,27 +27,25 @@ G_M40341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M40341_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x1]
- sxtw w3, w2 - mov x4, x0 - ; gcrRegs +[x4]
+ mov x3, x0 + ; gcrRegs +[x3]
cbz x0, G_M40341_IG04
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M40341_IG03: ; bbWeight=4, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
+ mov w0, w2
; gcrRegs -[x0]
- sub w3, w3, #1 - cmp w3, w2
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M40341_IG03: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref, isz + sub w0, w0, #1 + mov w0, w0 + cmp w0, w2
bhs G_M40341_IG05
- ubfiz x0, x3, #2, #32 - add x0, x1, x0 - ; byrRegs +[x0] - ldr w5, [x4, #0x10] - str w5, [x0] - ldr x4, [x4, #0x08] - cbnz x4, G_M40341_IG03 - ;; size=36 bbWeight=4 PerfScore 46.00
+ ldr w4, [x3, #0x10] + str w4, [x1, x0, LSL #2] + ldr x3, [x3, #0x08] + cbnz x3, G_M40341_IG03 + ;; size=32 bbWeight=4 PerfScore 42.00
G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x4] - ; byrRegs -[x0-x1]
+ ; gcrRegs -[x3] + ; byrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 @@ -56,7 +55,7 @@ G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 51.50, instruction count 18, allocated bytes for code 72 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 47.50, instruction count 17, allocated bytes for code 68 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
; ============================================================ Unwind Info: @@ -67,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-5.08%) : 13208.dasm - System.Numerics.Tests.Perf_VectorOf1[uint]:SquareRootBenchmark():System.Numerics.Vector1[uint]:this (FullOpts)

@@ -11,30 +11,28 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tests.Perf_VectorOf`1[uint]> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 2, 5 ) simd16 -> [fp+0x20] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Numerics.Vector`1[uint]>
-; V03 tmp2 [V03,T00] ( 9, 29 ) int -> x19 "Inline stloc first use temp"
+; V03 tmp2 [V03,T00] ( 10, 33 ) int -> x19 "Inline stloc first use temp"
; V04 tmp3 [V04 ] ( 2, 10 ) simd16 -> [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[uint]>
-; V05 tmp4 [V05,T03] ( 2, 8 ) int -> x21 "Inline stloc first use temp"
+; V05 tmp4 [V05,T02] ( 2, 8 ) int -> x20 "Inline stloc first use temp"
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V07 tmp6 [V07,T04] ( 2, 4 ) int -> x0
+; V07 tmp6 [V07,T03] ( 2, 4 ) int -> x0
;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V12 tmp11 [V12,T05] ( 2, 4 ) int -> x0
+; V12 tmp11 [V12,T04] ( 2, 4 ) int -> x0
;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V14 tmp13 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp14 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 cse0 [V16,T02] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V17 cse1 [V17,T01] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
+; V16 cse0 [V16,T01] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M12395_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x38] - str x21, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x30]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M12395_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -75,14 +73,13 @@ G_M12395_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M12395_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V04 tmp3] ; byrRegs +[x0]
- sbfiz x20, x19, #2, #32 - ldr w0, [x0, x20]
+ ldr w0, [x0, w19, SXTW #2]
; byrRegs -[x0] ucvtf d16, w0 fsqrt d16, d16
- fcvtzu w21, d16
+ fcvtzu w20, d16
tbnz w19, #31, G_M12395_IG08
- ;; size=28 bbWeight=4 PerfScore 130.00
+ ;; size=24 bbWeight=4 PerfScore 126.00
G_M12395_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp w19, #4 cset x0, lt @@ -106,7 +103,7 @@ G_M12395_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M12395_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #32 // [V02 tmp1] ; byrRegs +[x0]
- str w21, [x0, x20]
+ str w20, [x0, w19, SXTW #2]
add w19, w19, #1 cmp w19, #4 blt G_M12395_IG03 @@ -116,13 +113,12 @@ G_M12395_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr q0, [fp, #0x20] // [V02 tmp1] ;; size=4 bbWeight=1 PerfScore 2.00 G_M12395_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50
+ ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 236, prolog size 16, PerfScore 207.50, instruction count 59, allocated bytes for code 236 (MethodHash=e44acf94) for method System.Numerics.Tests.Perf_VectorOf`1[uint]:SquareRootBenchmark():System.Numerics.Vector`1[uint]:this (FullOpts)
+; Total bytes of code 224, prolog size 12, PerfScore 200.50, instruction count 56, allocated bytes for code 224 (MethodHash=e44acf94) for method System.Numerics.Tests.Perf_VectorOf`1[uint]:SquareRootBenchmark():System.Numerics.Vector`1[uint]:this (FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +129,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -141,9 +137,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 89 save_reg X#2 Z#9 (0x09); str x21, [sp, #72] - C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56] - 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end + E4 end
E4 end E4 end

+20 (+38.46%) : 16707.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)

@@ -11,13 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]> ; V02 loc0 [V02,T01] ( 4, 10 ) int -> x0 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x3
+;* V04 loc2 [V04,T06] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V08 tmp2 [V08,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP ; V09 tmp3 [V09,T03] ( 2, 5 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T02] ( 3, 6 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T02] ( 4, 10 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP +; V11 tmp5 [V11,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,24 +29,32 @@ G_M10672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M10672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] mov w0, wzr
- mov w3, wzr
cmp w2, #0 ble G_M10672_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M10672_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w4, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M10672_IG05 + ldr w4, [x1, x3, LSL #2]
add w0, w4, w0 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M10672_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M10672_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M10672_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 28.00, instruction count 13, allocated bytes for code 52 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 36.00, instruction count 18, allocated bytes for code 72 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +65,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 24991.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 28803.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.linux.arm64.checked.mch

-40 (-10.10%) : 39140.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-8.62%) : 41874.dasm - System.Collections.Generic.ArraySortHelper1[int]:Swap(System.Span1[int],int,int) (Instrumented Tier0)

@@ -39,8 +39,7 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V01 arg1] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V03 loc0] ldr w0, [fp, #0x1C] // [V01 arg1] @@ -51,20 +50,17 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V01 arg1] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V02 arg2] - ldr w2, [fp, #0x28] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M40265_IG04 - ldr x1, [fp, #0x20] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V02 arg2]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M40265_IG04 + ldr x2, [fp, #0x20] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V02 arg2] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V00 arg0+0x08] @@ -74,10 +70,9 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V03 loc0]
- str w2, [x0, x1] - ;; size=192 bbWeight=1 PerfScore 66.00
+ str w2, [x0, x1, LSL #2] + ;; size=172 bbWeight=1 PerfScore 61.50
G_M40265_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr @@ -88,7 +83,7 @@ G_M40265_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 73.50, instruction count 58, allocated bytes for code 232 (MethodHash=cb4762b6) for method System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
+; Total bytes of code 212, prolog size 8, PerfScore 69.00, instruction count 53, allocated bytes for code 212 (MethodHash=cb4762b6) for method System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -99,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-8.14%) : 13251.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier0)

@@ -42,8 +42,7 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x18] // [V06 tmp1] ldr w1, [fp, #0x18] // [V06 tmp1] @@ -55,8 +54,7 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w2, [fp, #0x20] // [V03 arg3] mov w2, w2
- lsl x2, x2, #2 - ldr w2, [x0, x2]
+ ldr w2, [x0, x2, LSL #2]
ldr x0, [fp, #0x28] // [V01 arg1] ; gcrRegs +[x0] ; byrRegs -[x0] @@ -77,8 +75,7 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x1C] // [V04 loc0] ldr w0, [fp, #0x24] // [V02 arg2] @@ -89,20 +86,17 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x20] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M64750_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x20] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M64750_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x20] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x20] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -112,10 +106,9 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x1C] // [V04 loc0]
- str w2, [x0, x1] - ;; size=300 bbWeight=1 PerfScore 109.50
+ str w2, [x0, x1, LSL #2] + ;; size=272 bbWeight=1 PerfScore 103.00
G_M64750_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x40 @@ -126,7 +119,7 @@ G_M64750_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 344, prolog size 8, PerfScore 118.00, instruction count 86, allocated bytes for code 344 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier0)
+; Total bytes of code 316, prolog size 8, PerfScore 111.50, instruction count 79, allocated bytes for code 316 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -137,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 344 (0x000158)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+30.00%) : 137834.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# 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 exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -34,20 +35,24 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 2.00 G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr w3, [x0, #0x08] + cmp w2, w3 + bhs G_M16110_IG08
add x3, x0, #16 ; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ ldr x3, [x3, x2, LSL #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr w3, [x3, #0x3C] ; gcrRegs -[x3] add w1, w3, w1 add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ldr w3, [x0, #0x08] cmp w3, w2 @@ -59,8 +64,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 104, prolog size 8, PerfScore 5.50, instruction count 26, allocated bytes for code 104 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info: @@ -71,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+30.00%) : 135023.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# 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 exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -34,20 +35,24 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 2.00 G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr w3, [x0, #0x08] + cmp w2, w3 + bhs G_M16110_IG08
add x3, x0, #16 ; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ ldr x3, [x3, x2, LSL #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr w3, [x3, #0x3C] ; gcrRegs -[x3] add w1, w3, w1 add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ldr w3, [x0, #0x08] cmp w3, w2 @@ -59,8 +64,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 104, prolog size 8, PerfScore 5.50, instruction count 26, allocated bytes for code 104 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info: @@ -71,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+33.33%) : 96249.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -11,14 +11,14 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T02] ( 4, 5.71) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 11.87) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.98) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 6.42) long -> xip0 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 4.72) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 12.86) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T01] ( 4, 5.71) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0 - ble G_M50542_IG05 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M50542_IG03: ; bbWeight=2.71, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08] + cmp w15, #0 + ble G_M50542_IG06 + ;; size=16 bbWeight=1 PerfScore 7.50 +G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ mov x12, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50 +G_M50542_IG04: ; bbWeight=2.71, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + lsl xip0, x12, #3
add xip0, xip0, #16
- ldr x0, [x14, xip0] - ; gcrRegs +[x0] - cbz x0, G_M50542_IG06
+ ldr xip0, [x14, xip0] + ; gcrRegs +[xip0] + cbz xip0, G_M50542_IG07
;; size=16 bbWeight=2.71 PerfScore 14.93
-G_M50542_IG04: ; bbWeight=2.72, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add w15, w15, #1 - cmp w12, w15 - bgt G_M50542_IG03 - ;; size=12 bbWeight=2.72 PerfScore 5.44 -G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M50542_IG05: ; bbWeight=2.72, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + add w12, w12, #1 + mov w12, w12 + cmp w15, w12 + bgt G_M50542_IG04 + ;; size=16 bbWeight=2.72 PerfScore 6.80 +G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15 + bhs G_M50542_IG09 + ubfiz x15, x12, #3, #32 + add x15, x15, #16 + add x14, x14, x15
; gcrRegs -[x14] ; byrRegs +[x14] mov x15, x1 @@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.99 -G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.97 +G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.99 PerfScore 1.99
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 33.86, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 38.20, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm64.checked.mch

-40 (-10.10%) : 25297.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-7.69%) : 8215.dasm - System.Collections.Generic.GenericArraySortHelper2[System.__Canon,System.__Canon]:Swap(System.Span1[System.Canon],System.Span`1[System.Canon],int,int) (Tier0)

@@ -47,8 +47,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x18] // [V05 loc0] @@ -61,8 +60,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -73,8 +71,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -87,8 +84,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x18] // [V05 loc0] ; gcrRegs +[x15] @@ -103,8 +99,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x10] // [V06 loc1] @@ -117,8 +112,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -129,8 +123,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -143,15 +136,14 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x10] // [V06 loc1] ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x0 x14]
- ;; size=356 bbWeight=1 PerfScore 122.50
+ ;; size=324 bbWeight=1 PerfScore 116.50
G_M6091_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -161,7 +153,7 @@ G_M6091_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 16, PerfScore 135.00, instruction count 104, allocated bytes for code 416 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
+; Total bytes of code 384, prolog size 16, PerfScore 129.00, instruction count 96, allocated bytes for code 384 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -172,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-7.38%) : 25296.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:SwapIfGreaterWithValues(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -85,20 +85,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x48] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x40] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x48] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x40] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x48] // [V00 arg0+0x08] @@ -108,9 +105,8 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x1C] // [V05 loc1]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x2C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -120,8 +116,7 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x18] // [V06 loc2] ldr w0, [fp, #0x2C] // [V02 arg2] @@ -132,20 +127,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x38] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x30] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x30] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -155,10 +147,9 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x18] // [V06 loc2]
- str w2, [x0, x1] - ;; size=436 bbWeight=1 PerfScore 151.00
+ str w2, [x0, x1, LSL #2] + ;; size=400 bbWeight=1 PerfScore 143.00
G_M19468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x50 @@ -169,7 +160,7 @@ G_M19468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 488, prolog size 12, PerfScore 161.50, instruction count 122, allocated bytes for code 488 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 452, prolog size 12, PerfScore 153.50, instruction count 113, allocated bytes for code 452 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -180,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+21.74%) : 42776.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -10,13 +10,14 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> x1 class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> x15
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -24,30 +25,33 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0
+ ldr w15, [x14, #0x08] + cmp w15, #0
ble G_M50542_IG04
+ mov x12, xzr
;; size=20 bbWeight=1 PerfScore 8.00 G_M50542_IG03: ; bbWeight=4, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ lsl xip0, x12, #3
add xip0, xip0, #16 ldr xip0, [x14, xip0] ; gcrRegs +[xip0] cbz xip0, G_M50542_IG05
- add w15, w15, #1 - cmp w12, w15
+ add w12, w12, #1 + mov w12, w12 + cmp w15, w12
bgt G_M50542_IG03
- ;; size=28 bbWeight=4 PerfScore 30.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x14 xip0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- ubfiz x15, x15, #3, #32
+ cmp w12, w15 + bhs G_M50542_IG07 + ubfiz x15, x12, #3, #32
add x15, x15, #16 add x14, x14, x15 ; gcrRegs -[x14] @@ -57,13 +61,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 43.25, instruction count 23, allocated bytes for code 92 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.00, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -74,7 +83,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+27.78%) : 44295.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,20 +26,23 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M53167_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=28 bbWeight=1 PerfScore 4.00 G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w5, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M53167_IG06 + ldrb w5, [x0, x3]
eor w2, w5, w2 mul w2, w2, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M53167_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -47,8 +51,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 38.00, instruction count 18, allocated bytes for code 72 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 46.00, instruction count 23, allocated bytes for code 92 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 47624.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,27 +24,35 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 44.50, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm64.checked.mch

-8 (-11.11%) : 237457.dasm - Testunsafe6.TestApp:test_216(ulong,long[],long):long (FullOpts)

@@ -27,16 +27,14 @@ G_M16071_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #100 cmp x0, #100 cinc w0, w1, ne sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M16071_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -46,7 +44,7 @@ G_M16071_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-11.11%) : 20158.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)

@@ -21,15 +21,14 @@ G_M2112_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- lsl x0, x0, #1 - ldrh w0, [x1, x0] - ;; size=20 bbWeight=1 PerfScore 5.50
+ ldrh w0, [x1, x0, LSL #2] + ;; size=16 bbWeight=1 PerfScore 4.50
G_M2112_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
; ============================================================ Unwind Info: @@ -40,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-11.11%) : 237378.dasm - Testunsafe1.TestApp:test_372(ulong,long[],long):long (FullOpts)

@@ -29,16 +29,14 @@ G_M4387_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #99 cmp x0, #100 cinc w0, w1, eq sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M4387_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -48,7 +46,7 @@ G_M4387_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 202883.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 202864.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 203734.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M31126_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.linux.arm64.checked.mch

-32 (-13.33%) : 174524.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -9,30 +9,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 3, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -61,18 +61,11 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref adrp x22, [HIGH RELOC #0xD1FFAB1E] add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13 - b G_M10117_IG10 - ;; size=16 bbWeight=1 PerfScore 2.50 -G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG08
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -88,34 +81,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=44 bbWeight=2 PerfScore 22.00 +G_M10117_IG07: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=68 bbWeight=2 PerfScore 28.00 -G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG12 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG10 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG07
+ ble G_M10117_IG06
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG06 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG07 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG09: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address @@ -126,7 +114,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 208, prolog size 24, PerfScore 73.00, instruction count 52, allocated bytes for code 208 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -137,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -145,10 +133,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-16 (-8.33%) : 186954.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-16 (-8.33%) : 4420.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

+32 (+53.33%) : 162432.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -9,11 +9,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -25,17 +26,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -44,8 +48,16 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 39.00, instruction count 23, allocated bytes for code 92 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+53.33%) : 183084.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,27 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.50, instruction count 23, allocated bytes for code 92 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+57.14%) : 211701.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -11,13 +11,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.linux.arm64.checked.mch

-36 (-16.07%) : 158098.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-14.29%) : 165478.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -8,30 +8,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 2, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -50,18 +50,11 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32
- mov w23, #13 - b G_M10117_IG07 - ;; size=56 bbWeight=1 PerfScore 9.00 -G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG05
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=56 bbWeight=1 PerfScore 9.00 +G_M10117_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -78,34 +71,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=48 bbWeight=2 PerfScore 23.00 +G_M10117_IG04: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=72 bbWeight=2 PerfScore 29.00 -G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG09 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG07 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG04
+ ble G_M10117_IG03
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG03 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG04 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] bl CORINFO_HELP_RNGCHKFAIL @@ -113,7 +101,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 192, prolog size 24, PerfScore 69.50, instruction count 48, allocated bytes for code 192 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -124,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -132,10 +120,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-8 (-9.09%) : 246195.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)

@@ -48,19 +48,17 @@ G_M26712_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cbz w0, G_M26712_IG05 ;; size=32 bbWeight=1 PerfScore 7.50 G_M26712_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M26712_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -70,7 +68,7 @@ G_M26712_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 15.50, instruction count 22, allocated bytes for code 88 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 14.50, instruction count 20, allocated bytes for code 80 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 13332.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,27 +24,35 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 44.50, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 288216.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -8,11 +8,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,17 +25,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -43,8 +47,13 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 39.00, instruction count 20, allocated bytes for code 80 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+35.71%) : 265016.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -10,13 +10,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm64.Release.mch

-8 (-15.38%) : 417833.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)

@@ -32,21 +32,19 @@ G_M51158_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, b cbz x2, G_M51158_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M51158_IG03: ; bbWeight=70.18, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- lsl x4, x3, #1 - ldrh w4, [x0, x4] - lsl x5, x3, #3 - str x4, [x1, x5]
+ ldrh w4, [x0, x3, LSL #2] + str x4, [x1, x3, LSL #3]
add x3, x3, #1 cmp x3, x2 blo G_M51158_IG03
- ;; size=28 bbWeight=70.18 PerfScore 561.40
+ ;; size=20 bbWeight=70.18 PerfScore 421.05
G_M51158_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 566.40, instruction count 13, allocated bytes for code 52 (MethodHash=9c003829) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
+; Total bytes of code 44, prolog size 8, PerfScore 426.05, instruction count 11, allocated bytes for code 44 (MethodHash=9c003829) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-15.38%) : 417877.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)

@@ -32,21 +32,19 @@ G_M51158_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, b cbz x2, G_M51158_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M51158_IG03: ; bbWeight=69.13, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- lsl x4, x3, #1 - ldrh w4, [x0, x4] - lsl x5, x3, #3 - str x4, [x1, x5]
+ ldrh w4, [x0, x3, LSL #2] + str x4, [x1, x3, LSL #3]
add x3, x3, #1 cmp x3, x2 blo G_M51158_IG03
- ;; size=28 bbWeight=69.13 PerfScore 553.03
+ ;; size=20 bbWeight=69.13 PerfScore 414.77
G_M51158_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 558.03, instruction count 13, allocated bytes for code 52 (MethodHash=9c003829) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
+; Total bytes of code 44, prolog size 8, PerfScore 419.77, instruction count 11, allocated bytes for code 44 (MethodHash=9c003829) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-15.38%) : 417885.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)

@@ -32,21 +32,19 @@ G_M30025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, b cbz x2, G_M30025_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M30025_IG03: ; bbWeight=42.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- lsl x4, x3, #1 - ldrh w4, [x0, x4] - lsl x5, x3, #3 - str x4, [x1, x5]
+ ldrh w4, [x0, x3, LSL #2] + str x4, [x1, x3, LSL #3]
add x3, x3, #1 cmp x3, x2 blo G_M30025_IG03
- ;; size=28 bbWeight=42.50 PerfScore 340.00
+ ;; size=20 bbWeight=42.50 PerfScore 255.00
G_M30025_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 345.00, instruction count 13, allocated bytes for code 52 (MethodHash=5b428ab6) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
+; Total bytes of code 44, prolog size 8, PerfScore 260.00, instruction count 11, allocated bytes for code 44 (MethodHash=5b428ab6) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 426474.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[System.UInt128]:RemoveSignedMinValue(System.Span1[System.UInt128]):this (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.UInt128]>
-; V02 loc0 [V02,T00] ( 5,516.36) int -> x0
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128> @@ -24,7 +24,7 @@ ;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp11 [V14,T03] ( 2,129.84) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T02] ( 3,130.84) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T02] ( 4,259.68) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref "field V04._lower (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "field V04._upper (fldOffset=0x8)" P-INDEP ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP @@ -41,6 +41,7 @@ ;* V29 tmp26 [V29 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP ; V30 tmp27 [V30,T01] ( 2,515.36) byref -> x3 "BlockOp address local" ;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref "BlockOp address local"
+; V32 tmp29 [V32,T00] ( 6,644.70) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -50,26 +51,36 @@ G_M1732_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1732_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w0, wzr
cmp w2, #0
- ble G_M1732_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M1732_IG03: ; bbWeight=128.84, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz - ubfiz x3, x0, #4, #32
+ ble G_M1732_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M1732_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref + mov x0, xzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M1732_IG04: ; bbWeight=128.84, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz + cmp w0, w2 + bhs G_M1732_IG06 + lsl x3, x0, #4
add x3, x1, x3 ; byrRegs +[x3] ldr xzr, [x3] add w0, w0, #1
+ mov w0, w0
cmp w0, w2
- blt G_M1732_IG03 - ;; size=24 bbWeight=128.84 PerfScore 837.46 -G_M1732_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M1732_IG04 + ;; size=36 bbWeight=128.84 PerfScore 1095.14 +G_M1732_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1732_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 842.96, instruction count 13, allocated bytes for code 52 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 1100.39, instruction count 18, allocated bytes for code 72 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 429486.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[System.UInt128]:RemoveSignedMinValue(System.Span1[System.UInt128]):this (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.UInt128]>
-; V02 loc0 [V02,T00] ( 5,508.27) int -> x0
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128> @@ -24,7 +24,7 @@ ;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp11 [V14,T03] ( 2,127.82) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T02] ( 3,128.82) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T02] ( 4,255.63) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref "field V04._lower (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "field V04._upper (fldOffset=0x8)" P-INDEP ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP @@ -41,6 +41,7 @@ ;* V29 tmp26 [V29 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP ; V30 tmp27 [V30,T01] ( 2,507.27) byref -> x3 "BlockOp address local" ;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref "BlockOp address local"
+; V32 tmp29 [V32,T00] ( 6,634.59) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -50,26 +51,36 @@ G_M1732_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1732_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w0, wzr
cmp w2, #0
- ble G_M1732_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M1732_IG03: ; bbWeight=126.82, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz - ubfiz x3, x0, #4, #32
+ ble G_M1732_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M1732_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref + mov x0, xzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M1732_IG04: ; bbWeight=126.82, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz + cmp w0, w2 + bhs G_M1732_IG06 + lsl x3, x0, #4
add x3, x1, x3 ; byrRegs +[x3] ldr xzr, [x3] add w0, w0, #1
+ mov w0, w0
cmp w0, w2
- blt G_M1732_IG03 - ;; size=24 bbWeight=126.82 PerfScore 824.31 -G_M1732_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M1732_IG04 + ;; size=36 bbWeight=126.82 PerfScore 1077.95 +G_M1732_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x3] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1732_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 829.81, instruction count 13, allocated bytes for code 52 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 1083.20, instruction count 18, allocated bytes for code 72 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+41.67%) : 358408.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)

@@ -9,10 +9,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5,542.58) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2,136.40) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3,137.40) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4,272.79) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 6,677.97) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -22,24 +23,34 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0
- ble G_M58764_IG04 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M58764_IG03: ; bbWeight=135.40, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - mov w3, #204 - strb w3, [x0, w2, UXTW #2] - add w2, w2, #1
+ ble G_M58764_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M58764_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + mov x2, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50 +G_M58764_IG04: ; bbWeight=135.40, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w1
- blt G_M58764_IG03 - ;; size=20 bbWeight=135.40 PerfScore 473.89 -G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bhs G_M58764_IG06 + mov w3, #204 + strb w3, [x0, x2] + add w2, w2, #1 + mov w2, w2 + cmp w2, w1 + blt G_M58764_IG04 + ;; size=32 bbWeight=135.40 PerfScore 744.68 +G_M58764_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 479.39, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 68, prolog size 8, PerfScore 750.17, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
; ============================================================ Unwind Info: @@ -50,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-36 (-16.07%) : 176255.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-11.43%) : 130665.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)

@@ -9,27 +9,25 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]>
-; V01 arg1 [V01,T00] ( 4, 4 ) int -> x1 single-def
+; V01 arg1 [V01,T00] ( 5, 4.50) int -> x1 single-def
; V02 arg2 [V02,T03] ( 3, 2.50) byref -> x19 single-def ; V03 loc0 [V03,T04] ( 4, 3 ) ref -> x0 class-hnd single-def <System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V07 cse0 [V07,T05] ( 2, 2 ) ref -> x0 "CSE - aggressive"
-; V08 cse1 [V08,T07] ( 3, 2.50) long -> x21 "CSE - aggressive" -; V09 cse2 [V09,T08] ( 2, 2 ) int -> x2 "CSE - aggressive" -; V10 cse3 [V10,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
+; V08 cse1 [V08,T07] ( 2, 2 ) int -> x2 "CSE - aggressive" +; V09 cse2 [V09,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M61344_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x19, x2 ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x28] @@ -38,13 +36,12 @@ G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, bhs G_M61344_IG08 add x20, x0, #16 ; byrRegs +[x20]
- ubfiz x21, x1, #3, #32 - ldr x0, [x20, x21]
+ ldr x0, [x20, w1, UXTW #3]
cbz x0, G_M61344_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=28 bbWeight=1 PerfScore 12.00
G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x0, #0x18] - cmp w1, #0
+ ldr w2, [x0, #0x18] + cmp w2, #0
ble G_M61344_IG05 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]:Dequeue():System.Linq.Parallel.Pair`2[int,int]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,31 +54,29 @@ G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x1 mov w0, #1 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M61344_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref ; byrRegs -[x19] +[x20]
- str xzr, [x20, x21]
+ str xzr, [x20, w1, UXTW #3]
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M61344_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M61344_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 16, PerfScore 28.50, instruction count 35, allocated bytes for code 140 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 124, prolog size 12, PerfScore 24.50, instruction count 31, allocated bytes for code 124 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +87,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-8 (-9.09%) : 85524.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)

@@ -48,19 +48,17 @@ G_M26712_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cbz w0, G_M26712_IG05 ;; size=32 bbWeight=1 PerfScore 7.50 G_M26712_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M26712_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -70,7 +68,7 @@ G_M26712_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 15.50, instruction count 22, allocated bytes for code 88 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 14.50, instruction count 20, allocated bytes for code 80 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+41.67%) : 157825.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[System.UInt128]:RemoveSignedMinValue(System.Span1[System.UInt128]):this (FullOpts)

@@ -10,7 +10,7 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.UInt128]>
-; V02 loc0 [V02,T00] ( 5, 15 ) int -> x0
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128> @@ -23,7 +23,7 @@ ;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp11 [V14,T03] ( 2, 3 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T01] ( 2, 9 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T01] ( 3, 11 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref "field V04._lower (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "field V04._upper (fldOffset=0x8)" P-INDEP ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP @@ -40,6 +40,7 @@ ;* V29 tmp26 [V29 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP ; V30 tmp27 [V30,T02] ( 2, 8 ) byref -> x3 "BlockOp address local" ;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref "BlockOp address local"
+; V32 tmp29 [V32,T00] ( 6, 17 ) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -49,16 +50,19 @@ G_M1732_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1732_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref ; byrRegs +[x1]
- mov w0, wzr
+ mov x0, xzr
b G_M1732_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M1732_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref - ubfiz x3, x0, #4, #32
+G_M1732_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz + cmp w0, w2 + bhs G_M1732_IG06 + lsl x3, x0, #4
add x3, x1, x3 ; byrRegs +[x3] ldr xzr, [x3] add w0, w0, #1
- ;; size=16 bbWeight=2 PerfScore 10.00
+ mov w0, w0 + ;; size=28 bbWeight=2 PerfScore 14.00
G_M1732_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs -[x3] cmp w0, w2 @@ -69,8 +73,13 @@ G_M1732_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1732_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 27.00, instruction count 12, allocated bytes for code 48 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 31.00, instruction count 17, allocated bytes for code 68 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+41.67%) : 143550.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1 + bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -49,7 +58,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 225040.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M39013_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.linux.arm64.checked.mch

-40 (-12.35%) : 5094.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)

@@ -12,47 +12,49 @@ ; V02 arg2 [V02,T04] ( 4, 3.50) int -> x4 single-def ; V03 loc0 [V03,T06] ( 5, 4.50) int -> x20 single-def ; V04 loc1 [V04,T05] ( 6, 5 ) int -> x21 single-def
-; V05 loc2 [V05,T19] ( 2, 2 ) int -> x3 single-def -; V06 loc3 [V06,T28] ( 2, 1.50) int -> x0 single-def -; V07 loc4 [V07,T25] ( 3, 1.50) int -> x2 single-def -; V08 loc5 [V08,T26] ( 3, 1.50) int -> x1 single-def
+; V05 loc2 [V05,T16] ( 2, 2 ) int -> x3 single-def +; V06 loc3 [V06,T29] ( 2, 1.50) int -> x0 single-def +; V07 loc4 [V07,T24] ( 3, 1.50) int -> x2 single-def +; V08 loc5 [V08,T25] ( 3, 1.50) int -> x1 single-def
;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc7 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc8 [V11,T27] ( 3, 1.50) int -> x0 single-def
+; V11 loc8 [V11,T26] ( 3, 1.50) int -> x0 single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ; V14 tmp2 [V14,T03] ( 3, 6 ) int -> x0 "fgMakeTemp is creating a new local variable" ; V15 tmp3 [V15,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V16 tmp4 [V16,T22] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V16 tmp4 [V16,T19] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V17 tmp5 [V17,T08] ( 3, 3 ) ref -> x2 single-def "arr expr"
-; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x0 single-def "arr expr" -; V19 tmp7 [V19,T10] ( 3, 3 ) ref -> x3 single-def "arr expr" -; V20 tmp8 [V20,T15] ( 3, 3 ) int -> x2 "index expr" -; V21 tmp9 [V21,T20] ( 2, 2 ) int -> x0 "argument with side effect" -; V22 tmp10 [V22,T21] ( 2, 2 ) int -> x3 "argument with side effect" -; V23 tmp11 [V23,T11] ( 3, 3 ) ref -> x2 single-def "arr expr" -; V24 tmp12 [V24,T12] ( 3, 3 ) ref -> x1 single-def "arr expr" -; V25 cse0 [V25,T17] ( 3, 2.50) long -> x23 "CSE - moderate" -; V26 cse1 [V26,T18] ( 4, 2 ) int -> x2 "CSE - moderate" -; V27 cse2 [V27,T13] ( 2, 2 ) ref -> x0 "CSE - aggressive" -; V28 cse3 [V28,T23] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V29 cse4 [V29,T24] ( 3, 1.50) ref -> x1 "CSE - moderate" -; V30 cse5 [V30,T07] ( 4, 3.50) int -> x22 "CSE - aggressive" -; V31 cse6 [V31,T16] ( 3, 3 ) int -> x2 "CSE - moderate" -; V32 cse7 [V32,T14] ( 3, 3 ) byref -> x0 "CSE - moderate"
+; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x3 single-def "arr expr" +;* V19 tmp7 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V20 tmp8 [V20,T13] ( 3, 3 ) int -> x2 "index expr" +; V21 tmp9 [V21,T17] ( 2, 2 ) int -> x5 "argument with side effect" +; V22 tmp10 [V22,T18] ( 2, 2 ) int -> x3 "argument with side effect" +; V23 tmp11 [V23,T10] ( 3, 3 ) ref -> x1 single-def "arr expr" +;* V24 tmp12 [V24,T31] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V25 cse0 [V25,T15] ( 4, 2 ) int -> x2 "CSE - moderate" +; V26 cse1 [V26,T11] ( 2, 2 ) ref -> x0 "CSE - aggressive" +; V27 cse2 [V27,T20] ( 2, 1 ) ref -> x3 "CSE - moderate" +; V28 cse3 [V28,T21] ( 2, 1 ) ref -> x1 "CSE - moderate" +; V29 cse4 [V29,T07] ( 5, 4 ) int -> x22 "CSE - aggressive" +; V30 cse5 [V30,T14] ( 3, 3 ) int -> x2 "CSE - moderate" +; V31 cse6 [V31,T12] ( 3, 3 ) byref -> x0 "CSE - moderate" +; V32 cse7 [V32,T27] ( 3, 1.50) int -> x0 "CSE - moderate" +; V33 cse8 [V33,T22] ( 3, 1.50) byref -> x3 "CSE - moderate" +; V34 cse9 [V34,T28] ( 3, 1.50) int -> x2 "CSE - moderate" +; V35 cse10 [V35,T23] ( 3, 1.50) byref -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w4, w2
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz orr w20, w4, w1, LSL #16 ldr w0, [x19, #0x20] @@ -73,20 +75,18 @@ G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add w22, w21, #1 cmp w22, w2 bhs G_M27628_IG06
- ubfiz x23, x22, #2, #32 - ldr w0, [x0, x23]
+ ldr w0, [x0, w22, UXTW #2]
; byrRegs -[x0] cmp w20, w3 bne G_M27628_IG04
- ;; size=80 bbWeight=1 PerfScore 38.00
+ ;; size=76 bbWeight=1 PerfScore 37.00
G_M27628_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x2, [x19, #0x08] @@ -102,28 +102,21 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w1, w2, #1 ldr x3, [x19, #0x10] ; gcrRegs +[x3]
- mov x0, x3 - ; gcrRegs +[x0]
lsl w2, w2, #1
- ldr w5, [x0, #0x08] - cmp w2, w5 - bhs G_M27628_IG06 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w2, UXTW #2] - ; byrRegs -[x0] - add w0, w0, w1 - add w2, w2, #1 - ldr w5, [x3, #0x08] - cmp w2, w5
+ ldr w0, [x3, #0x08] + cmp w2, w0
bhs G_M27628_IG06 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
+ ldrh w5, [x3, w2, UXTW #2] + add w5, w5, w1 + add w2, w2, #1 + cmp w2, w0 + bhs G_M27628_IG06
ldrh w3, [x3, w2, UXTW #2] ; byrRegs -[x3]
- mov w2, w0
+ mov w2, w5
mov x0, x19 ; gcrRegs +[x0] movz x5, #0xD1FFAB1E // code for Internal.Utilities.Text.Parsing.Implementation+AssocTable:ReadAssoc(int,int,int,int):int:this @@ -134,31 +127,23 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ldr x1, [x19, #0x18] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - ldr w3, [x2, #0x08] - cmp w21, w3 - bhs G_M27628_IG06 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - str w20, [x2, w21, UXTW #2]
ldr w2, [x1, #0x08]
- ; byrRegs -[x2] - cmp w22, w2
+ cmp w21, w2
bhs G_M27628_IG06 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- str w0, [x1, x23] - ;; size=164 bbWeight=0.50 PerfScore 27.50
+ str w20, [x1, w21, UXTW #2] + cmp w22, w2 + bhs G_M27628_IG06 + str w0, [x1, w22, UXTW #2] + ;; size=140 bbWeight=0.50 PerfScore 23.50
G_M27628_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x19] ; byrRegs -[x1] @@ -169,7 +154,7 @@ G_M27628_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 20, PerfScore 77.00, instruction count 81, allocated bytes for code 324 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
+; Total bytes of code 284, prolog size 16, PerfScore 69.00, instruction count 71, allocated bytes for code 284 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -180,7 +165,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -191,9 +176,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-20 (-9.80%) : 14239.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)

@@ -9,7 +9,7 @@ ; ; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper> ; V01 arg1 [V01,T03] ( 5, 3.50) ref -> x1 class-hnd single-def <Microsoft.ML.DataViewRow>
-; V02 arg2 [V02,T00] ( 8, 6 ) int -> x2 single-def
+; V02 arg2 [V02,T00] ( 9, 6.50) int -> x2 single-def
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Func`2[int,ubyte]> ; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -17,15 +17,13 @@ ; V07 tmp2 [V07,T05] ( 3, 4.50) ref -> x3 class-hnd "spilling QMark2" <<unknown class>> ; V08 tmp3 [V08,T02] ( 3, 6 ) ref -> x3 single-def "arr expr" ; V09 tmp4 [V09,T07] ( 3, 3 ) ref -> x3 single-def "arr expr"
-; V10 cse0 [V10,T08] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz ; gcrRegs +[x0-x1] ; byrRegs +[x4] @@ -39,13 +37,12 @@ G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, b add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ubfiz x19, x2, #3, #32 - ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr x3, [x3, #0x18] cbz x3, G_M420_IG04
- ;; size=40 bbWeight=1 PerfScore 17.00
+ ;; size=36 bbWeight=1 PerfScore 16.00
G_M420_IG03: ; bbWeight=0.25, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0000 {}, byref, isz ldr x3, [x3] ; gcrRegs -[x3] @@ -62,11 +59,10 @@ G_M420_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz ldr x3, [x0, #0x38] ; gcrRegs +[x3] @@ -77,7 +73,7 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldrb w3, [x3, #0x18] @@ -89,11 +85,10 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=52 bbWeight=0.50 PerfScore 11.25 G_M420_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 @@ -101,11 +96,10 @@ G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] bl CORINFO_HELP_RNGCHKFAIL @@ -113,18 +107,18 @@ G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 12, PerfScore 42.75, instruction count 51, allocated bytes for code 204 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 37.75, instruction count 46, allocated bytes for code 184 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -138,10 +132,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-9.43%) : 6431.dasm - System.Collections.Generic.GenericArraySortHelper2[ushort,int]:InsertionSort(System.Span1[ushort],System.Span`1[int]) (FullOpts)

@@ -12,8 +12,8 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V02 loc0 [V02,T09] ( 5, 17 ) int -> x4 ; V03 loc1 [V03,T08] ( 3, 24 ) ushort -> x8 ld-addr-op
-; V04 loc2 [V04,T12] ( 2, 8 ) int -> x7 -; V05 loc3 [V05,T00] ( 10,112 ) int -> x4
+; V04 loc2 [V04,T13] ( 2, 8 ) int -> x7 +; V05 loc3 [V05,T10] ( 4, 16 ) int -> x4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -21,12 +21,13 @@ ; V10 tmp4 [V10,T05] ( 5, 30 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T06] ( 5, 25 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V12 tmp6 [V12,T07] ( 5, 25 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V13 cse0 [V13,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" -; V14 cse1 [V14,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" -; V15 cse2 [V15,T11] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V16 cse3 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" -; V17 cse4 [V17,T10] ( 4, 16 ) int -> x6 "CSE - aggressive" -; V18 cse5 [V18,T13] ( 3, 6 ) int -> x5 "CSE - aggressive"
+; V13 tmp7 [V13,T00] ( 10,112 ) long -> x4 "Widened primary induction variable" +; V14 cse0 [V14,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" +; V15 cse1 [V15,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" +; V16 cse2 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" +; V17 cse3 [V17,T12] ( 3, 12 ) long -> x7 "CSE - aggressive" +; V18 cse4 [V18,T11] ( 4, 16 ) int -> x6 "CSE - aggressive" +; V19 cse5 [V19,T14] ( 3, 6 ) int -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,40 +45,35 @@ G_M33083_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b G_M33083_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w6, w4, #1 mov w7, w6
- lsl x8, x7, #1 - ldrh w8, [x0, x8]
+ ldrh w8, [x0, x7, LSL #2]
cmp w6, w3 bhs G_M33083_IG09
- lsl x7, x7, #2 - ldr w7, [x2, x7]
+ ldr w7, [x2, x7, LSL #2] + mov w4, w4
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M33083_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w10, w4, #1 cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x13, x11, #1 - strh w9, [x0, x13]
+ strh w9, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x10, x11, #2 - add x11, x2, x10 - ; byrRegs +[x11]
cmp w4, w3 bhs G_M33083_IG09
- ldr w9, [x2, w4, UXTW #2] - str w9, [x11]
+ ldr w10, [x2, x4, LSL #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ mov w4, w4 + ;; size=52 bbWeight=8 PerfScore 92.00
G_M33083_IG05: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ; byrRegs -[x11]
tbnz w4, #31, G_M33083_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 G_M33083_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w4, w1 bhs G_M33083_IG09
- ldrh w9, [x0, w4, UXTW #2]
+ ldrh w9, [x0, x4, LSL #2]
cmp w9, w8 bgt G_M33083_IG04 ;; size=20 bbWeight=16 PerfScore 96.00 @@ -86,16 +82,14 @@ G_M33083_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x4, x11, #1 - strh w8, [x0, x4]
+ strh w8, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x4, x11, #2 - str w7, [x2, x4]
+ str w7, [x2, x11, LSL #2]
sxtw w4, w6 cmp w4, w5 blt G_M33083_IG03
- ;; size=52 bbWeight=4 PerfScore 40.00
+ ;; size=44 bbWeight=4 PerfScore 32.00
G_M33083_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 @@ -107,7 +101,7 @@ G_M33083_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 8, PerfScore 328.00, instruction count 53, allocated bytes for code 212 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
+; Total bytes of code 192, prolog size 8, PerfScore 298.00, instruction count 48, allocated bytes for code 192 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+29.41%) : 16247.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,33 +9,37 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M41908_IG08 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #127 bgt G_M41908_IG06 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, #1 @@ -51,8 +55,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 40.00, instruction count 22, allocated bytes for code 88 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -63,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+31.25%) : 13672.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2 -; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16 +;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref +; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,18 +25,21 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v16.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8690_IG06 + ldr s17, [x0, x2, LSL #2]
fsub s17, s17, s17 fadd s16, s17, s16 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=36 bbWeight=4 PerfScore 52.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] fcmp s16, #0.0 @@ -45,8 +49,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 60.50, instruction count 21, allocated bytes for code 84 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 1306.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

smoke_tests.nativeaot.linux.arm64.checked.mch

-44 (-9.82%) : 6880.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -7,40 +7,39 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T13] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase[]> -; V01 arg1 [V01,T14] ( 4, 5 ) ref -> x20 class-hnd single-def <System.Type[]> -; V02 loc0 [V02,T17] ( 6, 6.50) ref -> x22 class-hnd exact single-def <System.Reflection.MethodBase[]> -; V03 loc1 [V03,T10] ( 8, 11 ) int -> x23 -; V04 loc2 [V04,T08] ( 5, 17 ) int -> x24
+; V00 arg0 [V00,T11] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase[]> +; V01 arg1 [V01,T12] ( 4, 5 ) ref -> x20 class-hnd single-def <System.Type[]> +; V02 loc0 [V02,T15] ( 6, 6.50) ref -> x22 class-hnd exact single-def <System.Reflection.MethodBase[]> +; V03 loc1 [V03,T09] ( 8, 11 ) int -> x23 +;* V04 loc2 [V04,T16] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V06 loc4 [V06,T02] ( 7, 84 ) int -> [fp+0x2C]
+; V06 loc4 [V06,T00] ( 8,100 ) int -> x28
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V10 tmp2 [V10,T12] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> -; V11 tmp3 [V11,T07] ( 2, 20 ) byref -> x27 "field V05._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T05] ( 3, 24 ) int -> x28 "field V05._length (fldOffset=0x8)" P-INDEP
+; V10 tmp2 [V10,T10] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> +; V11 tmp3 [V11,T06] ( 2, 20 ) byref -> x26 "field V05._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T04] ( 3, 24 ) int -> x27 "field V05._length (fldOffset=0x8)" P-INDEP
;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-DEP ;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-DEP
-; V15 tmp7 [V15,T04] ( 3, 24 ) ref -> x0 "argument with side effect" -; V16 tmp8 [V16,T00] ( 3, 96 ) ref -> x0 "argument with side effect" -; V17 tmp9 [V17,T01] ( 3, 96 ) ref -> x0 "argument with side effect" -; V18 cse0 [V18,T03] ( 3, 48 ) long -> [fp+0x20] spill-single-def "CSE - aggressive" -; V19 cse1 [V19,T11] ( 3, 10 ) long -> x26 "CSE - aggressive" -; V20 cse2 [V20,T09] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" -; V21 cse3 [V21,T06] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" -; V22 cse4 [V22,T16] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" -; V23 cse5 [V23,T15] ( 4, 7 ) int -> x21 "CSE - aggressive"
+; V15 tmp7 [V15,T03] ( 3, 24 ) ref -> x0 "argument with side effect" +; V16 tmp8 [V16,T01] ( 3, 96 ) ref -> x0 "argument with side effect" +; V17 tmp9 [V17,T02] ( 3, 96 ) ref -> x0 "argument with side effect" +; V18 tmp10 [V18,T07] ( 6, 19 ) long -> x24 "Widened primary induction variable" +; V19 cse0 [V19,T08] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" +; V20 cse1 [V20,T05] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" +; V21 cse2 [V21,T14] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" +; V22 cse3 [V22,T13] ( 4, 7 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -48,7 +47,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] ;; size=36 bbWeight=1 PerfScore 7.50 G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M8664_IG19
+ cbz x19, G_M8664_IG16
ldr w21, [x19, #0x08] mov w1, w21 adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Reflection.MethodBase[] @@ -58,9 +57,9 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov x22, x0 ; gcrRegs +[x22] mov w23, wzr
- mov w24, wzr
cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08 + mov x24, xzr
add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19] @@ -69,66 +68,56 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=52 bbWeight=1 PerfScore 10.50 G_M8664_IG03: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz ; gcrRegs -[x0]
- ubfiz x26, x24, #3, #32 - ldr x0, [x19, x26]
+ ldr x0, [x19, x24, LSL #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x80] blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=32 bbWeight=4 PerfScore 52.00 -G_M8664_IG04: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, byref, isz
+ mov x26, x0 + ; byrRegs +[x26] + mov w27, w1 + cbz w27, G_M8664_IG07 + ;; size=28 bbWeight=4 PerfScore 48.00 +G_M8664_IG04: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=6080000 {x19 x25 x26}, byref, isz
; byrRegs -[x0]
- mov w1, wzr - ldr w2, [x20, #0x08] - str w2, [fp, #0x1C] // [V21 cse3] - cmp w2, #0 - ble G_M8664_IG13
+ mov w28, wzr + ldr w1, [x20, #0x08] + str w1, [fp, #0x1C] // [V20 cse1] + cmp w1, #0 + ble G_M8664_IG06
;; size=20 bbWeight=2 PerfScore 12.00
-G_M8664_IG05: ; bbWeight=16, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, byref, isz - cmp w1, w28 - bhs G_M8664_IG18 - str w1, [fp, #0x2C] // [V06 loc4] - ubfiz x3, x1, #3, #32 - str x3, [fp, #0x20] // [V18 cse0] - ldr x0, [x27, x3]
+G_M8664_IG05: ; bbWeight=16, gcrefRegs=500000 {x20 x22}, byrefRegs=6080000 {x19 x25 x26}, byref, isz + cmp w28, w27 + bhs G_M8664_IG15 + ldr x0, [x26, w28, UXTW #3]
; gcrRegs +[x0]
- ldr x4, [x0] - ldr x4, [x4, #0x48] - blr x4 - ldr x1, [fp, #0x20] // [V18 cse0] - ldr x1, [x25, x1]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ldr x1, [x25, w28, UXTW #3]
; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0xD1FFAB1E] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M8664_IG07 - ldr w14, [fp, #0x2C] // [V06 loc4] - add w14, w14, #1 - ldr w15, [fp, #0x1C] // [V21 cse3] - cmp w15, w14 - bgt G_M8664_IG12 - ;; size=80 bbWeight=16 PerfScore 536.00 -G_M8664_IG06: ; bbWeight=8, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref - ; byrRegs -[x27] - str w14, [fp, #0x2C] // [V06 loc4] - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M8664_IG07: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz - ldr w15, [fp, #0x1C] // [V21 cse3] - ldr w14, [fp, #0x2C] // [V06 loc4] - cmp w15, w14 - bgt G_M8664_IG08 - ldr x15, [x19, x26]
+ cbz w0, G_M8664_IG06 + add w28, w28, #1 + ldr w14, [fp, #0x1C] // [V20 cse1] + cmp w14, w28 + bgt G_M8664_IG05 + ;; size=60 bbWeight=16 PerfScore 424.00 +G_M8664_IG06: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz + ; byrRegs -[x26] + ldr w14, [fp, #0x1C] // [V20 cse1] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x19, x24, LSL #3]
; gcrRegs +[x15] ldr w14, [x22, #0x08] cmp w23, w14
- bhs G_M8664_IG18
+ bhs G_M8664_IG15
add x14, x22, #16 ; byrRegs +[x14] add x14, x14, x23, LSL #3 @@ -136,63 +125,52 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 ; gcrRegs -[x15] ; byrRegs -[x14] add w23, w23, #1
- ;; size=48 bbWeight=2 PerfScore 32.00 -G_M8664_IG08: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz - add w24, w24, #1
+ ;; size=44 bbWeight=2 PerfScore 28.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz + add w0, w24, #1 + mov w24, w0
cmp w21, w24 bgt G_M8664_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00 -G_M8664_IG09: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 10.00 +G_M8664_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ; byrRegs -[x19 x25]
- cbnz w23, G_M8664_IG14
+ cbnz w23, G_M8664_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x0, xzr ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M8664_IG11: ; bbWeight=0.50, epilog, nogc, extend - ldp x27, x28, [sp, #0x70] - ldp x25, x26, [sp, #0x60] - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x80
+G_M8664_IG10: ; bbWeight=0.50, epilog, nogc, extend + ldp x27, x28, [sp, #0x60] + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x70
ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M8664_IG12: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, gcvars, byref - ; gcrRegs -[x0] +[x20 x22] - ; byrRegs +[x19 x25 x27] - mov w1, w14 - b G_M8664_IG05 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M8664_IG13: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref - ; byrRegs -[x27] - str w1, [fp, #0x2C] // [V06 loc4] - b G_M8664_IG07 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M8664_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] - ; byrRegs -[x19 x25]
+G_M8664_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x22]
cmp w23, #1
- bne G_M8664_IG16
+ bne G_M8664_IG13
ldr w0, [x22, #0x08] ...

-44 (-9.32%) : 6872.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)

@@ -7,41 +7,41 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T16] ( 5, 5 ) ref -> x0 class-hnd single-def <System.Reflection.PropertyInfo[]> -; V01 arg1 [V01,T14] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Type> -; V02 arg2 [V02,T11] ( 8, 8.66) ref -> x19 class-hnd single-def <System.Type[]> -; V03 loc0 [V03,T17] ( 5, 6 ) ref -> x21 class-hnd exact <<unknown class>>
+; V00 arg0 [V00,T15] ( 5, 5 ) ref -> x0 class-hnd single-def <System.Reflection.PropertyInfo[]> +; V01 arg1 [V01,T13] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Type> +; V02 arg2 [V02,T10] ( 8, 8.66) ref -> x19 class-hnd single-def <System.Type[]> +; V03 loc0 [V03,T16] ( 5, 6 ) ref -> x21 class-hnd exact <<unknown class>>
; V04 loc1 [V04,T04] ( 7, 29 ) int -> x22
-; V05 loc2 [V05,T07] ( 5, 17 ) int -> x23 -; V06 loc3 [V06,T12] ( 7, 10.20) ref -> x28 class-hnd <<unknown class>> -; V07 loc4 [V07,T01] ( 13, 72.48) int -> [fp+0x2C]
+;* V05 loc2 [V05,T19] ( 0, 0 ) int -> zero-ref +; V06 loc3 [V06,T11] ( 7, 10.20) ref -> x27 class-hnd <<unknown class>> +; V07 loc4 [V07,T01] ( 13, 72.48) int -> x28
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 3, 2 ) int -> x22
+; V10 tmp1 [V10,T18] ( 3, 2 ) int -> x22
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp5 [V14,T05] ( 3, 24 ) ref -> x0 "argument with side effect" ; V15 tmp6 [V15,T00] ( 6, 96 ) ref -> x0 "argument with side effect" ; V16 tmp7 [V16,T02] ( 4, 64 ) ref -> x0 "argument with side effect"
-; V17 tmp8 [V17,T10] ( 3, 12 ) ref -> x0 "argument with side effect" -; V18 tmp9 [V18,T15] ( 2, 8 ) ref -> x1 "argument with side effect" -; V19 cse0 [V19,T03] ( 3, 47.52) long -> [fp+0x20] spill-single-def "CSE - aggressive" -; V20 cse1 [V20,T09] ( 4, 12 ) long -> x27 "CSE - aggressive" -; V21 cse2 [V21,T08] ( 3, 17 ) byref -> x26 hoist "CSE - aggressive" -; V22 cse3 [V22,T06] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive" -; V23 cse4 [V23,T13] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive" -; V24 cse5 [V24,T18] ( 3, 6 ) int -> x24 "CSE - moderate"
+; V17 tmp8 [V17,T09] ( 3, 12 ) ref -> x0 "argument with side effect" +; V18 tmp9 [V18,T14] ( 2, 8 ) ref -> x1 "argument with side effect" +; V19 tmp10 [V19,T06] ( 7, 21 ) long -> x24 "Widened primary induction variable" +; V20 cse0 [V20,T08] ( 3, 17 ) byref -> x26 hoist "CSE - aggressive" +; V21 cse1 [V21,T07] ( 4, 18.02) byref -> [fp+0x10] hoist multi-def "CSE - aggressive" +; V22 cse2 [V22,T12] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive" +; V23 cse3 [V23,T17] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V24 cse4 [V24,T03] ( 3, 47.52) long -> [fp+0x18] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M10656_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] @@ -50,7 +50,7 @@ G_M10656_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 7.50 G_M10656_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- cbz x0, G_M10656_IG21
+ cbz x0, G_M10656_IG19
mov x21, xzr ; gcrRegs +[x21] cbnz x19, G_M10656_IG04 @@ -63,10 +63,10 @@ G_M10656_IG04: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR ldr w22, [x19, #0x08] ;; size=4 bbWeight=0.50 PerfScore 1.50 G_M10656_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov w23, wzr - ldr w24, [x0, #0x08] - cmp w24, #0 - ble G_M10656_IG18
+ ldr w23, [x0, #0x08] + cmp w23, #0 + ble G_M10656_IG16 + mov x24, xzr
add x25, x0, #16 ; byrRegs +[x25] add x26, x19, #16 @@ -74,114 +74,98 @@ G_M10656_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs ;; size=24 bbWeight=1 PerfScore 6.00 G_M10656_IG06: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz ; gcrRegs -[x0]
- ubfiz x27, x23, #3, #32 - ldr x0, [x25, x27]
+ ldr x0, [x25, x24, LSL #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x88] blr x1
- mov x28, x0 - ; gcrRegs +[x28] - mov w1, wzr
+ mov x27, x0 + ; gcrRegs +[x27] + mov w28, wzr
cmp w22, #0
- ble G_M10656_IG10 - ;; size=36 bbWeight=4 PerfScore 54.00 -G_M10656_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000000 {x25 x26}, byref, isz
+ ble G_M10656_IG12 + ;; size=32 bbWeight=4 PerfScore 50.00 +G_M10656_IG07: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x0]
- cbz x28, G_M10656_IG11 - cbz x19, G_M10656_IG11 - ldr w0, [x28, #0x08]
+ cbz x27, G_M10656_IG10 + cbz x19, G_M10656_IG10 + ldr w0, [x27, #0x08]
cmp w0, w22
- blt G_M10656_IG11
+ blt G_M10656_IG10
ldr w0, [x19, #0x08] cmp w0, w22
- blt G_M10656_IG11 - add x28, x28, #16 - ; gcrRegs -[x28] - ; byrRegs +[x28]
+ blt G_M10656_IG10 + add x27, x27, #16 + ; gcrRegs -[x27] + ; byrRegs +[x27]
;; size=36 bbWeight=2 PerfScore 23.00
-G_M10656_IG08: ; bbWeight=15.84, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=16000000 {x25 x26 x28}, byref, isz - str w1, [fp, #0x2C] // [V07 loc4] - ubfiz x2, x1, #3, #32 - str x2, [fp, #0x20] // [V19 cse0] - ldr x0, [x28, x2]
+G_M10656_IG08: ; bbWeight=15.84, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=E000000 {x25 x26 x27}, byref, isz + mov w1, w28 + str x1, [fp, #0x18] // [V24 cse4] + ldr x0, [x27, x1, LSL #3]
; gcrRegs +[x0]
- ldr x3, [x0] - ldr x3, [x3, #0x48] - blr x3 - ldr x1, [fp, #0x20] // [V19 cse0] - ldr x1, [x26, x1]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ldr x1, [fp, #0x18] // [V24 cse4] + ldr x1, [x26, x1, LSL #3]
; gcrRegs +[x1] bl System.Type:op_Equality(System.Type,System.Type):ubyte ; gcrRegs -[x0-x1]
- cbz w0, G_M10656_IG14 - ldr w1, [fp, #0x2C] // [V07 loc4] - add w1, w1, #1 - cmp w1, w22
+ cbz w0, G_M10656_IG12 + add w28, w28, #1 + cmp w28, w22
blt G_M10656_IG08
- ;; size=60 bbWeight=15.84 PerfScore 380.16
+ ;; size=52 bbWeight=15.84 PerfScore 324.72
G_M10656_IG09: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
- ; byrRegs -[x28] - str w1, [fp, #0x2C] // [V07 loc4] - b G_M10656_IG14 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M10656_IG10: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref - str w1, [fp, #0x2C] // [V07 loc4] - b G_M10656_IG14 - ;; size=8 bbWeight=2 PerfScore 4.00 -G_M10656_IG11: ; bbWeight=0.02, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000000 {x25 x26}, byref - ; gcrRegs +[x28] - ldr wzr, [x28, #0x08] - add x0, x28, #16
+ ; byrRegs -[x27] + b G_M10656_IG12 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M10656_IG10: ; bbWeight=0.02, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000000 {x25 x26}, byref + ; gcrRegs +[x27] + ldr wzr, [x27, #0x08] + add x0, x27, #16
; byrRegs +[x0]
- mov x2, x0 - ; byrRegs +[x2]
+ mov x1, x0 + ; byrRegs +[x1]
;; size=12 bbWeight=0.02 PerfScore 0.08
-G_M10656_IG12: ; bbWeight=0.16, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+G_M10656_IG11: ; bbWeight=0.16, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000002 {x1 x25 x26}, byref, isz
; byrRegs -[x0]
- ldr w0, [x28, #0x08] - cmp w1, w0 - bhs G_M10656_IG20 - str x2, [fp, #0x18] // [V22 cse3] - ; GC ptr vars +{V22} - str w1, [fp, #0x2C] // [V07 loc4] - ldr x0, [x2, w1, UXTW #3]
+ ldr w0, [x27, #0x08] + cmp w28, w0 + bhs G_M10656_IG18 + str x1, [fp, #0x10] // [V21 cse1] + ; GC ptr vars +{V21} + ldr x0, [x1, w28, UXTW #3]
; gcrRegs +[x0]
- ldr x3, [x0] - ldr x3, [x3, #0x48] - blr x3 - ; byrRegs -[x2]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ; byrRegs -[x1]
ldr w1, [x19, #0x08]
- ldr w2, [fp, #0x2C] // [V07 loc4] - cmp w2, w1 - bhs G_M10656_IG20 - str w2, [fp, #0x2C] // [V07 loc4] - ldr x1, [x26, w2, UXTW #3]
+ cmp w28, w1 + bhs G_M10656_IG18 + ldr x1, [x26, w28, UXTW #3]
; gcrRegs +[x1] bl System.Type:op_Equality(System.Type,System.Type):ubyte ; gcrRegs -[x0-x1]
- cbz w0, G_M10656_IG14 - ldr w1, [fp, #0x2C] // [V07 loc4] - add w1, w1, #1 - cmp w1, w22 - ldr x2, [fp, #0x18] // [V22 cse3] - ; byrRegs +[x2] - blt G_M10656_IG12 - ;; size=88 bbWeight=0.16 PerfScore 5.60 -G_M10656_IG13: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, gcvars, byref - ; gcrRegs -[x28] - ; byrRegs -[x2] - ; GC ptr vars -{V22} - str w1, [fp, #0x2C] // [V07 loc4] - ;; size=4 bbWeight=0.08 PerfScore 0.08 -G_M10656_IG14: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz - ldr w1, [fp, #0x2C] // [V07 loc4] - cmp w1, w22 - blt G_M10656_IG17 - ;; size=12 bbWeight=4 PerfScore 14.00 -G_M10656_IG15: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
...

-16 (-9.09%) : 12795.dasm - System.Numerics.Vector:LessThanOrEqualAllushort:ubyte (FullOpts)

@@ -9,31 +9,29 @@ ; ; V00 arg0 [V00 ] ( 3, 6 ) simd16 -> [fp+0x20] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[ushort]> ; V01 arg1 [V01 ] ( 3, 6 ) simd16 -> [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[ushort]>
-; V02 loc0 [V02,T00] ( 9, 29 ) int -> x19
+; V02 loc0 [V02,T00] ( 10, 33 ) int -> x19
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x21 "impAppendStmt" -; V05 tmp2 [V05,T04] ( 2, 4 ) int -> x0
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x20 "impAppendStmt" +; V05 tmp2 [V05,T03] ( 2, 4 ) int -> x0
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V10 tmp7 [V10,T05] ( 2, 4 ) int -> x0
+; V10 tmp7 [V10,T04] ( 2, 4 ) int -> x0
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* 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 ) ushort -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T03] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V16 cse1 [V16,T02] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
+; V15 cse0 [V15,T02] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M39719_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x38] - str x21, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x30]
mov fp, sp stp q1, q0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M39719_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -59,10 +57,9 @@ G_M39719_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M39719_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #32 // [V00 arg0] ; byrRegs +[x0]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x0, x20]
+ ldrh w20, [x0, w19, SXTW #2]
tbnz w19, #31, G_M39719_IG08
- ;; size=16 bbWeight=4 PerfScore 22.00
+ ;; size=12 bbWeight=4 PerfScore 18.00
G_M39719_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] cmp w19, #8 @@ -83,9 +80,9 @@ G_M39719_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M39719_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V01 arg1] ; byrRegs +[x0]
- ldrh w0, [x0, x20]
+ ldrh w0, [x0, w19, SXTW #2]
; byrRegs -[x0]
- cmp w0, w21
+ cmp w0, w20
blt G_M39719_IG12 add w19, w19, #1 cmp w19, #8 @@ -95,31 +92,28 @@ G_M39719_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39719_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50
+ ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M39719_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39719_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50
+ ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 176, prolog size 20, PerfScore 84.50, instruction count 44, allocated bytes for code 176 (MethodHash=bf3f64d8) for method System.Numerics.Vector:LessThanOrEqualAll[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 160, prolog size 16, PerfScore 77.50, instruction count 40, allocated bytes for code 160 (MethodHash=bf3f64d8) for method System.Numerics.Vector:LessThanOrEqualAll[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x50
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x40
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0 CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x38 - CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x40 - CodeOffset: 0x0C Op: RelOffset DwarfReg:0x15 Offset:0x48 - CodeOffset: 0x10 Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x30 + CodeOffset: 0x08 Op: RelOffset DwarfReg:0x14 Offset:0x38 + CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D

+20 (+16.67%) : 9817.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)

@@ -8,35 +8,38 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V01 arg1 [V01,T03] ( 4, 6.50) long -> x2 single-def
+; V01 arg1 [V01,T04] ( 4, 6.50) long -> x2 single-def
; V02 arg2 [V02,T06] ( 4, 3 ) byref -> x3 single-def ;* V03 loc0 [V03,T10] ( 0, 0 ) long -> zero-ref ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V05 loc2 [V05,T01] ( 5, 17 ) int -> x4
+;* V05 loc2 [V05,T11] ( 0, 0 ) int -> zero-ref
; V06 loc3 [V06,T02] ( 4, 16 ) ushort -> x5
-; V07 loc4 [V07,T04] ( 2, 8 ) int -> x6
+; V07 loc4 [V07,T05] ( 2, 8 ) int -> x6
;* V08 loc5 [V08 ] ( 0, 0 ) int -> zero-ref ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T00] ( 3, 24 ) long -> x5 "dup spill" ; V11 tmp2 [V11,T08] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V12 tmp3 [V12,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V13 tmp4 [V13,T07] ( 2, 5 ) byref -> x0 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp5 [V14,T05] ( 3, 6 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
+; V14 tmp5 [V14,T03] ( 4, 10 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP +; V15 tmp6 [V15,T01] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0
-G_M30934_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M30934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M30934_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz ; byrRegs +[x0 x3]
- mov w4, wzr
cmp w1, #0 ble G_M30934_IG04
+ mov x4, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M30934_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, byref, isz
- ldrh w5, [x0, w4, UXTW #2]
+ cmp w4, w1 + bhs G_M30934_IG08 + ldrh w5, [x0, x4, LSL #2]
cmp w5, #127 bgt G_M30934_IG06 asr w6, w5, #4 @@ -49,9 +52,10 @@ G_M30934_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0009 {x0 x3}, b orr w6, w7, w6 strb w6, [x5] add w4, w4, #1
+ mov w4, w4
cmp w4, w1 blt G_M30934_IG03
- ;; size=60 bbWeight=4 PerfScore 60.00
+ ;; size=72 bbWeight=4 PerfScore 68.00
G_M30934_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref ; byrRegs -[x0] ldrb w0, [x2] @@ -71,8 +75,14 @@ G_M30934_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M30934_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[x3] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 68.75, instruction count 30, allocated bytes for code 120 (MethodHash=9f9f8729) for method System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 76.75, instruction count 35, allocated bytes for code 140 (MethodHash=9f9f8729) for method System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
; ============================================================ Cfi Info:

+48 (+17.65%) : 1770.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)

@@ -9,23 +9,25 @@ ; ; V00 this [V00,T01] ( 16, 16.54) byref -> x0 this single-def ; V01 arg1 [V01,T10] ( 6, 4.04) ref -> x1 class-hnd exact single-def <System.String>
-; V02 loc0 [V02,T14] ( 3, 1.50) int -> x3 -; V03 loc1 [V03,T00] ( 13, 21.50) int -> x3
+; V02 loc0 [V02,T15] ( 3, 1.50) int -> x3 +; V03 loc1 [V03,T12] ( 5, 2.00) int -> x3
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 4, 16 ) int -> x5 "impAppendStmt" ; V06 tmp2 [V06,T07] ( 4, 8 ) int -> registers "impAppendStmt"
-; V07 tmp3 [V07,T12] ( 2, 2 ) int -> x4 "impAppendStmt" -; V08 tmp4 [V08,T13] ( 2, 2 ) int -> x3 "Inlining Arg"
+; V07 tmp3 [V07,T13] ( 2, 2 ) int -> x4 "impAppendStmt" +; V08 tmp4 [V08,T14] ( 2, 2 ) int -> x3 "Inlining Arg"
; V09 tmp5 [V09,T03] ( 4, 16 ) int -> registers "Inlining Arg" ; V10 tmp6 [V10,T08] ( 4, 8 ) int -> registers "Inlining Arg"
-; V11 cse0 [V11,T11] ( 3, 5.94) int -> x5 "CSE - aggressive" -; V12 cse1 [V12,T15] ( 3, 1.50) int -> x3 "CSE - moderate" -; V13 cse2 [V13,T17] ( 3, 0.06) int -> x6 "CSE - conservative" -; V14 cse3 [V14,T05] ( 8, 11 ) int -> x2 "CSE - aggressive" -; V15 cse4 [V15,T09] ( 6, 6.54) byref -> registers hoist multi-def "CSE - aggressive" -; V16 cse5 [V16,T04] ( 3, 11.88) int -> x1 "CSE - aggressive" -; V17 cse6 [V17,T06] ( 3, 9.90) int -> x1 "CSE - aggressive" -; V18 cse7 [V18,T16] ( 3, 0.10) int -> x4 "CSE - conservative"
+; V11 tmp7 [V11,T17] ( 7, 0.25) long -> x3 "Widened primary induction variable" +; V12 tmp8 [V12,T00] ( 6, 20.30) long -> x3 "Widened primary induction variable" +; V13 cse0 [V13,T05] ( 4, 11.88) int -> x1 "CSE - aggressive" +; V14 cse1 [V14,T18] ( 4, 0.12) int -> x4 "CSE - conservative" +; V15 cse2 [V15,T11] ( 3, 5.94) int -> x5 "CSE - aggressive" +; V16 cse3 [V16,T16] ( 3, 1.50) int -> x3 "CSE - moderate" +; V17 cse4 [V17,T19] ( 3, 0.06) int -> x6 "CSE - conservative" +; V18 cse5 [V18,T04] ( 11, 13.04) int -> x2 "CSE - aggressive" +; V19 cse6 [V19,T09] ( 6, 6.54) byref -> registers hoist multi-def "CSE - aggressive" +; V20 cse7 [V20,T06] ( 3, 11.88) int -> x1 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -62,84 +64,102 @@ G_M52075_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=44 bbWeight=0.50 PerfScore 7.25 G_M52075_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz cmp w2, w3
- ble G_M52075_IG13
+ ble G_M52075_IG14
tbnz w3, #31, G_M52075_IG10
+ mov w3, w3
add x4, x1, #12 ; byrRegs +[x4]
- ;; size=16 bbWeight=0.50 PerfScore 1.50
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
G_M52075_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0011 {x0 x4}, byref, isz ; gcrRegs -[x1] ldr w1, [x0] sxtw w5, w1 ror w1, w1, #27 add w5, w5, w1
- ldrh w1, [x4, w3, UXTW #2]
+ ldrh w1, [x4, x3, LSL #2]
eor w1, w5, w1 str w1, [x0] add w1, w3, #1 cmp w2, w1 ble G_M52075_IG08 ;; size=40 bbWeight=3.96 PerfScore 45.54
-G_M52075_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0011 {x0 x4}, byref
+G_M52075_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0011 {x0 x4}, byref, isz
ldr w5, [x0, #0x04] sxtw w6, w5 ror w5, w5, #27 add w6, w6, w5
+ cmp w1, w2 + bhs G_M52075_IG16
ldrh w1, [x4, w1, UXTW #2] eor w1, w6, w1 str w1, [x0, #0x04]
- ;; size=28 bbWeight=1.98 PerfScore 18.81
+ ;; size=36 bbWeight=1.98 PerfScore 21.78
G_M52075_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0011 {x0 x4}, byref, isz add w3, w3, #2
+ mov w3, w3
cmp w2, w3 bgt G_M52075_IG06
- ;; size=12 bbWeight=3.96 PerfScore 7.92
+ ;; size=16 bbWeight=3.96 PerfScore 9.90
G_M52075_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs -[x4]
- b G_M52075_IG13
+ b G_M52075_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M52075_IG10: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
+G_M52075_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
; gcrRegs +[x1]
+ mov w3, w3 + ;; size=4 bbWeight=0.01 PerfScore 0.00 +G_M52075_IG11: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
ldr w5, [x0] mov w4, w5 ror w4, w4, #27 add w4, w5, w4
+ cmp w3, w2 + bhs G_M52075_IG16
add x5, x1, #12 ; byrRegs +[x5]
- ldrh w6, [x5, w3, UXTW #2]
+ ldrh w6, [x5, x3, LSL #2]
eor w4, w4, w6 str w4, [x0] add w4, w3, #1 cmp w2, w4
- ble G_M52075_IG12 - ;; size=44 bbWeight=0.04 PerfScore 0.48 -G_M52075_IG11: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0021 {x0 x5}, byref
+ ble G_M52075_IG13 + ;; size=52 bbWeight=0.04 PerfScore 0.54 +G_M52075_IG12: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0021 {x0 x5}, byref, isz
ldr w6, [x0, #0x04] sxtw w7, w6 ror w6, w6, #27 add w6, w7, w6
+ cmp w4, w2 + bhs G_M52075_IG16
ldrh w4, [x5, w4, UXTW #2] eor w4, w6, w4 str w4, [x0, #0x04]
- ;; size=28 bbWeight=0.02 PerfScore 0.19 -G_M52075_IG12: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
+ ;; size=36 bbWeight=0.02 PerfScore 0.22 +G_M52075_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref, isz
; byrRegs -[x5] add w3, w3, #2
+ mov w3, w3
cmp w2, w3
- bgt G_M52075_IG10 - ;; size=12 bbWeight=0.04 PerfScore 0.08 -G_M52075_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ bgt G_M52075_IG11 + ;; size=16 bbWeight=0.04 PerfScore 0.10 +G_M52075_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; gcrRegs -[x1] ldr w1, [x0, #0x08] add w2, w1, w2 str w2, [x0, #0x08] ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M52075_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M52075_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M52075_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[x0] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 8, PerfScore 92.02, instruction count 68, allocated bytes for code 272 (MethodHash=5d213494) for method Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
+; Total bytes of code 320, prolog size 8, PerfScore 97.33, instruction count 80, allocated bytes for code 320 (MethodHash=5d213494) for method Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
; ============================================================ Cfi Info:

+32 (+19.05%) : 2992.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan1[ubyte],System.Span`1[ubyte]):int (FullOpts)

@@ -11,17 +11,19 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V03 loc0 [V03,T00] ( 8, 26 ) int -> registers
-; V04 loc1 [V04,T03] ( 5, 17 ) int -> x7 -; V05 loc2 [V05,T04] ( 5, 16.50) int -> x0
+;* V04 loc1 [V04,T11] ( 0, 0 ) int -> zero-ref +;* V05 loc2 [V05,T12] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T01] ( 3, 24 ) int -> x6 "impSpillLclRefs" ; V08 tmp2 [V08,T02] ( 3, 24 ) int -> x1 "impSpillLclRefs" ; V09 tmp3 [V09,T09] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T07] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T05] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T10] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp6 [V12,T08] ( 3, 5.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V13 tmp7 [V13,T05] ( 3, 9 ) byref -> x4 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V14 tmp8 [V14,T06] ( 3, 9 ) int -> x5 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp6 [V12,T06] ( 4, 9.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V13 tmp7 [V13,T07] ( 3, 9 ) byref -> x4 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V14 tmp8 [V14,T08] ( 3, 9 ) int -> x5 single-def "field V02._length (fldOffset=0x8)" P-INDEP +; V15 tmp9 [V15,T03] ( 6, 21 ) long -> x7 "Widened primary induction variable" +; V16 tmp10 [V16,T04] ( 6, 20.50) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -32,9 +34,9 @@ G_M18424_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4}, byref, isz ; byrRegs +[x0 x2 x4] mov w6, wzr
- mov w7, wzr
cmp w1, #0 ble G_M18424_IG12
+ mov x7, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4}, byref, isz cmp w6, w5 @@ -43,17 +45,20 @@ G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4} mov w6, w6 add x6, x4, x6 ; byrRegs +[x6]
- ldrb w9, [x0, w7, UXTW #2]
+ cmp w7, w1 + bhs G_M18424_IG13 + ldrb w9, [x0, x7]
strb w9, [x6] add w7, w7, #1
+ mov w7, w7
cmp w7, w1 blt G_M18424_IG11
- ;; size=40 bbWeight=4 PerfScore 36.00
+ ;; size=52 bbWeight=4 PerfScore 44.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, byref, isz ; byrRegs -[x0 x6]
- mov w0, wzr
cmp w3, #0 ble G_M18424_IG10
+ mov x0, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00 G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, byref, isz cmp w8, w5 @@ -63,12 +68,15 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, b mov w1, w1 add x1, x4, x1 ; byrRegs +[x1]
- ldrb w6, [x2, w0, UXTW #2]
+ cmp w0, w3 + bhs G_M18424_IG13 + ldrb w6, [x2, x0]
strb w6, [x1] add w0, w0, #1
+ mov w0, w0
cmp w0, w3 blt G_M18424_IG05
- ;; size=44 bbWeight=4 PerfScore 38.00
+ ;; size=56 bbWeight=4 PerfScore 46.00
G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x1-x2 x4] mov w6, w8 @@ -98,8 +106,14 @@ G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4} mov w8, w6 b G_M18424_IG04 ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18424_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x2 x4] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 8, PerfScore 89.62, instruction count 42, allocated bytes for code 168 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 105.62, instruction count 50, allocated bytes for code 200 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 1,862 182 1,551 129 -2,184 +15,632
benchmarks.run_pgo.linux.arm64.checked.mch 19,332 1,799 17,195 338 -18,740 +250,852
benchmarks.run_tiered.linux.arm64.checked.mch 1,134 507 574 53 -5,444 +7,064
coreclr_tests.run.linux.arm64.checked.mch 23,467 2,229 20,332 906 -18,832 +184,968
libraries.crossgen2.linux.arm64.checked.mch 5,698 740 4,511 447 -8,048 +48,616
libraries.pmi.linux.arm64.checked.mch 7,286 774 6,018 494 -8,116 +58,800
libraries_tests.run.linux.arm64.Release.mch 35,270 8,007 25,494 1,769 -70,292 +397,956
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 9,549 1,264 7,440 845 -12,860 +70,300
realworld.run.linux.arm64.checked.mch 1,634 229 1,288 117 -2,796 +13,308
smoke_tests.nativeaot.linux.arm64.checked.mch 811 207 537 67 -1,448 +5,680
106,043 15,938 84,940 5,165 -148,760 +1,053,176

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,705 2,779 30,926 5 (0.01%) 5 (0.01%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,709 61,290 91,419 195 (0.13%) 195 (0.13%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,811 48,019 15,792 3 (0.00%) 3 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 625,144 382,318 242,826 128 (0.02%) 132 (0.02%)
libraries.crossgen2.linux.arm64.checked.mch 234,493 15 234,478 0 (0.00%) 3 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,734 6 295,728 11 (0.00%) 11 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 743,321 490,908 252,413 845 (0.11%) 845 (0.11%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,853 21,599 283,254 11 (0.00%) 12 (0.00%)
realworld.run.linux.arm64.checked.mch 33,305 151 33,154 4 (0.01%) 4 (0.01%)
smoke_tests.nativeaot.linux.arm64.checked.mch 18,802 7 18,795 231 (1.21%) 231 (1.21%)
2,505,877 1,007,092 1,498,785 1,433 (0.06%) 1,441 (0.06%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15545232 (overridden on cmd)
Total bytes of diff: 15558680 (overridden on cmd)
Total bytes of delta: 13448 (0.09 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 18552.dasm (5.49 % of base)
         160 : 15730.dasm (8.51 % of base)
         112 : 33570.dasm (7.24 % of base)
         100 : 10235.dasm (1.20 % of base)
          84 : 13300.dasm (1.11 % of base)
          84 : 11421.dasm (0.77 % of base)
          84 : 28852.dasm (1.06 % of base)
          84 : 33073.dasm (0.78 % of base)
          84 : 7866.dasm (3.07 % of base)
          80 : 12023.dasm (5.56 % of base)
          80 : 3944.dasm (1.23 % of base)
          80 : 28548.dasm (7.91 % of base)
          68 : 27941.dasm (3.97 % of base)
          68 : 24433.dasm (3.71 % of base)
          64 : 1714.dasm (6.15 % of base)
          64 : 3928.dasm (3.14 % of base)
          64 : 33531.dasm (28.57 % of base)
          60 : 28124.dasm (3.23 % of base)
          60 : 3084.dasm (1.30 % of base)
          60 : 20983.dasm (2.13 % of base)

Top file improvements (bytes):
        -136 : 28639.dasm (-1.25 % of base)
        -136 : 7135.dasm (-3.74 % of base)
         -88 : 19297.dasm (-0.98 % of base)
         -68 : 11253.dasm (-0.21 % of base)
         -64 : 22663.dasm (-19.51 % of base)
         -56 : 20208.dasm (-1.33 % of base)
         -56 : 18975.dasm (-1.79 % of base)
         -48 : 15729.dasm (-4.18 % of base)
         -44 : 28338.dasm (-2.74 % of base)
         -44 : 5563.dasm (-3.37 % of base)
         -44 : 24387.dasm (-0.12 % of base)
         -40 : 3113.dasm (-2.03 % of base)
         -36 : 23000.dasm (-1.69 % of base)
         -36 : 645.dasm (-3.42 % of base)
         -32 : 1081.dasm (-2.76 % of base)
         -32 : 338.dasm (-1.91 % of base)
         -28 : 15443.dasm (-1.59 % of base)
         -28 : 1776.dasm (-0.83 % of base)
         -28 : 4505.dasm (-1.08 % of base)
         -24 : 23722.dasm (-1.73 % of base)

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

Top method regressions (bytes):
         196 (5.49 % of base) : 18552.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 15730.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         112 (7.24 % of base) : 33570.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         100 (1.20 % of base) : 10235.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
          84 (1.11 % of base) : 13300.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
          84 (0.78 % of base) : 33073.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
          84 (1.06 % of base) : 28852.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
          84 (0.77 % of base) : 11421.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
          84 (3.07 % of base) : 7866.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
          80 (5.56 % of base) : 12023.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
          80 (1.23 % of base) : 3944.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          80 (7.91 % of base) : 28548.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          68 (3.71 % of base) : 24433.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          68 (3.97 % of base) : 27941.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          64 (28.57 % of base) : 33531.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          64 (6.15 % of base) : 1714.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (FullOpts)
          64 (3.14 % of base) : 3928.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (3.23 % of base) : 28124.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
          60 (2.13 % of base) : 20983.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (1.30 % of base) : 3084.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 28639.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -136 (-3.74 % of base) : 7135.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-0.98 % of base) : 19297.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -68 (-0.21 % of base) : 11253.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -64 (-19.51 % of base) : 22663.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-1.79 % of base) : 18975.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 20208.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -48 (-4.18 % of base) : 15729.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -44 (-0.12 % of base) : 24387.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
         -44 (-2.74 % of base) : 28338.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
         -44 (-3.37 % of base) : 5563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -40 (-2.03 % of base) : 3113.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -36 (-1.69 % of base) : 23000.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
         -36 (-3.42 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-1.91 % of base) : 338.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -32 (-2.76 % of base) : 1081.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
         -28 (-1.08 % of base) : 4505.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (FullOpts)
         -28 (-1.59 % of base) : 15443.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (FullOpts)
         -28 (-0.83 % of base) : 1776.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -24 (-1.73 % of base) : 23722.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (FullOpts)

Top method regressions (percentages):
          24 (40.00 % of base) : 24991.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 28803.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 16707.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
          20 (38.46 % of base) : 1303.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 12636.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (35.29 % of base) : 11479.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          20 (33.33 % of base) : 26398.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 11212.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 28968.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (31.25 % of base) : 28442.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
          64 (28.57 % of base) : 33531.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          20 (27.78 % of base) : 28302.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 21872.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 27405.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          20 (26.32 % of base) : 28229.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
          20 (25.00 % of base) : 23046.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 19320.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
          20 (25.00 % of base) : 33150.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 30958.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
          20 (21.74 % of base) : 19996.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 22663.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -12 (-6.00 % of base) : 7568.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
          -4 (-5.56 % of base) : 33284.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
         -12 (-5.08 % of base) : 13208.dasm - System.Numerics.Tests.Perf_VectorOf`1[uint]:SquareRootBenchmark():System.Numerics.Vector`1[uint]:this (FullOpts)
          -8 (-5.00 % of base) : 15726.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
         -16 (-4.94 % of base) : 19507.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
          -8 (-4.88 % of base) : 33110.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -24 (-4.76 % of base) : 27787.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
          -4 (-4.76 % of base) : 22878.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -4 (-4.55 % of base) : 16408.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -16 (-4.44 % of base) : 19129.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -48 (-4.18 % of base) : 15729.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -12 (-4.17 % of base) : 18925.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -12 (-4.05 % of base) : 18373.dasm - NeuralJagged:do_out_forward() (FullOpts)
          -4 (-4.00 % of base) : 10945.dasm - System.Xml.XmlBaseReader+NamespaceManager:Register(System.Xml.XmlBaseReader+Namespace):this (FullOpts)
        -136 (-3.74 % of base) : 7135.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -12 (-3.61 % of base) : 18372.dasm - NeuralJagged:do_mid_forward(int) (FullOpts)
         -12 (-3.57 % of base) : 7176.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
          -8 (-3.45 % of base) : 5328.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -36 (-3.42 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)


benchmarks.run_pgo.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79735896 (overridden on cmd)
Total bytes of diff: 79968008 (overridden on cmd)
Total bytes of delta: 232112 (0.29 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         184 : 64471.dasm (5.18 % of base)
         156 : 55351.dasm (7.60 % of base)
         148 : 150043.dasm (9.49 % of base)
         128 : 55691.dasm (5.42 % of base)
         128 : 55330.dasm (5.61 % of base)
         116 : 55708.dasm (5.04 % of base)
         104 : 64456.dasm (5.80 % of base)
         104 : 64470.dasm (5.80 % of base)
          84 : 38655.dasm (3.70 % of base)
          84 : 86893.dasm (1.29 % of base)
          76 : 86844.dasm (0.72 % of base)
          72 : 64469.dasm (5.34 % of base)
          72 : 55347.dasm (3.59 % of base)
          72 : 64455.dasm (5.34 % of base)
          64 : 13667.dasm (3.08 % of base)
          64 : 86972.dasm (0.33 % of base)
          64 : 96459.dasm (1.77 % of base)
          64 : 96588.dasm (3.58 % of base)
          64 : 96598.dasm (3.11 % of base)
          64 : 96611.dasm (3.46 % of base)

Top file improvements (bytes):
        -160 : 143670.dasm (-8.49 % of base)
        -140 : 46770.dasm (-4.44 % of base)
        -140 : 143669.dasm (-5.87 % of base)
        -128 : 117889.dasm (-1.18 % of base)
        -120 : 91245.dasm (-2.00 % of base)
        -112 : 144681.dasm (-3.16 % of base)
        -112 : 152197.dasm (-3.16 % of base)
        -112 : 49308.dasm (-3.98 % of base)
        -112 : 115275.dasm (-3.87 % of base)
        -108 : 72540.dasm (-3.21 % of base)
        -108 : 88192.dasm (-3.21 % of base)
        -108 : 91108.dasm (-3.21 % of base)
        -108 : 128830.dasm (-3.21 % of base)
        -104 : 71875.dasm (-3.21 % of base)
         -96 : 113714.dasm (-5.44 % of base)
         -88 : 117873.dasm (-0.77 % of base)
         -80 : 88698.dasm (-2.40 % of base)
         -80 : 88714.dasm (-2.40 % of base)
         -80 : 88715.dasm (-0.89 % of base)
         -72 : 113782.dasm (-1.64 % of base)

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

Top method regressions (bytes):
         184 (5.18 % of base) : 64471.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         156 (7.60 % of base) : 55351.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (9.49 % of base) : 150043.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
         128 (5.61 % of base) : 55330.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 55691.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         116 (5.04 % of base) : 55708.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         104 (5.80 % of base) : 64456.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         104 (5.80 % of base) : 64470.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          84 (3.70 % of base) : 38655.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
          84 (1.29 % of base) : 86893.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,System.Predicate`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal],System.Threading.CancellationToken):ubyte:this (Tier1)
          76 (0.72 % of base) : 86844.dasm - Microsoft.CodeAnalysis.Compilation:Emit(System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ResourceDescription],Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.RebuildData,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Emit.EmitResult:this (Tier1)
          72 (3.59 % of base) : 55347.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
          72 (5.34 % of base) : 64469.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          72 (5.34 % of base) : 64455.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          64 (0.33 % of base) : 86972.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
          64 (3.11 % of base) : 96598.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowsInWalker:Analyze(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Syntax.PrefixUnaryExpressionSyntax],byref):System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol] (Tier1)
          64 (1.77 % of base) : 96459.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
          64 (3.58 % of base) : 96588.dasm - Microsoft.CodeAnalysis.CSharp.UnassignedVariablesWalker:Analyze(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte):System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol] (Tier1)
          64 (3.46 % of base) : 96611.dasm - Microsoft.CodeAnalysis.CSharp.VariablesDeclaredWalker:Analyze(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode):System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Symbol] (Tier1)
          64 (3.08 % of base) : 13667.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)

Top method improvements (bytes):
        -160 (-8.49 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -140 (-4.44 % of base) : 46770.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1-OSR)
        -140 (-5.87 % of base) : 143669.dasm - NumericSortJagged:Run():double:this (Tier1)
        -128 (-1.18 % of base) : 117889.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -120 (-2.00 % of base) : 91245.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -112 (-3.16 % of base) : 144681.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -112 (-3.16 % of base) : 152197.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -112 (-3.87 % of base) : 115275.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.98 % of base) : 49308.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
        -108 (-3.21 % of base) : 72540.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 88192.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 91108.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 128830.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -104 (-3.21 % of base) : 71875.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -96 (-5.44 % of base) : 113714.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -88 (-0.77 % of base) : 117873.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -80 (-0.89 % of base) : 88715.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
         -80 (-2.40 % of base) : 88698.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -80 (-2.40 % of base) : 88714.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -72 (-1.64 % of base) : 113782.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)

Top method regressions (percentages):
          28 (33.33 % of base) : 96249.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          24 (30.00 % of base) : 137834.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          24 (30.00 % of base) : 67557.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          24 (30.00 % of base) : 135023.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (27.78 % of base) : 85587.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          20 (21.74 % of base) : 85112.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          32 (20.51 % of base) : 149098.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
          20 (17.86 % of base) : 77087.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          20 (17.24 % of base) : 137710.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (17.24 % of base) : 145707.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (14.71 % of base) : 82783.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
          16 (14.29 % of base) : 121352.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 144014.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 144715.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 47832.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 116752.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 136432.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 37472.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 54931.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 72607.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 39140.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -20 (-8.62 % of base) : 41874.dasm - System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
        -160 (-8.49 % of base) : 143670.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -28 (-8.14 % of base) : 13251.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier0)
         -32 (-7.69 % of base) : 7636.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 39139.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -20 (-7.25 % of base) : 112263.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -20 (-7.25 % of base) : 111878.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -20 (-7.25 % of base) : 58387.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -20 (-7.25 % of base) : 59051.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -24 (-6.67 % of base) : 8807.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -24 (-6.59 % of base) : 110250.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -16 (-6.56 % of base) : 25705.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Instrumented Tier0)
         -16 (-6.56 % of base) : 25667.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
        -140 (-5.87 % of base) : 143669.dasm - NumericSortJagged:Run():double:this (Tier1)
         -40 (-5.71 % of base) : 39141.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Instrumented Tier0)
         -24 (-5.50 % of base) : 25704.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Instrumented Tier0)
         -96 (-5.44 % of base) : 113714.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -28 (-5.43 % of base) : 7632.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -28 (-5.22 % of base) : 42034.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)


benchmarks.run_tiered.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 24597876 (overridden on cmd)
Total bytes of diff: 24599496 (overridden on cmd)
Total bytes of delta: 1620 (0.01 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         160 : 29071.dasm (8.51 % of base)
         140 : 33775.dasm (4.54 % of base)
         136 : 30962.dasm (6.25 % of base)
         124 : 29068.dasm (5.85 % of base)
         112 : 62192.dasm (7.24 % of base)
          84 : 29491.dasm (3.07 % of base)
          68 : 54996.dasm (3.97 % of base)
          68 : 54998.dasm (4.27 % of base)
          64 : 8128.dasm (3.14 % of base)
          60 : 20936.dasm (6.02 % of base)
          60 : 31469.dasm (6.02 % of base)
          48 : 62189.dasm (5.24 % of base)
          48 : 27889.dasm (2.33 % of base)
          48 : 30964.dasm (5.61 % of base)
          44 : 56748.dasm (2.81 % of base)
          44 : 25426.dasm (2.44 % of base)
          36 : 19927.dasm (4.95 % of base)
          36 : 6186.dasm (1.15 % of base)
          36 : 55002.dasm (9.89 % of base)
          36 : 53548.dasm (1.03 % of base)

Top file improvements (bytes):
        -136 : 17223.dasm (-3.65 % of base)
        -136 : 53971.dasm (-1.25 % of base)
        -112 : 28079.dasm (-3.98 % of base)
        -112 : 53549.dasm (-4.83 % of base)
         -88 : 36312.dasm (-0.98 % of base)
         -84 : 35208.dasm (-2.88 % of base)
         -76 : 52795.dasm (-4.34 % of base)
         -68 : 23460.dasm (-0.21 % of base)
         -68 : 4220.dasm (-0.82 % of base)
         -60 : 29066.dasm (-4.98 % of base)
         -56 : 35211.dasm (-1.79 % of base)
         -56 : 36310.dasm (-1.73 % of base)
         -56 : 43271.dasm (-1.35 % of base)
         -56 : 48806.dasm (-3.74 % of base)
         -52 : 50546.dasm (-3.23 % of base)
         -52 : 52372.dasm (-2.56 % of base)
         -52 : 6708.dasm (-4.26 % of base)
         -52 : 62050.dasm (-3.28 % of base)
         -48 : 29070.dasm (-4.18 % of base)
         -48 : 552.dasm (-1.35 % of base)

94 total files with Code Size differences (43 improved, 51 regressed), 20 unchanged.

Top method regressions (bytes):
         160 (8.51 % of base) : 29071.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         140 (4.54 % of base) : 33775.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         136 (6.25 % of base) : 30962.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (5.85 % of base) : 29068.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         112 (7.24 % of base) : 62192.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          84 (3.07 % of base) : 29491.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
          68 (3.97 % of base) : 54996.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          68 (4.27 % of base) : 54998.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          64 (3.14 % of base) : 8128.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
          60 (6.02 % of base) : 20936.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
          60 (6.02 % of base) : 31469.dasm - System.Uri:CreateUriInfo(ulong):this (Tier1)
          48 (5.61 % of base) : 30964.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
          48 (5.24 % of base) : 62189.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
          48 (2.33 % of base) : 27889.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
          44 (2.44 % of base) : 25426.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          44 (2.81 % of base) : 56748.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier1)
          36 (1.03 % of base) : 53548.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          36 (9.89 % of base) : 55002.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          36 (4.95 % of base) : 19927.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
          36 (1.15 % of base) : 6186.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 53971.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -136 (-3.65 % of base) : 17223.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
        -112 (-4.83 % of base) : 53549.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Tier0)
        -112 (-3.98 % of base) : 28079.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
         -88 (-0.98 % of base) : 36312.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
         -84 (-2.88 % of base) : 35208.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
         -76 (-4.34 % of base) : 52795.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -68 (-0.21 % of base) : 23460.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-0.82 % of base) : 4220.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0)
         -60 (-4.98 % of base) : 29066.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-1.73 % of base) : 36310.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -56 (-3.74 % of base) : 48806.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.79 % of base) : 35211.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -56 (-1.35 % of base) : 43271.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-3.23 % of base) : 50546.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-2.56 % of base) : 52372.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int (Tier0)
         -52 (-3.28 % of base) : 62050.dasm - System.SpanHelpers:LastIndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-4.26 % of base) : 6708.dasm - System.Text.Json.JsonWriterHelper:EscapeNextChars(ushort,System.Span`1[ushort],byref) (Tier0)
         -48 (-4.18 % of base) : 29070.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1)
         -48 (-1.35 % of base) : 552.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier0)

Top method regressions (percentages):
          20 (33.33 % of base) : 47624.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (27.78 % of base) : 44295.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          20 (21.74 % of base) : 42776.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (20.83 % of base) : 42726.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (20.83 % of base) : 19926.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          20 (17.24 % of base) : 54667.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (14.29 % of base) : 24734.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
           8 (14.29 % of base) : 28861.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
          16 (14.29 % of base) : 10027.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1)
          20 (13.89 % of base) : 42799.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
          20 (13.51 % of base) : 29739.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:GetHashCode():int:this (Tier1)
          20 (13.51 % of base) : 62093.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          12 (12.50 % of base) : 42857.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
          16 (12.12 % of base) : 10026.dasm - System.Random+Net5CompatSeedImpl:NextBytes(ubyte[]):this (Tier1)
          12 (11.11 % of base) : 18685.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
          20 (11.11 % of base) : 36279.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1)
          28 (10.77 % of base) : 61549.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
          12 (10.71 % of base) : 55012.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
          16 (10.00 % of base) : 30752.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
          12 (10.00 % of base) : 26410.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 25297.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -32 (-7.69 % of base) : 8215.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 25296.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -24 (-6.67 % of base) : 16319.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -16 (-6.56 % of base) : 16322.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
         -40 (-6.49 % of base) : 25298.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Tier0)
         -12 (-6.00 % of base) : 16331.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier1)
         -28 (-5.98 % of base) : 26219.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier0)
         -20 (-5.68 % of base) : 45677.dasm - System.Reflection.MethodBaseInvoker:CopyBack(System.Object[],System.Span`1[System.Object],System.Span`1[ubyte]):this (Tier1)
         -24 (-5.56 % of base) : 2518.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
         -28 (-5.43 % of base) : 8213.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
          -8 (-5.13 % of base) : 23235.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
         -36 (-5.06 % of base) : 10040.dasm - System.Numerics.BigIntegerCalculator:SubtractCore(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier0)
          -8 (-5.00 % of base) : 29069.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)
         -44 (-5.00 % of base) : 63012.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0)
         -60 (-4.98 % of base) : 29066.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -24 (-4.96 % of base) : 53759.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier0)
         -16 (-4.94 % of base) : 38742.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
         -32 (-4.91 % of base) : 8217.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon]) (Tier0)
          -8 (-4.88 % of base) : 61734.dasm - NumericSortJagged:NumSift(int[],int,int) (Tier1)


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 508521576 (overridden on cmd)
Total bytes of diff: 508687712 (overridden on cmd)
Total bytes of delta: 166136 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         268 : 155789.dasm (71.28 % of base)
         268 : 152119.dasm (71.28 % of base)
         232 : 175162.dasm (54.72 % of base)
         216 : 186431.dasm (4.81 % of base)
         196 : 203131.dasm (5.49 % of base)
         160 : 201507.dasm (8.51 % of base)
         160 : 466389.dasm (7.81 % of base)
         148 : 466484.dasm (5.94 % of base)
         128 : 466416.dasm (5.42 % of base)
         128 : 466382.dasm (5.61 % of base)
         128 : 466421.dasm (5.45 % of base)
         124 : 616844.dasm (1.00 % of base)
         120 : 466386.dasm (6.22 % of base)
         116 : 466388.dasm (5.10 % of base)
         112 : 203385.dasm (7.24 % of base)
         100 : 617294.dasm (2.93 % of base)
          96 : 466479.dasm (4.56 % of base)
          96 : 466483.dasm (4.56 % of base)
          88 : 236898.dasm (2.89 % of base)
          88 : 237134.dasm (2.89 % of base)

Top file improvements (bytes):
        -164 : 466356.dasm (-4.98 % of base)
        -156 : 466118.dasm (-7.62 % of base)
        -136 : 203087.dasm (-1.25 % of base)
        -104 : 466647.dasm (-3.21 % of base)
        -100 : 21306.dasm (-6.02 % of base)
        -100 : 185409.dasm (-3.37 % of base)
         -88 : 203029.dasm (-0.98 % of base)
         -80 : 312695.dasm (-5.35 % of base)
         -80 : 466128.dasm (-1.61 % of base)
         -60 : 342035.dasm (-3.11 % of base)
         -60 : 312821.dasm (-7.94 % of base)
         -56 : 198456.dasm (-1.33 % of base)
         -56 : 513628.dasm (-5.22 % of base)
         -56 : 513633.dasm (-5.22 % of base)
         -56 : 618061.dasm (-1.44 % of base)
         -56 : 201577.dasm (-1.79 % of base)
         -56 : 614215.dasm (-1.44 % of base)
         -52 : 294031.dasm (-1.45 % of base)
         -48 : 201506.dasm (-4.18 % of base)
         -48 : 618709.dasm (-2.94 % of base)

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

Top method regressions (bytes):
         268 (71.28 % of base) : 155789.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 152119.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 175162.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
         216 (4.81 % of base) : 186431.dasm - VectorTest:TestEntryPoint():int (FullOpts)
         196 (5.49 % of base) : 203131.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 201507.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         160 (7.81 % of base) : 466389.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (5.94 % of base) : 466484.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1)
         128 (5.61 % of base) : 466382.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 466416.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         128 (5.45 % of base) : 466421.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (1.00 % of base) : 616844.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         120 (6.22 % of base) : 466386.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         116 (5.10 % of base) : 466388.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         112 (7.24 % of base) : 203385.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         100 (2.93 % of base) : 617294.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
          96 (4.56 % of base) : 466479.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
          96 (4.56 % of base) : 466483.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
          88 (2.89 % of base) : 236898.dasm - plainarr:gaussj(double[,],int,double[,],int) (FullOpts)
          88 (2.89 % of base) : 237134.dasm - structarr:gaussj(MatrixStruct,int,MatrixStruct,int) (FullOpts)

Top method improvements (bytes):
        -164 (-4.98 % of base) : 466356.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -156 (-7.62 % of base) : 466118.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -136 (-1.25 % of base) : 203087.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -104 (-3.21 % of base) : 466647.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -100 (-6.02 % of base) : 21306.dasm - StrAccess1:Run(System.String):int (FullOpts)
        -100 (-3.37 % of base) : 185409.dasm - Test:TestEntryPoint():int (FullOpts)
         -88 (-0.98 % of base) : 203029.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -80 (-5.35 % of base) : 312695.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -80 (-1.61 % of base) : 466128.dasm - NumericSortJagged:Run():double:this (Tier1)
         -60 (-7.94 % of base) : 312821.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:PickPivotAndPartition(System.Span`1[uint],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-3.11 % of base) : 342035.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Instrumented Tier1)
         -56 (-5.22 % of base) : 513628.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this (Tier1)
         -56 (-5.22 % of base) : 513633.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this (Tier1)
         -56 (-1.44 % of base) : 618061.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (Tier1)
         -56 (-1.44 % of base) : 614215.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (Tier1)
         -56 (-1.79 % of base) : 201577.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 198456.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-1.45 % of base) : 294031.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (FullOpts)
         -48 (-4.18 % of base) : 201506.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -48 (-2.94 % of base) : 618709.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)

Top method regressions (percentages):
         268 (71.28 % of base) : 155789.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 152119.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 175162.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
          20 (45.45 % of base) : 203734.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
          24 (40.00 % of base) : 202864.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 202883.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 252635.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
          20 (38.46 % of base) : 252636.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
          20 (33.33 % of base) : 216264.dasm - CreateSpanTest:Main():int (FullOpts)
          20 (33.33 % of base) : 202867.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 202870.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 202886.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          24 (30.00 % of base) : 585302.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (27.78 % of base) : 202876.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 200261.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 202873.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          48 (23.53 % of base) : 201637.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
          20 (21.74 % of base) : 198194.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 245657.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
          20 (20.83 % of base) : 313312.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)

Top method improvements (percentages):
          -4 (-11.11 % of base) : 20158.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)
          -8 (-11.11 % of base) : 237378.dasm - Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
          -8 (-11.11 % of base) : 237457.dasm - Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
          -4 (-10.00 % of base) : 511445.dasm - Test_unsafe_0.TestApp:test_56(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 498244.dasm - Test_unsafe_0.TestApp:test_77(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 237431.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 245353.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 237433.dasm - Test_unsafe_4.TestApp:test_389(ulong,long):long (FullOpts)
         -16 (-9.76 % of base) : 615607.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 614945.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 618423.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 615201.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 614946.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.Reflection.Metadata.EntityHandle,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
          -4 (-9.09 % of base) : 237347.dasm - Test_unsafe_0.TestApp:test_140(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 237384.dasm - Test_unsafe_2.TestApp:test_23(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 498367.dasm - Test_unsafe_2.TestApp:test_58(ulong,long):long (Tier0)
          -4 (-9.09 % of base) : 237402.dasm - Test_unsafe_3.TestApp:test_101(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 237441.dasm - Test_unsafe_5.TestApp:test_257(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 237465.dasm - Test_unsafe_6.TestApp:test_370(ulong,long):long (FullOpts)
          -8 (-9.09 % of base) : 228620.dasm - TestApp:test_2_12(long):long (FullOpts)


libraries.crossgen2.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55834212 (overridden on cmd)
Total bytes of diff: 55874780 (overridden on cmd)
Total bytes of delta: 40568 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         436 : 177457.dasm (1.60 % of base)
         144 : 178426.dasm (3.34 % of base)
         124 : 211132.dasm (15.98 % of base)
         112 : 178142.dasm (3.50 % of base)
          96 : 102175.dasm (2.08 % of base)
          96 : 219598.dasm (9.64 % of base)
          96 : 227309.dasm (9.64 % of base)
          88 : 142143.dasm (2.93 % of base)
          88 : 191242.dasm (13.66 % of base)
          88 : 9436.dasm (13.66 % of base)
          84 : 212933.dasm (5.36 % of base)
          84 : 212934.dasm (5.32 % of base)
          84 : 34998.dasm (5.17 % of base)
          76 : 84027.dasm (2.98 % of base)
          72 : 174.dasm (9.23 % of base)
          72 : 140437.dasm (6.64 % of base)
          72 : 145007.dasm (2.53 % of base)
          72 : 183026.dasm (9.23 % of base)
          72 : 53741.dasm (1.47 % of base)
          72 : 81848.dasm (2.10 % of base)

Top file improvements (bytes):
        -108 : 141930.dasm (-2.56 % of base)
        -100 : 151640.dasm (-4.05 % of base)
        -100 : 31895.dasm (-2.77 % of base)
        -100 : 152047.dasm (-2.65 % of base)
         -92 : 33374.dasm (-79.31 % of base)
         -92 : 33603.dasm (-79.31 % of base)
         -92 : 33719.dasm (-79.31 % of base)
         -88 : 140153.dasm (-0.93 % of base)
         -80 : 138698.dasm (-1.57 % of base)
         -80 : 140765.dasm (-1.12 % of base)
         -76 : 45827.dasm (-4.02 % of base)
         -64 : 141103.dasm (-1.59 % of base)
         -64 : 36575.dasm (-16.67 % of base)
         -64 : 150896.dasm (-8.60 % of base)
         -64 : 177258.dasm (-2.41 % of base)
         -60 : 141145.dasm (-1.53 % of base)
         -60 : 12723.dasm (-4.03 % of base)
         -60 : 194424.dasm (-4.03 % of base)
         -60 : 197304.dasm (-4.03 % of base)
         -56 : 140513.dasm (-0.76 % of base)

89 total files with Code Size differences (35 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         436 (1.60 % of base) : 177457.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         144 (3.34 % of base) : 178426.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         124 (15.98 % of base) : 211132.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         112 (3.50 % of base) : 178142.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
          96 (2.08 % of base) : 102175.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
          96 (9.64 % of base) : 219598.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          96 (9.64 % of base) : 227309.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          88 (13.66 % of base) : 191242.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (13.66 % of base) : 9436.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (2.93 % of base) : 142143.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
          84 (5.36 % of base) : 212933.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.32 % of base) : 212934.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.17 % of base) : 34998.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          76 (2.98 % of base) : 84027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          72 (1.47 % of base) : 53741.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          72 (2.10 % of base) : 81848.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
          72 (2.53 % of base) : 145007.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          72 (9.23 % of base) : 174.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          72 (9.23 % of base) : 183026.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          72 (6.64 % of base) : 140437.dasm - System.Data.ProviderBase.SchemaMapping:ApplyToDataRow(System.Data.DataRow):this (FullOpts)

Top method improvements (bytes):
        -108 (-2.56 % of base) : 141930.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
        -100 (-4.05 % of base) : 151640.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -100 (-2.65 % of base) : 152047.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.77 % of base) : 31895.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -92 (-79.31 % of base) : 33603.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 33374.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 33719.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -88 (-0.93 % of base) : 140153.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -80 (-1.57 % of base) : 138698.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
         -80 (-1.12 % of base) : 140765.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-4.02 % of base) : 45827.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:partitionIntoTwoUsingKeys[System.__Canon,System.__Canon](System.__Canon[],System.ArraySegment`1[System.__Canon]):System.Tuple`2[System.ArraySegment`1[System.__Canon],System.ArraySegment`1[System.__Canon]] (FullOpts)
         -64 (-2.41 % of base) : 177258.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
         -64 (-16.67 % of base) : 36575.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -64 (-1.59 % of base) : 141103.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-8.60 % of base) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -60 (-4.03 % of base) : 12723.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-4.03 % of base) : 194424.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-4.03 % of base) : 197304.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-1.53 % of base) : 141145.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-0.76 % of base) : 140513.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)

Top method regressions (percentages):
          32 (57.14 % of base) : 211701.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 239.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 183084.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 151197.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 162432.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (50.00 % of base) : 135535.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          32 (47.06 % of base) : 184228.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 1414.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 129229.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          32 (44.44 % of base) : 161055.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          36 (42.86 % of base) : 183170.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 330.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 204996.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          52 (38.24 % of base) : 176291.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          32 (34.78 % of base) : 226928.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
          36 (34.62 % of base) : 185201.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          36 (34.62 % of base) : 2523.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          32 (33.33 % of base) : 226.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          32 (33.33 % of base) : 183073.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          32 (32.00 % of base) : 211112.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -92 (-79.31 % of base) : 33603.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 33374.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 33719.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -64 (-16.67 % of base) : 36575.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -32 (-13.33 % of base) : 174524.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
         -64 (-8.60 % of base) : 150896.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -16 (-8.33 % of base) : 186954.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -16 (-8.33 % of base) : 4420.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -52 (-8.18 % of base) : 30503.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-7.80 % of base) : 30502.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
          -8 (-7.69 % of base) : 208737.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-7.69 % of base) : 208738.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-7.69 % of base) : 208580.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.69 % of base) : 208605.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
          -4 (-7.69 % of base) : 31123.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
         -52 (-7.43 % of base) : 162119.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -52 (-7.14 % of base) : 162118.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -52 (-7.14 % of base) : 150895.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
         -16 (-6.45 % of base) : 152038.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:HasBound(int):ubyte:this (FullOpts)
         -32 (-6.35 % of base) : 35567.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)


libraries.pmi.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 76274408 (overridden on cmd)
Total bytes of diff: 76325092 (overridden on cmd)
Total bytes of delta: 50684 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1404 : 6881.dasm (81.25 % of base)
         776 : 6606.dasm (97.00 % of base)
         404 : 6314.dasm (100.00 % of base)
         200 : 7151.dasm (98.04 % of base)
         156 : 134231.dasm (2.80 % of base)
         132 : 200043.dasm (3.74 % of base)
         128 : 211540.dasm (2.10 % of base)
         124 : 255388.dasm (9.90 % of base)
         120 : 119745.dasm (3.35 % of base)
         108 : 4344.dasm (65.85 % of base)
         100 : 211526.dasm (0.34 % of base)
          92 : 113844.dasm (3.19 % of base)
          84 : 173106.dasm (2.09 % of base)
          84 : 198572.dasm (3.07 % of base)
          80 : 118831.dasm (4.99 % of base)
          80 : 253423.dasm (7.91 % of base)
          80 : 259067.dasm (7.91 % of base)
          76 : 137039.dasm (2.67 % of base)
          76 : 137300.dasm (1.43 % of base)
          76 : 115462.dasm (3.27 % of base)

Top file improvements (bytes):
        -152 : 211533.dasm (-5.40 % of base)
        -120 : 55790.dasm (-2.81 % of base)
        -104 : 111337.dasm (-1.86 % of base)
         -84 : 132877.dasm (-2.40 % of base)
         -84 : 182908.dasm (-1.18 % of base)
         -80 : 141653.dasm (-2.55 % of base)
         -80 : 152156.dasm (-5.12 % of base)
         -80 : 180693.dasm (-0.82 % of base)
         -76 : 210802.dasm (-2.82 % of base)
         -64 : 133289.dasm (-2.51 % of base)
         -64 : 182852.dasm (-1.59 % of base)
         -64 : 55822.dasm (-1.02 % of base)
         -60 : 133931.dasm (-2.34 % of base)
         -60 : 137405.dasm (-1.21 % of base)
         -60 : 182913.dasm (-1.53 % of base)
         -56 : 182847.dasm (-0.76 % of base)
         -56 : 52014.dasm (-1.32 % of base)
         -52 : 182851.dasm (-1.00 % of base)
         -52 : 40586.dasm (-3.71 % of base)
         -52 : 88008.dasm (-1.45 % of base)

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

Top method regressions (bytes):
        1404 (81.25 % of base) : 6881.dasm - System.Runtime.Intrinsics.Vector512:Divide[short](System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
         776 (97.00 % of base) : 6606.dasm - System.Runtime.Intrinsics.Vector256:Divide[short](System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         404 (100.00 % of base) : 6314.dasm - System.Runtime.Intrinsics.Vector128:Divide[short](System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         200 (98.04 % of base) : 7151.dasm - System.Runtime.Intrinsics.Vector64:Divide[short](System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         156 (2.80 % of base) : 134231.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         132 (3.74 % of base) : 200043.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
         128 (2.10 % of base) : 211540.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         124 (9.90 % of base) : 255388.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         120 (3.35 % of base) : 119745.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
         108 (65.85 % of base) : 4344.dasm - System.Numerics.Vector:Dot[int](System.Numerics.Vector`1[int],System.Numerics.Vector`1[int]):int (FullOpts)
         100 (0.34 % of base) : 211526.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
          92 (3.19 % of base) : 113844.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          84 (2.09 % of base) : 173106.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
          84 (3.07 % of base) : 198572.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
          80 (4.99 % of base) : 118831.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
          80 (7.91 % of base) : 253423.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          80 (7.91 % of base) : 259067.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          76 (2.67 % of base) : 137039.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildJoinSelector(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          76 (1.43 % of base) : 137300.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          76 (3.27 % of base) : 115462.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)

Top method improvements (bytes):
        -152 (-5.40 % of base) : 211533.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -120 (-2.81 % of base) : 55790.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -104 (-1.86 % of base) : 111337.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
         -84 (-2.40 % of base) : 132877.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -84 (-1.18 % of base) : 182908.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-5.12 % of base) : 152156.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -80 (-2.55 % of base) : 141653.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -80 (-0.82 % of base) : 180693.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -76 (-2.82 % of base) : 210802.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -64 (-1.02 % of base) : 55822.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
         -64 (-2.51 % of base) : 133289.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         -64 (-1.59 % of base) : 182852.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-1.21 % of base) : 137405.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -60 (-2.34 % of base) : 133931.dasm - Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter:UseTwiceLateInvocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundLateInvocation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedLocal]):Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter+Result (FullOpts)
         -60 (-1.53 % of base) : 182913.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.32 % of base) : 52014.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -56 (-0.76 % of base) : 182847.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -52 (-1.45 % of base) : 88008.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (FullOpts)
         -52 (-3.71 % of base) : 40586.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:partitionIntoTwoUsingKeys[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.ArraySegment`1[System.Nullable`1[int]]):System.Tuple`2[System.ArraySegment`1[System.Nullable`1[int]],System.ArraySegment`1[System.Nullable`1[int]]] (FullOpts)
         -52 (-1.00 % of base) : 182851.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)

Top method regressions (percentages):
         404 (100.00 % of base) : 6314.dasm - System.Runtime.Intrinsics.Vector128:Divide[short](System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         200 (98.04 % of base) : 7151.dasm - System.Runtime.Intrinsics.Vector64:Divide[short](System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         776 (97.00 % of base) : 6606.dasm - System.Runtime.Intrinsics.Vector256:Divide[short](System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
        1404 (81.25 % of base) : 6881.dasm - System.Runtime.Intrinsics.Vector512:Divide[short](System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
         108 (65.85 % of base) : 4344.dasm - System.Numerics.Vector:Dot[int](System.Numerics.Vector`1[int],System.Numerics.Vector`1[int]):int (FullOpts)
          52 (41.94 % of base) : 177575.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (35.71 % of base) : 265016.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 13332.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (33.33 % of base) : 212907.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (33.33 % of base) : 234179.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 288216.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (29.41 % of base) : 15622.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 215005.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 148266.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          20 (29.41 % of base) : 110456.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          28 (29.17 % of base) : 175312.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
          24 (28.57 % of base) : 13975.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          24 (28.57 % of base) : 213410.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          24 (28.57 % of base) : 241356.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          20 (27.78 % of base) : 203347.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

Top method improvements (percentages):
         -36 (-16.07 % of base) : 158098.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -32 (-14.29 % of base) : 165478.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
          -8 (-9.09 % of base) : 246195.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
          -8 (-8.70 % of base) : 271136.dasm - System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)
          -8 (-8.70 % of base) : 271137.dasm - System.Collections.Generic.SegmentedList`1[double]:set_Item(long,double):this (FullOpts)
          -8 (-8.70 % of base) : 271126.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-8.70 % of base) : 271127.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-8.70 % of base) : 271156.dasm - System.Collections.Generic.SegmentedList`1[long]:get_Item(long):long:this (FullOpts)
          -8 (-8.70 % of base) : 271157.dasm - System.Collections.Generic.SegmentedList`1[long]:set_Item(long,long):this (FullOpts)
          -8 (-8.70 % of base) : 271116.dasm - System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)
          -8 (-8.70 % of base) : 271117.dasm - System.Collections.Generic.SegmentedList`1[short]:set_Item(long,short):this (FullOpts)
          -8 (-8.70 % of base) : 271046.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.96 % of base) : 271072.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
         -44 (-7.19 % of base) : 233618.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-6.67 % of base) : 287735.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
          -8 (-6.45 % of base) : 40648.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Map@2060-2[System.__Canon,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
         -12 (-6.25 % of base) : 141013.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
          -8 (-6.25 % of base) : 40652.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+MapIndexed@2074-2[System.__Canon,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
          -4 (-5.88 % of base) : 271049.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:IsValidIndex(long):ubyte:this (FullOpts)
          -4 (-5.88 % of base) : 271087.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:IsValidIndex(long):ubyte:this (FullOpts)


libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 394024440 (overridden on cmd)
Total bytes of diff: 394352104 (overridden on cmd)
Total bytes of delta: 327664 (0.08 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         472 : 419329.dasm (14.97 % of base)
         364 : 51141.dasm (2.98 % of base)
         284 : 83773.dasm (2.37 % of base)
         280 : 424567.dasm (2.89 % of base)
         276 : 425525.dasm (2.90 % of base)
         276 : 424429.dasm (2.84 % of base)
         272 : 416266.dasm (2.80 % of base)
         264 : 672717.dasm (2.20 % of base)
         264 : 427085.dasm (2.78 % of base)
         252 : 426324.dasm (2.77 % of base)
         248 : 181808.dasm (4.08 % of base)
         224 : 74447.dasm (8.83 % of base)
         220 : 433136.dasm (2.26 % of base)
         220 : 435492.dasm (2.25 % of base)
         220 : 424412.dasm (3.18 % of base)
         220 : 425288.dasm (3.16 % of base)
         220 : 425506.dasm (3.18 % of base)
         216 : 425278.dasm (2.25 % of base)
         216 : 425549.dasm (2.24 % of base)
         216 : 426216.dasm (2.34 % of base)

Top file improvements (bytes):
        -540 : 692987.dasm (-0.27 % of base)
        -348 : 474633.dasm (-1.55 % of base)
        -220 : 641778.dasm (-3.44 % of base)
        -188 : 458013.dasm (-3.21 % of base)
        -176 : 432418.dasm (-1.90 % of base)
        -172 : 287091.dasm (-6.85 % of base)
        -168 : 270143.dasm (-6.95 % of base)
        -152 : 78115.dasm (-2.61 % of base)
        -148 : 664626.dasm (-4.60 % of base)
        -148 : 48090.dasm (-2.70 % of base)
        -144 : 500914.dasm (-1.08 % of base)
        -140 : 668150.dasm (-5.98 % of base)
        -124 : 435433.dasm (-1.14 % of base)
        -124 : 432925.dasm (-1.15 % of base)
        -124 : 348356.dasm (-5.42 % of base)
        -124 : 458029.dasm (-2.35 % of base)
        -116 : 435257.dasm (-1.13 % of base)
        -116 : 432087.dasm (-1.12 % of base)
        -112 : 367761.dasm (-3.87 % of base)
        -112 : 367753.dasm (-3.87 % of base)

100 total files with Code Size differences (56 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         472 (14.97 % of base) : 419329.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1+<>c__DisplayClass85_0[long]:<ScalarSpanDestination_InPlace>b__0(int):this (Tier1)
         364 (2.98 % of base) : 51141.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         284 (2.37 % of base) : 83773.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         280 (2.89 % of base) : 424567.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         276 (2.90 % of base) : 425525.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<AddMultiply_ThreeTensors>b__113_0(int):this (Tier1)
         276 (2.84 % of base) : 424429.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Runtime.InteropServices.NFloat]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         272 (2.80 % of base) : 416266.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         264 (2.78 % of base) : 427085.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<AddMultiply_ThreeTensors>b__113_0(int):this (Tier1)
         264 (2.20 % of base) : 672717.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         252 (2.77 % of base) : 426324.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[double]:<AddMultiply_ThreeTensors>b__113_0(int):this (Tier1)
         248 (4.08 % of base) : 181808.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         224 (8.83 % of base) : 74447.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (Tier0-FullOpts)
         220 (3.18 % of base) : 425506.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<Add_TwoTensors>b__104_0(int):this (Tier1)
         220 (3.16 % of base) : 425288.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<MaxMagnitude_TwoTensors>b__198_0(int):this (Tier1)
         220 (2.26 % of base) : 433136.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         220 (3.18 % of base) : 424412.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<Subtract_TwoTensors>b__276_0(int):this (Tier1)
         220 (2.25 % of base) : 435492.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Runtime.InteropServices.NFloat]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         216 (2.34 % of base) : 426216.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[double]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         216 (2.25 % of base) : 425278.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<Max_TwoTensors_SpecialValues>b__189_0(int):this (Tier1)
         216 (2.24 % of base) : 425549.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.Half]:<MaxMagnitude_TwoTensors_SpecialValues>b__200_0(int):this (Tier1)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 692987.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2219_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -348 (-1.55 % of base) : 474633.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
        -220 (-3.44 % of base) : 641778.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:PopulateParameterInfoValues(System.Text.Json.Serialization.Metadata.JsonTypeInfo) (Tier1)
        -188 (-3.21 % of base) : 458013.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:GetExtensionMethod(System.String,System.String,int[],byref):System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:this (Tier1)
        -176 (-1.90 % of base) : 432418.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass60_0[float]:<SpanSpanSpanDestination_ThrowsForTooShortDestination>b__0(int):this (Tier1)
        -172 (-6.85 % of base) : 287091.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (Tier1)
        -168 (-6.95 % of base) : 270143.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)
        -152 (-2.61 % of base) : 78115.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
        -148 (-4.60 % of base) : 664626.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (Tier1)
        -148 (-2.70 % of base) : 48090.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
        -144 (-1.08 % of base) : 500914.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -140 (-5.98 % of base) : 668150.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)
        -124 (-5.42 % of base) : 348356.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)
        -124 (-1.15 % of base) : 432925.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Half]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -124 (-1.14 % of base) : 435433.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -124 (-2.35 % of base) : 458029.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:.ctor(System.Object,System.Reflection.MethodInfo):this (Tier1)
        -116 (-1.13 % of base) : 435257.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[double]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -116 (-1.12 % of base) : 432087.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[float]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
        -112 (-3.87 % of base) : 367761.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 367753.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)

Top method regressions (percentages):
          52 (41.94 % of base) : 459608.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
          20 (41.67 % of base) : 358408.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
          20 (38.46 % of base) : 354025.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
          20 (38.46 % of base) : 426474.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
          20 (38.46 % of base) : 429486.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
          16 (36.36 % of base) : 414880.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
          20 (35.71 % of base) : 354067.dasm - System.Linq.Enumerable:Sum[float,double](System.ReadOnlySpan`1[float]):double (Tier1)
          28 (33.33 % of base) : 715089.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (33.33 % of base) : 676635.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 87737.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 57766.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 180731.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (29.41 % of base) : 695465.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (27.78 % of base) : 179183.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          20 (27.78 % of base) : 688872.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          24 (27.27 % of base) : 388639.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 689378.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          20 (25.00 % of base) : 589574.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
          16 (23.53 % of base) : 353445.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (Tier1)
          32 (23.53 % of base) : 478897.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)

Top method improvements (percentages):
          -8 (-15.38 % of base) : 419861.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[long,uint,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[long,uint]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 432505.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[uint,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[uint,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 419446.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[uint,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[uint,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 432542.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[uint,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[uint,ulong]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 433382.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ulong,int,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ulong,int]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 418261.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,int,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,int]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 431673.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,int,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,int]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417786.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,int,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,int]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417846.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417885.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 432057.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417833.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417877.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 432021.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,long,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,long]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 418291.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,uint,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,uint]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417867.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,ulong]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417907.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertSaturatingFallbackOperator`2[ushort,ulong]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417854.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,ulong]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 417897.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,ulong]](byref,byref,ulong) (Tier1)
          -8 (-15.38 % of base) : 432062.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[ushort,ulong,System.Numerics.Tensors.TensorPrimitives+ConvertTruncatingFallbackOperator`2[ushort,ulong]](byref,byref,ulong) (Tier1)


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 164978292 (overridden on cmd)
Total bytes of diff: 165035732 (overridden on cmd)
Total bytes of delta: 57440 (0.03 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         224 : 19004.dasm (9.00 % of base)
         156 : 19010.dasm (6.85 % of base)
         136 : 18971.dasm (6.84 % of base)
         136 : 175940.dasm (1.10 % of base)
         136 : 263620.dasm (1.16 % of base)
         132 : 175938.dasm (1.26 % of base)
         128 : 59122.dasm (2.09 % of base)
         128 : 59123.dasm (0.44 % of base)
         128 : 175941.dasm (1.25 % of base)
         128 : 175942.dasm (1.25 % of base)
         124 : 97024.dasm (11.57 % of base)
          96 : 77267.dasm (4.55 % of base)
          96 : 50109.dasm (1.67 % of base)
          96 : 53924.dasm (1.52 % of base)
          88 : 44029.dasm (1.53 % of base)
          88 : 171087.dasm (3.43 % of base)
          84 : 293448.dasm (3.37 % of base)
          84 : 151604.dasm (3.07 % of base)
          80 : 145543.dasm (7.91 % of base)
          80 : 145550.dasm (7.91 % of base)

Top file improvements (bytes):
        -776 : 174556.dasm (-4.33 % of base)
        -540 : 276893.dasm (-0.27 % of base)
        -276 : 91930.dasm (-2.16 % of base)
        -112 : 6617.dasm (-1.91 % of base)
         -92 : 185261.dasm (-1.67 % of base)
         -88 : 91647.dasm (-0.92 % of base)
         -84 : 89935.dasm (-1.18 % of base)
         -80 : 185302.dasm (-1.93 % of base)
         -80 : 24560.dasm (-2.62 % of base)
         -80 : 9818.dasm (-1.01 % of base)
         -76 : 118331.dasm (-1.54 % of base)
         -76 : 268122.dasm (-1.53 % of base)
         -76 : 59638.dasm (-2.84 % of base)
         -76 : 159586.dasm (-3.18 % of base)
         -72 : 183572.dasm (-3.27 % of base)
         -72 : 204337.dasm (-1.86 % of base)
         -68 : 300583.dasm (-1.59 % of base)
         -64 : 90324.dasm (-1.59 % of base)
         -60 : 43397.dasm (-2.11 % of base)
         -60 : 49561.dasm (-2.11 % of base)

97 total files with Code Size differences (40 improved, 57 regressed), 20 unchanged.

Top method regressions (bytes):
         224 (9.00 % of base) : 19004.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
         156 (6.85 % of base) : 19010.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
         136 (6.84 % of base) : 18971.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
         136 (1.16 % of base) : 263620.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
         136 (1.10 % of base) : 175940.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
         132 (1.26 % of base) : 175938.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
         128 (0.44 % of base) : 59123.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         128 (2.09 % of base) : 59122.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         128 (1.25 % of base) : 175941.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
         128 (1.25 % of base) : 175942.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)
         124 (11.57 % of base) : 97024.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
          96 (1.52 % of base) : 53924.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          96 (1.67 % of base) : 50109.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          96 (4.55 % of base) : 77267.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
          88 (1.53 % of base) : 44029.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          88 (3.43 % of base) : 171087.dasm - System.Xml.XmlWriterTests.XmlWriterDisposeTests:DisposeFlushesAndDisposesOutputStream() (FullOpts)
          84 (3.07 % of base) : 151604.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
          84 (3.37 % of base) : 293448.dasm - System.Text.RegularExpressions.Symbolic.BDDRangeConverter:ToRangesFromOrdinal(System.Text.RegularExpressions.Symbolic.BDD):System.ValueTuple`2[uint,uint][]:this (FullOpts)
          80 (7.91 % of base) : 145543.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          80 (7.91 % of base) : 145550.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)

Top method improvements (bytes):
        -776 (-4.33 % of base) : 174556.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        -540 (-0.27 % of base) : 276893.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2451_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -276 (-2.16 % of base) : 91930.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        -112 (-1.91 % of base) : 6617.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
         -92 (-1.67 % of base) : 185261.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
         -88 (-0.92 % of base) : 91647.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -84 (-1.18 % of base) : 89935.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-1.01 % of base) : 9818.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -80 (-2.62 % of base) : 24560.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -80 (-1.93 % of base) : 185302.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
         -76 (-2.84 % of base) : 59638.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -76 (-1.54 % of base) : 118331.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
         -76 (-3.18 % of base) : 159586.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -76 (-1.53 % of base) : 268122.dasm - System.Text.RegularExpressions.Tests.RegexMatchTests:<Match_Advanced>g__VerifyMatch|21_0(System.Text.RegularExpressions.Match,byref) (FullOpts)
         -72 (-3.27 % of base) : 183572.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
         -72 (-1.86 % of base) : 204337.dasm - System.Tests.ArraySegment_Tests:GetSetItem_InRange(System.ArraySegment`1[int]) (FullOpts)
         -68 (-1.59 % of base) : 300583.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -64 (-1.59 % of base) : 90324.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-2.11 % of base) : 43397.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -60 (-2.11 % of base) : 49561.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)

Top method regressions (percentages):
          20 (45.45 % of base) : 225040.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
          52 (41.94 % of base) : 129025.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (41.67 % of base) : 143550.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
          20 (41.67 % of base) : 157825.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (FullOpts)
          20 (38.46 % of base) : 134452.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 116907.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 178500.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 197883.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (33.33 % of base) : 196073.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (29.41 % of base) : 4353.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 195911.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          20 (29.41 % of base) : 267494.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 46469.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (26.67 % of base) : 89896.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (26.67 % of base) : 241491.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
          20 (25.00 % of base) : 230604.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (23.81 % of base) : 129325.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
          16 (23.53 % of base) : 134442.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
          20 (21.74 % of base) : 47658.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 48566.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -36 (-16.07 % of base) : 176255.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -16 (-11.43 % of base) : 130665.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
          -8 (-9.09 % of base) : 85524.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
         -16 (-7.27 % of base) : 11125.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
          -4 (-6.67 % of base) : 159539.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+AbsoluteOperator`1[System.Runtime.InteropServices.NFloat],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[System.Runtime.InteropServices.NFloat]](System.ReadOnlySpan`1[System.Runtime.InteropServices.NFloat]):System.Runtime.InteropServices.NFloat (FullOpts)
         -12 (-6.25 % of base) : 26615.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
          -4 (-6.25 % of base) : 159468.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[short,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[short],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[short]](System.ReadOnlySpan`1[short]):short (FullOpts)
          -4 (-6.25 % of base) : 159532.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+AbsoluteOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 158962.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 159314.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 159518.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
         -24 (-6.19 % of base) : 297798.dasm - System.Threading.Tasks.Tests.ParallelForTest:InvokeZetaWorkload(int):this (FullOpts)
         -36 (-5.77 % of base) : 178815.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -12 (-5.66 % of base) : 159731.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
          -4 (-5.56 % of base) : 138103.dasm - System.Linq.SingleLinkedNode`1[int]:Fill(System.Span`1[int]):this (FullOpts)
          -4 (-5.56 % of base) : 133931.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -8 (-5.56 % of base) : 186484.dasm - System.Tests.ConvertTestBase`1+<>c__DisplayClass4_0`1[long,System.__Canon]:<VerifyFromStringWithBaseThrows>b__0():System.Object:this (FullOpts)
          -8 (-5.56 % of base) : 267069.dasm - System.Text.RegularExpressions.Match:MatchIndex(int):int:this (FullOpts)
          -8 (-5.56 % of base) : 267070.dasm - System.Text.RegularExpressions.Match:MatchLength(int):int:this (FullOpts)
         -36 (-5.45 % of base) : 142843.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)


realworld.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15900008 (overridden on cmd)
Total bytes of diff: 15910520 (overridden on cmd)
Total bytes of delta: 10512 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         204 : 1847.dasm (5.59 % of base)
         180 : 13696.dasm (3.15 % of base)
         116 : 1809.dasm (8.63 % of base)
          80 : 30893.dasm (1.22 % of base)
          80 : 13595.dasm (4.04 % of base)
          72 : 33042.dasm (7.96 % of base)
          72 : 17822.dasm (6.21 % of base)
          68 : 19787.dasm (1.20 % of base)
          64 : 30879.dasm (3.22 % of base)
          60 : 13714.dasm (1.86 % of base)
          60 : 20822.dasm (2.13 % of base)
          60 : 14370.dasm (1.69 % of base)
          60 : 2326.dasm (6.02 % of base)
          56 : 13195.dasm (1.17 % of base)
          56 : 19626.dasm (1.98 % of base)
          52 : 14314.dasm (3.23 % of base)
          52 : 2004.dasm (1.93 % of base)
          52 : 25841.dasm (6.63 % of base)
          48 : 13235.dasm (2.61 % of base)
          48 : 23239.dasm (4.03 % of base)

Top file improvements (bytes):
        -136 : 13410.dasm (-3.65 % of base)
         -88 : 20974.dasm (-1.13 % of base)
         -84 : 16015.dasm (-1.50 % of base)
         -68 : 5532.dasm (-7.39 % of base)
         -64 : 19633.dasm (-1.87 % of base)
         -60 : 3867.dasm (-7.94 % of base)
         -60 : 6433.dasm (-8.47 % of base)
         -56 : 19184.dasm (-1.34 % of base)
         -52 : 1817.dasm (-6.74 % of base)
         -48 : 28291.dasm (-1.17 % of base)
         -44 : 14253.dasm (-1.42 % of base)
         -44 : 2777.dasm (-3.31 % of base)
         -44 : 1912.dasm (-5.76 % of base)
         -40 : 5094.dasm (-12.35 % of base)
         -36 : 645.dasm (-3.42 % of base)
         -36 : 12069.dasm (-0.67 % of base)
         -36 : 29045.dasm (-1.53 % of base)
         -32 : 338.dasm (-1.91 % of base)
         -32 : 5534.dasm (-8.00 % of base)
         -32 : 1946.dasm (-2.56 % of base)

85 total files with Code Size differences (31 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         204 (5.59 % of base) : 1847.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         180 (3.15 % of base) : 13696.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         116 (8.63 % of base) : 1809.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
          80 (4.04 % of base) : 13595.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
          80 (1.22 % of base) : 30893.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          72 (6.21 % of base) : 17822.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          72 (7.96 % of base) : 33042.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          68 (1.20 % of base) : 19787.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          64 (3.22 % of base) : 30879.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (2.13 % of base) : 20822.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (1.69 % of base) : 14370.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
          60 (1.86 % of base) : 13714.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
          60 (6.02 % of base) : 2326.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          56 (1.98 % of base) : 19626.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
          56 (1.17 % of base) : 13195.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
          52 (1.93 % of base) : 2004.dasm - DemoBenchmarks.ConvexCollisionTesterBenchmarks:Setup():this (FullOpts)
          52 (6.63 % of base) : 25841.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          52 (3.23 % of base) : 14314.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)
          48 (4.03 % of base) : 23239.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:CheckMethodConstraints(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (FullOpts)
          48 (2.61 % of base) : 13235.dasm - Microsoft.ML.Transforms.ColumnConcatenatingEstimator:CheckInputsAndMakeColumn(Microsoft.ML.SchemaShape,System.String,System.String[]):Microsoft.ML.SchemaShape+Column:this (FullOpts)

Top method improvements (bytes):
        -136 (-3.65 % of base) : 13410.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-1.13 % of base) : 20974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -84 (-1.50 % of base) : 16015.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
         -68 (-7.39 % of base) : 5532.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -64 (-1.87 % of base) : 19633.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
         -60 (-7.94 % of base) : 3867.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-8.47 % of base) : 6433.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -56 (-1.34 % of base) : 19184.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-6.74 % of base) : 1817.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -48 (-1.17 % of base) : 28291.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -44 (-5.76 % of base) : 1912.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -44 (-3.31 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -44 (-1.42 % of base) : 14253.dasm - System.Threading.Tasks.Parallel:Invoke(System.Threading.Tasks.ParallelOptions,System.Action[]) (FullOpts)
         -40 (-12.35 % of base) : 5094.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -36 (-1.53 % of base) : 29045.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
         -36 (-0.67 % of base) : 12069.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
         -36 (-3.42 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-2.56 % of base) : 1946.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact3NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact3NonconvexAccumulatedImpulses]:CopySleepingToActive(int,int,int,int,int,int,int,BepuPhysics.Bodies,BepuPhysics.Solver):this (FullOpts)
         -32 (-8.00 % of base) : 5534.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -32 (-1.91 % of base) : 338.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)

Top method regressions (percentages):
          20 (38.46 % of base) : 1306.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (31.25 % of base) : 13672.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
          20 (29.41 % of base) : 16247.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 28616.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (23.81 % of base) : 13491.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
          24 (23.08 % of base) : 16349.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          20 (21.74 % of base) : 16408.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 11717.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
          20 (20.83 % of base) : 18450.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          20 (20.83 % of base) : 13891.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
          20 (20.83 % of base) : 586.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          32 (19.05 % of base) : 15825.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          20 (17.86 % of base) : 2021.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          20 (17.86 % of base) : 1418.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          16 (15.38 % of base) : 16039.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
          28 (14.58 % of base) : 5772.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
          20 (13.89 % of base) : 19147.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
          20 (13.51 % of base) : 15299.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:GetHashCode():int:this (FullOpts)
          24 (12.50 % of base) : 16592.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
          12 (12.50 % of base) : 18452.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

Top method improvements (percentages):
         -40 (-12.35 % of base) : 5094.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -20 (-9.80 % of base) : 14239.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
         -20 (-9.43 % of base) : 6431.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -60 (-8.47 % of base) : 6433.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -32 (-8.00 % of base) : 5534.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -60 (-7.94 % of base) : 3867.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -68 (-7.39 % of base) : 5532.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -16 (-7.27 % of base) : 3869.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -52 (-6.74 % of base) : 1817.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -16 (-6.15 % of base) : 32788.dasm - System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction:Create(int,ubyte):System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction (FullOpts)
         -44 (-5.76 % of base) : 1912.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -16 (-5.33 % of base) : 1372.dasm - BepuPhysics.CollisionDetection.SweepTaskRegistry:Register(BepuPhysics.CollisionDetection.SweepTask):int:this (FullOpts)
         -20 (-5.26 % of base) : 13950.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
         -16 (-4.94 % of base) : 16576.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -16 (-4.21 % of base) : 9674.dasm - System.Collections.Generic.ArraySortHelper`2[System.ValueTuple`2[int,int],int]:SwapIfGreaterWithValues(System.Span`1[System.ValueTuple`2[int,int]],System.Span`1[int],System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,int]],int,int) (FullOpts)
        -136 (-3.65 % of base) : 13410.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -24 (-3.49 % of base) : 13360.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
         -36 (-3.42 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -44 (-3.31 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -12 (-3.06 % of base) : 248.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (FullOpts)


smoke_tests.nativeaot.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2829664 (overridden on cmd)
Total bytes of diff: 2833896 (overridden on cmd)
Total bytes of delta: 4232 (0.15 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          88 : 3305.dasm (1.80 % of base)
          88 : 18768.dasm (1.80 % of base)
          84 : 6710.dasm (6.71 % of base)
          80 : 4394.dasm (8.47 % of base)
          60 : 1819.dasm (12.00 % of base)
          60 : 18739.dasm (12.10 % of base)
          60 : 3214.dasm (6.47 % of base)
          52 : 5362.dasm (4.56 % of base)
          52 : 3823.dasm (3.64 % of base)
          48 : 1770.dasm (17.65 % of base)
          48 : 18910.dasm (2.94 % of base)
          48 : 4008.dasm (2.95 % of base)
          48 : 4573.dasm (2.80 % of base)
          44 : 3413.dasm (2.35 % of base)
          44 : 3987.dasm (4.70 % of base)
          40 : 17247.dasm (1.21 % of base)
          40 : 2352.dasm (4.03 % of base)
          36 : 3343.dasm (16.07 % of base)
          36 : 6713.dasm (6.00 % of base)
          32 : 2992.dasm (19.05 % of base)

Top file improvements (bytes):
         -52 : 18613.dasm (-2.77 % of base)
         -52 : 6494.dasm (-2.78 % of base)
         -44 : 6872.dasm (-9.32 % of base)
         -44 : 6880.dasm (-9.82 % of base)
         -40 : 6545.dasm (-0.45 % of base)
         -32 : 1240.dasm (-4.60 % of base)
         -32 : 1295.dasm (-4.60 % of base)
         -32 : 1190.dasm (-7.21 % of base)
         -28 : 7750.dasm (-7.14 % of base)
         -24 : 8822.dasm (-2.80 % of base)
         -16 : 12795.dasm (-9.09 % of base)
         -16 : 15683.dasm (-9.09 % of base)
         -16 : 2102.dasm (-2.20 % of base)
         -16 : 2478.dasm (-2.34 % of base)
         -16 : 4356.dasm (-1.34 % of base)
         -16 : 5720.dasm (-1.69 % of base)
         -16 : 12728.dasm (-9.09 % of base)
         -16 : 12796.dasm (-9.09 % of base)
         -16 : 1651.dasm (-4.40 % of base)
         -16 : 1694.dasm (-6.06 % of base)

81 total files with Code Size differences (31 improved, 50 regressed), 20 unchanged.

Top method regressions (bytes):
          88 (1.80 % of base) : 3305.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          88 (1.80 % of base) : 18768.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          84 (6.71 % of base) : 6710.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          80 (8.47 % of base) : 4394.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          60 (12.00 % of base) : 1819.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.10 % of base) : 18739.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (6.47 % of base) : 3214.dasm - System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
          52 (4.56 % of base) : 5362.dasm - Internal.Reflection.Core.Execution.ExecutionDomain:GetMethod(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):System.Reflection.MethodBase (FullOpts)
          52 (3.64 % of base) : 3823.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          48 (17.65 % of base) : 1770.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          48 (2.94 % of base) : 18910.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          48 (2.95 % of base) : 4008.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          48 (2.80 % of base) : 4573.dasm - System.Globalization.TimeSpanParse:TryParseByFormat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,byref):ubyte (FullOpts)
          44 (2.35 % of base) : 3413.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)
          44 (4.70 % of base) : 3987.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          40 (4.03 % of base) : 2352.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
          40 (1.21 % of base) : 17247.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
          36 (16.07 % of base) : 3343.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          36 (6.00 % of base) : 6713.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          32 (19.05 % of base) : 2992.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)

Top method improvements (bytes):
         -52 (-2.77 % of base) : 18613.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -52 (-2.78 % of base) : 6494.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -44 (-9.82 % of base) : 6880.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-9.32 % of base) : 6872.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -40 (-0.45 % of base) : 6545.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -32 (-4.60 % of base) : 1240.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
         -32 (-4.60 % of base) : 1295.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
         -32 (-7.21 % of base) : 1190.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -28 (-7.14 % of base) : 7750.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
         -24 (-2.80 % of base) : 8822.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
         -16 (-6.06 % of base) : 1694.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -16 (-2.20 % of base) : 2102.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -16 (-2.34 % of base) : 2478.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:Resize(int,ubyte):this (FullOpts)
         -16 (-4.40 % of base) : 1651.dasm - System.Globalization.CultureData:GetCalendar(ushort):System.Globalization.CalendarData:this (FullOpts)
         -16 (-1.52 % of base) : 2423.dasm - System.Globalization.InvariantModeCasing:IndexOfIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
         -16 (-9.09 % of base) : 12796.dasm - System.Numerics.Vector:GreaterThanAny[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 12795.dasm - System.Numerics.Vector:LessThanOrEqualAll[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 15683.dasm - System.Numerics.Vector`1[ushort]:op_Inequality(System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-1.69 % of base) : 5720.dasm - System.Reflection.Runtime.MethodInfos.RuntimeNamedMethodInfo`1[System.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon]:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
         -16 (-5.41 % of base) : 5146.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)

Top method regressions (percentages):
          32 (19.05 % of base) : 2992.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          48 (17.65 % of base) : 1770.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          20 (16.67 % of base) : 9817.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
          20 (16.13 % of base) : 7598.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
          36 (16.07 % of base) : 3343.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          16 (16.00 % of base) : 15272.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
          20 (14.71 % of base) : 4388.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
          20 (14.71 % of base) : 4407.dasm - System.IPv6AddressHelper:FindCompressionRange(System.ReadOnlySpan`1[ushort]):System.ValueTuple`2[int,int] (FullOpts)
           8 (14.29 % of base) : 15213.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
          12 (14.29 % of base) : 4294.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
          12 (13.04 % of base) : 2090.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          60 (12.10 % of base) : 18739.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.00 % of base) : 1819.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          20 (11.36 % of base) : 1469.dasm - System.Buffers.SharedArrayPoolStatics:TryGetInt32EnvironmentVariable(System.String,byref):ubyte (FullOpts)
          20 (11.36 % of base) : 4456.dasm - System.IPv4AddressHelper:ParseHostNumber(System.ReadOnlySpan`1[ushort],int,int):int (FullOpts)
          20 (10.87 % of base) : 1454.dasm - System.Buffers.ProbabilisticMap:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
          16 (10.81 % of base) : 9000.dasm - System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]:Fill(System.Collections.Generic.IList`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
          16 (10.53 % of base) : 8996.dasm - System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]:GetCount(ubyte,System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):int (FullOpts)
          20 (9.09 % of base) : 8997.dasm - System.Linq.Enumerable+WhereArrayIterator`1[System.__Canon]:ToArray(System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon[] (FullOpts)
          16 (8.70 % of base) : 3840.dasm - System.Text.ValueStringBuilder:Append(ushort,int):this (FullOpts)

Top method improvements (percentages):
         -44 (-9.82 % of base) : 6880.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-9.32 % of base) : 6872.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -16 (-9.09 % of base) : 12796.dasm - System.Numerics.Vector:GreaterThanAny[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 12795.dasm - System.Numerics.Vector:LessThanOrEqualAll[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 15683.dasm - System.Numerics.Vector`1[ushort]:op_Inequality(System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 12728.dasm - System.Runtime.Intrinsics.Vector64:GreaterThanAny[ushort](System.Runtime.Intrinsics.Vector64`1[ushort],System.Runtime.Intrinsics.Vector64`1[ushort]):ubyte (FullOpts)
         -12 (-7.50 % of base) : 8117.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
         -32 (-7.21 % of base) : 1190.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -28 (-7.14 % of base) : 7750.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
          -4 (-6.67 % of base) : 9946.dasm - System.Globalization.CharUnicodeInfo:ToLower(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 10785.dasm - System.Globalization.CharUnicodeInfo:ToUpper(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 10297.dasm - System.Globalization.InvariantModeCasing:ToLower(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 11606.dasm - System.Globalization.InvariantModeCasing:ToUpper(ushort):ushort (FullOpts)
         -16 (-6.06 % of base) : 1694.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -12 (-5.77 % of base) : 7499.dasm - System.Type:ImplementInterface(System.Type):ubyte:this (FullOpts)
         -16 (-5.41 % of base) : 5146.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
         -12 (-4.84 % of base) : 6487.dasm - Internal.TypeSystem.TypeSystemContext:GetArrayTypesCache(ubyte,int):Internal.TypeSystem.TypeSystemContext+RuntimeTypeHandleToParameterTypeRuntimeTypeHandleHashtable (FullOpts)
         -12 (-4.76 % of base) : 8246.dasm - System.Reflection.TypeNameParser+GenericTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
         -32 (-4.60 % of base) : 1240.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
         -32 (-4.60 % of base) : 1295.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)



linux x64

Diffs are based on 2,516,325 contexts (991,070 MinOpts, 1,525,255 FullOpts).

MISSED contexts: 1,584 (0.06%)

Overall (+565,740 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,336,053 +1,904
benchmarks.run_pgo.linux.x64.checked.mch 71,262,198 +157,649
benchmarks.run_tiered.linux.x64.checked.mch 21,436,449 -2,851
coreclr_tests.run.linux.x64.checked.mch 403,514,426 -53,512
libraries.crossgen2.linux.x64.checked.mch 38,726,572 +18,689
libraries.pmi.linux.x64.checked.mch 60,417,780 +23,461
libraries_tests.run.linux.x64.Release.mch 335,675,120 +382,346
librariestestsnotieredcompilation.run.linux.x64.Release.mch 132,550,474 +29,541
realworld.run.linux.x64.checked.mch 13,174,358 +8,391
smoke_tests.nativeaot.linux.x64.checked.mch 4,064,942 +122

FullOpts (+565,740 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,036,750 +1,904
benchmarks.run_pgo.linux.x64.checked.mch 47,462,209 +157,649
benchmarks.run_tiered.linux.x64.checked.mch 3,695,669 -2,851
coreclr_tests.run.linux.x64.checked.mch 123,759,966 -53,512
libraries.crossgen2.linux.x64.checked.mch 38,725,374 +18,689
libraries.pmi.linux.x64.checked.mch 60,304,923 +23,461
libraries_tests.run.linux.x64.Release.mch 151,915,511 +382,346
librariestestsnotieredcompilation.run.linux.x64.Release.mch 121,932,706 +29,541
realworld.run.linux.x64.checked.mch 12,788,474 +8,391
smoke_tests.nativeaot.linux.x64.checked.mch 4,063,993 +122

Example diffs

benchmarks.run.linux.x64.checked.mch

-35 (-15.22%) : 20020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-20 (-11.76%) : 4125.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 10 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> -; V01 loc0 [V01,T05] ( 5, 17 ) int -> r15 -; V02 loc1 [V02,T02] ( 6, 84 ) int -> r13
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> +;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T06] ( 2, 16 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp1 [V04,T05] ( 2, 16 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rdi "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V07 tmp4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> @@ -34,113 +34,108 @@ ;* V23 tmp20 [V23 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP ;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP ; V25 tmp22 [V25,T01] ( 3, 96 ) ref -> rdi "arr expr"
-; V26 cse0 [V26,T07] ( 3, 6 ) int -> r14 "CSE - moderate" -; V27 cse1 [V27,T04] ( 4, 40 ) long -> r12 "CSE - aggressive"
+; V26 tmp23 [V26,T03] ( 7, 49 ) long -> r14 "Widened primary induction variable" +; V27 tmp24 [V27,T02] ( 6, 82 ) long -> r13 "Widened primary induction variable" +; V28 cse0 [V28,T06] ( 3, 6 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r15d, r15d - mov r14d, dword ptr [rbx+0x08] - test r14d, r14d - jle SHORT G_M29788_IG10
+ mov r15d, dword ptr [rbx+0x08] + test r15d, r15d + jle SHORT G_M29788_IG11 + xor r14d, r14d
;; size=12 bbWeight=1 PerfScore 3.50 G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d - mov r12d, r15d - mov rdi, gword ptr [rbx+8*r12+0x10]
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M29788_IG09 - ;; size=17 bbWeight=4 PerfScore 26.00 -G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG10 + ;; size=11 bbWeight=4 PerfScore 24.00 +G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ xor r13d, r13d + ;; size=3 bbWeight=2 PerfScore 0.50 +G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M29788_IG14 - mov eax, r13d - movzx rdi, word ptr [rdi+2*rax+0x0C]
+ jae SHORT G_M29788_IG15 + movzx rdi, word ptr [rdi+2*r13+0x0C]
; gcrRegs -[rdi] cmp edi, 256
- jb SHORT G_M29788_IG07 - ;; size=27 bbWeight=16 PerfScore 152.00 -G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jb SHORT G_M29788_IG08 + ;; size=25 bbWeight=16 PerfScore 148.00 +G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte] ; gcr arg pop 0 test eax, eax
- je SHORT G_M29788_IG08
+ je SHORT G_M29788_IG09
;; size=10 bbWeight=8 PerfScore 34.00
-G_M29788_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M29788_IG12
+ jmp SHORT G_M29788_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] mov edi, edi mov rax, 0xD1FFAB1E ; static handle test byte ptr [rdi+rax], 128
- jne SHORT G_M29788_IG12
+ jne SHORT G_M29788_IG13
;; size=18 bbWeight=8 PerfScore 36.00
-G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc r13d
- mov rax, gword ptr [rbx+8*r12+0x10]
+ mov rax, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rax] cmp dword ptr [rax+0x08], r13d
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=14 bbWeight=16 PerfScore 100.00
-G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc r15d - cmp r14d, r15d
+ inc r14d + cmp r15d, r14d
jg SHORT G_M29788_IG03 ;; size=8 bbWeight=4 PerfScore 6.00
-G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8
+G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M29788_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8
+G_M29788_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M29788_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 19, PerfScore 370.75, instruction count 60, allocated bytes for code 170 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 150, prolog size 16, PerfScore 362.50, instruction count 52, allocated bytes for code 150 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -148,14 +143,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-18 (-11.46%) : 16367.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)

@@ -10,18 +10,21 @@ ; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rdi class-hnd single-def <int[]> ; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> rdx ; V02 loc1 [V02,T10] ( 4, 16 ) int -> r8
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rcx -; V04 loc3 [V04,T00] ( 12, 80.16) int -> rsi
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rcx +;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> r11 "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3, 39.60) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 0.40) int -> r11 "CSE - conservative" -; V09 cse2 [V09,T13] ( 3, 0.40) int -> r8 "CSE - conservative" -; V10 cse3 [V10,T05] ( 3, 39.60) int -> r8 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3, 39.60) long -> r10 "CSE - aggressive" -; V12 cse5 [V12,T01] ( 4, 63.36) int -> r9 "CSE - aggressive" -; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive" -; V14 cse7 [V14,T11] ( 5, 0.72) int -> r9 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> r10 "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T12] ( 7, 0.92) long -> rsi "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6, 75.28) long -> rsi "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3, 39.60) int -> r10 "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 0.40) int -> r10 "CSE - conservative" +; V11 cse2 [V11,T16] ( 3, 0.40) int -> r8 "CSE - conservative" +; V12 cse3 [V12,T06] ( 3, 39.60) int -> r8 "CSE - aggressive" +; V13 cse4 [V13,T01] ( 4, 55.44) long -> r9 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 0.56) long -> r9 "CSE - conservative" +; V15 cse6 [V15,T03] ( 3, 47.52) int -> r9 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 0.48) int -> r10 "CSE - conservative" +; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -36,81 +39,78 @@ G_M37703_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=6 bbWeight=1 PerfScore 2.50 G_M37703_IG03: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz xor edx, edx
- xor esi, esi
test ecx, ecx
- jle SHORT G_M37703_IG12 - ;; size=8 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13 + ;; size=6 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz cmp eax, ecx jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor esi, esi + ;; size=6 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov r8d, esi - mov r8d, dword ptr [rdi+4*r8+0x10]
+ mov r8d, dword ptr [rdi+4*rsi+0x10]
lea r9d, [rsi+0x01] cmp r9d, eax
- jae SHORT G_M37703_IG14 - mov r10d, r9d - mov r11d, dword ptr [rdi+4*r10+0x10] - cmp r8d, r11d
+ jae SHORT G_M37703_IG15 + mov r10d, dword ptr [rdi+4*r9+0x10] + cmp r8d, r10d
jle SHORT G_M37703_IG07
- ;; size=30 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- mov edx, esi - mov dword ptr [rdi+4*rdx+0x10], r11d - mov dword ptr [rdi+4*r10+0x10], r8d
+ mov dword ptr [rdi+4*rsi+0x10], r10d + mov dword ptr [rdi+4*r9+0x10], r8d
mov edx, 1
- ;; size=17 bbWeight=7.92 PerfScore 19.80
+ ;; size=15 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov esi, r9d
+ mov rsi, r9
cmp esi, ecx jl SHORT G_M37703_IG05 ;; size=7 bbWeight=15.84 PerfScore 23.76 G_M37703_IG08: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + xor esi, esi + ;; size=2 bbWeight=0.04 PerfScore 0.01 +G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
cmp esi, eax
- jae SHORT G_M37703_IG14 - mov r8d, esi - mov r8d, dword ptr [rdi+4*r8+0x10] - lea r9d, [rsi+0x01] - cmp r9d, eax - jae SHORT G_M37703_IG14 - mov r11d, r9d - mov r11d, dword ptr [rdi+4*r11+0x10] - cmp r8d, r11d - jle SHORT G_M37703_IG11 - ;; size=34 bbWeight=0.16 PerfScore 1.40 -G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov edx, esi - mov dword ptr [rdi+4*rdx+0x10], r11d - mov esi, r9d - mov dword ptr [rdi+4*rsi+0x10], r8d
+ jae SHORT G_M37703_IG15 + mov r8d, dword ptr [rdi+4*rsi+0x10] + lea r10d, [rsi+0x01] + cmp r10d, eax + jae SHORT G_M37703_IG15 + mov r9d, r10d + mov r10d, dword ptr [rdi+4*r9+0x10] + cmp r8d, r10d + jle SHORT G_M37703_IG12 + ;; size=31 bbWeight=0.16 PerfScore 1.36 +G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + mov dword ptr [rdi+4*rsi+0x10], r10d + mov dword ptr [rdi+4*r9+0x10], r8d
mov edx, 1
- ;; size=20 bbWeight=0.08 PerfScore 0.22 -G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov esi, r9d
+ ;; size=15 bbWeight=0.08 PerfScore 0.18 +G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov rsi, r9
cmp esi, ecx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=7 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
dec ecx test edx, edx
- jne G_M37703_IG03 - ;; size=10 bbWeight=8 PerfScore 12.00 -G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03 + ;; size=6 bbWeight=8 PerfScore 12.00 +G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 157, prolog size 4, PerfScore 216.47, instruction count 53, allocated bytes for code 157 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 139, prolog size 4, PerfScore 205.50, instruction count 48, allocated bytes for code 139 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================ Unwind Info:

+14 (+45.16%) : 29193.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax -; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,27 +24,37 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx test esi, esi jle SHORT G_M31628_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx + ;; size=10 bbWeight=1 PerfScore 2.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx] - xor eax, edx - movzx rax, al - inc ecx - cmp ecx, esi
+ cmp edx, eax + jae SHORT G_M31628_IG06 + movzx r8, byte ptr [rdi+rdx] + xor ecx, r8d + movzx rcx, cl + inc edx + cmp edx, esi
jl SHORT G_M31628_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00 -G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00 +G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+14 (+45.16%) : 26830.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax -; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,27 +24,37 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx test esi, esi jle SHORT G_M44428_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx + ;; size=10 bbWeight=1 PerfScore 2.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx] - xor eax, edx - movzx rax, al - inc ecx - cmp ecx, esi
+ cmp edx, eax + jae SHORT G_M44428_IG06 + movzx r8, byte ptr [rdi+rdx] + xor ecx, r8d + movzx rcx, cl + inc edx + cmp edx, esi
jl SHORT G_M44428_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00 -G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00 +G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+20 (+58.82%) : 29485.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)

@@ -8,53 +8,66 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]> -; V01 loc0 [V01,T02] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]> +; V01 loc0 [V01,T03] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T08] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T03] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP -;* V08 cse0 [V08,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V09 cse1 [V09,T04] ( 3, 6 ) int -> rsi "CSE - aggressive" -;* V10 rat0 [V10,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" -;* V11 rat1 [V11,T07] ( 0, 0 ) long -> zero-ref "runtime lookup" -;* V12 rat2 [V12,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP +; V08 tmp4 [V08,T00] ( 6, 21 ) long -> rdi "Widened primary induction variable" +;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V10 cse1 [V10,T01] ( 4, 10 ) int -> rdx "CSE - aggressive" +;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat2 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25 -G_M3722_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi]
+ push rbx + push rax + lea rbp, [rsp+0x10] + mov rbx, rdi + ; gcrRegs +[rbx] + ;; size=11 bbWeight=1 PerfScore 3.75 +G_M3722_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rax, rax ; gcrRegs +[rax]
- mov rcx, gword ptr [rdi+0x38]
+ mov rcx, gword ptr [rbx+0x38]
; gcrRegs +[rcx]
- xor edx, edx - mov esi, dword ptr [rcx+0x08] - test esi, esi
+ mov edx, dword ptr [rcx+0x08] + test edx, edx
jle SHORT G_M3722_IG04
+ xor edi, edi
;; size=15 bbWeight=1 PerfScore 5.75
-G_M3722_IG03: ; bbWeight=4, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+G_M3722_IG03: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov eax, edx - mov rax, gword ptr [rcx+8*rax+0x10]
+ cmp edi, edx + jae SHORT G_M3722_IG05 + mov rax, gword ptr [rcx+8*rdi+0x10]
; gcrRegs +[rax]
- inc edx - cmp esi, edx
+ inc edi + cmp edx, edi
jg SHORT G_M3722_IG03
- ;; size=13 bbWeight=4 PerfScore 15.00 -G_M3722_IG04: ; bbWeight=1, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=15 bbWeight=4 PerfScore 19.00 +G_M3722_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
+ add rsp, 8 + pop rbx
pop rbp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 4, PerfScore 23.50, instruction count 15, allocated bytes for code 34 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 54, prolog size 11, PerfScore 30.75, instruction count 23, allocated bytes for code 54 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -62,9 +75,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

benchmarks.run_pgo.linux.x64.checked.mch

-32 (-13.50%) : 68537.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)

@@ -6,21 +6,23 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 100.15
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100.15
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15 -; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>> -; V03 loc2 [V03,T07] ( 3,100 ) ref -> r13 class-hnd exact <<unknown class>> -; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx -; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx +; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>> +; V03 loc2 [V03,T07] ( 3,100 ) ref -> r14 class-hnd exact <<unknown class>> +; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax +; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp" -; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp" +; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable" +; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable" +; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,94 +36,96 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov qword ptr [rsp+0x80], r12 mov qword ptr [rsp+0x78], rbx lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C] - mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C] + mov r15, gword ptr [rbp+0x30] + ; gcrRegs +[r15] + mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28] - ; gcrRegs +[r13] - mov ebx, dword ptr [rbp+0x24] - ;; size=66 bbWeight=0.01 PerfScore 0.17 -G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [r13+0x08] - cmp r12d, ebx - jle G_M16914_IG09 - ;; size=13 bbWeight=0.01 PerfScore 0.03 -G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24] + ;; size=65 bbWeight=0.01 PerfScore 0.17 +G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov r13d, dword ptr [r14+0x08] + cmp r13d, eax + jle SHORT G_M16914_IG14 + ;; size=9 bbWeight=0.01 PerfScore 0.03 +G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + test eax, eax + jl SHORT G_M16914_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + mov r12d, eax + ;; size=3 bbWeight=0.01 PerfScore 0.00 +G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b - mov rdi, r14
+ cmp byte ptr [r15], r15b + mov rdi, r15
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs +[rax] test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG12
xor edi, edi
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09 - jmp SHORT G_M16914_IG04 - ;; size=42 bbWeight=98.99 PerfScore 1385.86 -G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15 +G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d - jae SHORT G_M16914_IG06 - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10]
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jg SHORT G_M16914_IG05 + ;; size=14 bbWeight=98.99 PerfScore 197.98 +G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14-r15] + jmp SHORT G_M16914_IG14 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M16914_IG08: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs +[r14-r15] + mov r12d, eax + ;; size=3 bbWeight=0.00 PerfScore 0.00 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + cmp r12d, r13d + jae SHORT G_M16914_IG11 + mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b - mov rdi, r14
+ cmp byte ptr [r15], r15b + mov rdi, r15
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs +[rax] test rax, rax
- jne SHORT G_M16914_IG08
+ jne SHORT G_M16914_IG13
xor edi, edi
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09 - jmp SHORT G_M16914_IG05 - ;; size=47 bbWeight=1.00 PerfScore 15.25 -G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14]
+ ;; size=29 bbWeight=1.00 PerfScore 11.00 +G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jle SHORT G_M16914_IG14 + jmp SHORT G_M16914_IG09 + ;; size=16 bbWeight=1.00 PerfScore 4.00 +G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r13-r14]
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r14-r15]
mov edi, 1
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG04 - jmp SHORT G_M16914_IG09 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M16914_IG06 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG13: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- mov eax, r15d - xor eax, edi - movzx r15, al - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG05 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14] - mov eax, r15d - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ jmp SHORT G_M16914_IG10 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15] + mov eax, ebx + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M16914_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 120 pop rbx pop r12 @@ -132,7 +136,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1178.35, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info:

-32 (-13.50%) : 123489.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)

@@ -6,21 +6,23 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.91
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.91
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15 -; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>> -; V03 loc2 [V03,T07] ( 3,100.00) ref -> r13 class-hnd exact <<unknown class>> -; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx -; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx +; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>> +; V03 loc2 [V03,T07] ( 3,100.00) ref -> r14 class-hnd exact <<unknown class>> +; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax +; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp" -; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp" +; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable" +; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable" +; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,94 +36,92 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov qword ptr [rsp+0x80], r12 mov qword ptr [rsp+0x78], rbx lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C] - mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C] + mov r15, gword ptr [rbp+0x30] + ; gcrRegs +[r15] + mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28] - ; gcrRegs +[r13] - mov ebx, dword ptr [rbp+0x24] - ;; size=66 bbWeight=0.01 PerfScore 0.17 -G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [r13+0x08] - cmp r12d, ebx - jle G_M16914_IG09 - ;; size=13 bbWeight=0.01 PerfScore 0.03 -G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24] + ;; size=65 bbWeight=0.01 PerfScore 0.17 +G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov r13d, dword ptr [r14+0x08] + cmp r13d, eax + jle SHORT G_M16914_IG13 + ;; size=9 bbWeight=0.01 PerfScore 0.03 +G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + test eax, eax + jl SHORT G_M16914_IG07
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + mov r12d, eax + ;; size=3 bbWeight=0.01 PerfScore 0.00 +G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b - mov rdi, r14
+ cmp byte ptr [r15], r15b + mov rdi, r15
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs +[rax] test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG11
xor edi, edi
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09 - jmp SHORT G_M16914_IG04 - ;; size=42 bbWeight=98.99 PerfScore 1385.86 -G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15 +G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d - jae SHORT G_M16914_IG06 - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10] - ; gcrRegs +[rsi] - cmp byte ptr [r14], r14b - mov rdi, r14 - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ; byrRegs +[rax] - test rax, rax - jne SHORT G_M16914_IG08 - xor edi, edi - xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jle SHORT G_M16914_IG13
jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25 -G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14]
+ ;; size=16 bbWeight=98.99 PerfScore 395.96 +G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + mov r12d, eax + ;; size=3 bbWeight=0.00 PerfScore 0.00 +G_M16914_IG08: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + cmp r12d, r13d + jae SHORT G_M16914_IG10 + mov rsi, gword ptr [r14+8*r12+0x10] + ; gcrRegs +[rsi] + cmp byte ptr [r15], r15b + mov rdi, r15 + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rsi rdi] + ; byrRegs +[rax] + test rax, rax + jne SHORT G_M16914_IG12 + xor edi, edi + ;; size=29 bbWeight=1.00 PerfScore 11.00 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jle SHORT G_M16914_IG13 + jmp SHORT G_M16914_IG08 + ;; size=16 bbWeight=1.00 PerfScore 4.00 +G_M16914_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r13-r14]
+G_M16914_IG11: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r14-r15] + mov edi, 1 + jmp SHORT G_M16914_IG06 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG04
jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - mov edi, 1 - mov eax, r15d - xor eax, edi - movzx r15, al - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG05 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14] - mov eax, r15d - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15] + mov eax, ebx + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M16914_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 120 pop rbx pop r12 @@ -132,7 +132,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1376.33, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info:

-32 (-13.50%) : 123533.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)

@@ -6,21 +6,23 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.43
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.43
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15 -; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>> -; V03 loc2 [V03,T07] ( 3,100.00) ref -> r13 class-hnd exact <<unknown class>> -; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx -; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
+; V01 loc0 [V01,T03] ( 5,199.98) ubyte -> rbx +; V02 loc1 [V02,T04] ( 4,199.98) ref -> r15 class-hnd <<unknown class>> +; V03 loc2 [V03,T07] ( 3,100.00) ref -> r14 class-hnd exact <<unknown class>> +; V04 loc3 [V04,T10] ( 4, 0.03) int -> rax +; V05 loc4 [V05,T09] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp" -; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
+; V07 tmp1 [V07,T02] ( 6,199.98) ubyte -> rdi "Inline return value spill temp" +; V08 tmp2 [V08,T00] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 tmp4 [V10,T08] ( 6, 5.00) long -> r12 "Widened primary induction variable" +; V11 tmp5 [V11,T01] ( 5,395.97) long -> r12 "Widened primary induction variable" +; V12 cse0 [V12,T06] ( 5,101.01) int -> r13 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,94 +36,96 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov qword ptr [rsp+0x80], r12 mov qword ptr [rsp+0x78], rbx lea rbp, [rsp+0x30]
- mov r15d, dword ptr [rbp+0x3C] - mov r14, gword ptr [rbp+0x30]
+ mov ebx, dword ptr [rbp+0x3C] + mov r15, gword ptr [rbp+0x30] + ; gcrRegs +[r15] + mov r14, gword ptr [rbp+0x28]
; gcrRegs +[r14]
- mov r13, gword ptr [rbp+0x28] - ; gcrRegs +[r13] - mov ebx, dword ptr [rbp+0x24] - ;; size=66 bbWeight=0.01 PerfScore 0.17 -G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [r13+0x08] - cmp r12d, ebx - jle G_M16914_IG09 - ;; size=13 bbWeight=0.01 PerfScore 0.03 -G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - jl SHORT G_M16914_IG05
+ mov eax, dword ptr [rbp+0x24] + ;; size=65 bbWeight=0.01 PerfScore 0.17 +G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov r13d, dword ptr [r14+0x08] + cmp r13d, eax + jle SHORT G_M16914_IG14 + ;; size=9 bbWeight=0.01 PerfScore 0.03 +G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + test eax, eax + jl SHORT G_M16914_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10]
+G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + mov r12d, eax + ;; size=3 bbWeight=0.01 PerfScore 0.00 +G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b - mov rdi, r14
+ cmp byte ptr [r15], r15b + mov rdi, r15
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs +[rax] test rax, rax
- jne SHORT G_M16914_IG07
+ jne SHORT G_M16914_IG12
xor edi, edi
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09 - jmp SHORT G_M16914_IG04 - ;; size=42 bbWeight=98.99 PerfScore 1385.86 -G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=98.99 PerfScore 965.15 +G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- cmp ebx, r12d - jae SHORT G_M16914_IG06 - mov edi, ebx - mov rsi, gword ptr [r13+8*rdi+0x10]
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jg SHORT G_M16914_IG05 + ;; size=14 bbWeight=98.99 PerfScore 197.98 +G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14-r15] + jmp SHORT G_M16914_IG14 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M16914_IG08: ; bbWeight=0.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs +[r14-r15] + mov r12d, eax + ;; size=3 bbWeight=0.00 PerfScore 0.00 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + cmp r12d, r13d + jae SHORT G_M16914_IG11 + mov rsi, gword ptr [r14+8*r12+0x10]
; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b - mov rdi, r14
+ cmp byte ptr [r15], r15b + mov rdi, r15
; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rsi rdi] ; byrRegs +[rax] test rax, rax
- jne SHORT G_M16914_IG08
+ jne SHORT G_M16914_IG13
xor edi, edi
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jle SHORT G_M16914_IG09 - jmp SHORT G_M16914_IG05 - ;; size=47 bbWeight=1.00 PerfScore 15.25 -G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14]
+ ;; size=29 bbWeight=1.00 PerfScore 11.00 +G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
+ xor edi, ebx + movzx rbx, dil + inc r12d + cmp r13d, r12d + jle SHORT G_M16914_IG14 + jmp SHORT G_M16914_IG09 + ;; size=16 bbWeight=1.00 PerfScore 4.00 +G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r13-r14]
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r14-r15]
mov edi, 1
- xor edi, r15d - movzx r15, dil - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG04 - jmp SHORT G_M16914_IG09 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M16914_IG06 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG13: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- mov eax, r15d - xor eax, edi - movzx r15, al - inc ebx - cmp r12d, ebx - jg SHORT G_M16914_IG05 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13-r14] - mov eax, r15d - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ jmp SHORT G_M16914_IG10 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M16914_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14-r15] + mov eax, ebx + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M16914_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 120 pop rbx pop r12 @@ -132,7 +136,7 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 205, prolog size 51, PerfScore 1178.35, instruction count 62, allocated bytes for code 205 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info:

+9 (+23.68%) : 79209.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 { xor ecx, ecx jmp SHORT G_M16110_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov edx, ecx - mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, dword ptr [rdi+0x08] + jae SHORT G_M16110_IG08 + mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx] add eax, dword ptr [rdx+0x3C] inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] cmp dword ptr [rdi+0x08], ecx @@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info:

+9 (+23.68%) : 145173.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 { xor ecx, ecx jmp SHORT G_M16110_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov edx, ecx - mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, dword ptr [rdi+0x08] + jae SHORT G_M16110_IG08 + mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx] add eax, dword ptr [rdx+0x3C] inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] cmp dword ptr [rdi+0x08], ecx @@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info:

+9 (+23.68%) : 147765.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rdi class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rcx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -36,13 +37,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 { xor ecx, ecx jmp SHORT G_M16110_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov edx, ecx - mov rdx, gword ptr [rdi+8*rdx+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp ecx, dword ptr [rdi+0x08] + jae SHORT G_M16110_IG08 + mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx] add eax, dword ptr [rdx+0x3C] inc ecx
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] cmp dword ptr [rdi+0x08], ecx @@ -52,8 +54,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 38, prolog size 4, PerfScore 4.50, instruction count 18, allocated bytes for code 38 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 47, prolog size 4, PerfScore 4.50, instruction count 21, allocated bytes for code 47 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.linux.x64.checked.mch

-35 (-15.22%) : 43458.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-16 (-12.80%) : 61569.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)

@@ -8,41 +8,40 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 14 ) ref -> rdi class-hnd single-def <int[][]> -; V01 arg1 [V01,T06] ( 4, 26 ) int -> rsi single-def
+; V00 arg0 [V00,T08] ( 5, 14 ) ref -> rdi class-hnd single-def <int[][]> +; V01 arg1 [V01,T05] ( 4, 26 ) int -> rsi single-def
; V02 arg2 [V02,T10] ( 3, 10 ) int -> rdx single-def
-; V03 loc0 [V03,T05] ( 5, 32 ) int -> rcx -; V04 loc1 [V04,T00] ( 8,106 ) int -> rax
+; V03 loc0 [V03,T12] ( 1, 0.01) int -> rcx +; V04 loc1 [V04,T09] ( 3, 14 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <int[]> ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" ; V08 tmp3 [V08,T01] ( 3, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <int[]> ; V09 tmp4 [V09,T03] ( 2, 64 ) int -> r11 "Strict ordering of exceptions for Array store" ; V10 tmp5 [V10,T02] ( 3, 96 ) ref -> r11 "arr expr"
-; V11 cse0 [V11,T07] ( 2, 20 ) ref -> r8 hoist "CSE - aggressive" -; V12 cse1 [V12,T08] ( 2, 20 ) ref -> r9 hoist "CSE - aggressive" -; V13 cse2 [V13,T11] ( 2, 8 ) int -> r8 hoist "CSE - aggressive" -; V14 cse3 [V14,T12] ( 2, 8 ) long -> r9 hoist "CSE - aggressive" -; V15 cse4 [V15,T04] ( 3, 48 ) long -> rbx "CSE - aggressive"
+; V11 tmp6 [V11,T04] ( 6, 32.01) long -> rcx "Widened primary induction variable" +; V12 tmp7 [V12,T00] ( 8,116 ) long -> rax "Widened primary induction variable" +; V13 cse0 [V13,T06] ( 2, 20 ) ref -> r8 hoist "CSE - aggressive" +; V14 cse1 [V14,T07] ( 2, 20 ) ref -> r9 hoist "CSE - aggressive" +; V15 cse2 [V15,T11] ( 2, 8 ) int -> r8 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M12699_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 16 - mov qword ptr [rsp+0x88], rbx - lea rbp, [rsp+0x10]
+ mov rbp, rsp
mov rdi, gword ptr [rbp+0x50] ; gcrRegs +[rdi] mov esi, dword ptr [rbp+0x4C] mov edx, dword ptr [rbp+0x48] mov ecx, dword ptr [rbp+0x44] mov eax, dword ptr [rbp+0x40]
- ;; size=38 bbWeight=0.01 PerfScore 0.15
+ ;; size=24 bbWeight=0.01 PerfScore 0.13
G_M12699_IG02: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, ecx
jmp SHORT G_M12699_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=4 bbWeight=0.01 PerfScore 0.02
G_M12699_IG03: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=2 PerfScore 0.50 @@ -51,15 +50,15 @@ G_M12699_IG04: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr jge SHORT G_M12699_IG07 ;; size=4 bbWeight=8 PerfScore 10.00 G_M12699_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
mov r8d, dword ptr [rdi+0x08]
- mov r9d, ecx
cmp ecx, r8d jae SHORT G_M12699_IG09
- mov r8, gword ptr [rdi+8*r9+0x10]
+ mov r8, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[r8] mov r9, gword ptr [rdi+0x10] ; gcrRegs +[r9]
- ;; size=21 bbWeight=4 PerfScore 30.00
+ ;; size=20 bbWeight=4 PerfScore 30.00
G_M12699_IG06: ; bbWeight=16, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000 {}, byref, isz mov r10, r8 ; gcrRegs +[r10] @@ -67,16 +66,15 @@ G_M12699_IG06: ; bbWeight=16, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000 ; gcrRegs +[r11] cmp eax, dword ptr [r11+0x08] jae SHORT G_M12699_IG09
- mov ebx, eax - mov r11d, dword ptr [r11+4*rbx+0x10]
+ mov r11d, dword ptr [r11+4*rax+0x10]
; gcrRegs -[r11] cmp eax, dword ptr [r10+0x08] jae SHORT G_M12699_IG09
- mov dword ptr [r10+4*rbx+0x10], r11d
+ mov dword ptr [r10+4*rax+0x10], r11d
inc eax cmp eax, esi jl SHORT G_M12699_IG06
- ;; size=36 bbWeight=16 PerfScore 212.00
+ ;; size=34 bbWeight=16 PerfScore 208.00
G_M12699_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r8-r10] inc ecx @@ -85,18 +83,17 @@ G_M12699_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=6 bbWeight=8 PerfScore 12.00 G_M12699_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rdi]
- add rsp, 136 - pop rbx
+ add rsp, 128
pop rbp ret
- ;; size=10 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M12699_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 38, PerfScore 266.92, instruction count 41, allocated bytes for code 125 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
+; Total bytes of code 109, prolog size 24, PerfScore 262.40, instruction count 38, allocated bytes for code 109 (MethodHash=6a3cce64) for method NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -104,14 +101,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x11 - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) - Scaled Small Offset: 17 * 8 = 136 = 0x00088 - CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-36 (-11.80%) : 56030.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)

@@ -8,46 +8,46 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 9, 30.08) ref -> rdi class-hnd single-def <int[][]> -; V01 arg1 [V01,T08] ( 9, 46 ) int -> rsi single-def -; V02 loc0 [V02,T07] ( 10, 48.24) int -> rcx -; V03 loc1 [V03,T02] ( 17, 94.64) int -> rax -; V04 loc2 [V04,T12] ( 4, 32 ) int -> rbx
+; V00 arg0 [V00,T09] ( 9, 30.08) ref -> rdi class-hnd single-def <int[][]> +; V01 arg1 [V01,T07] ( 9, 46 ) int -> rsi single-def +; V02 loc0 [V02,T18] ( 1, 0.01) int -> rcx +; V03 loc1 [V03,T14] ( 5, 18.04) int -> rax +; V04 loc2 [V04,T10] ( 4, 32 ) int -> r11
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 6, 96 ) ref -> r11 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V07 tmp2 [V07,T05] ( 4, 64 ) int -> r13 "Strict ordering of exceptions for Array store" -; V08 tmp3 [V08,T03] ( 5, 64.32) ref -> r11 "arr expr" -; V09 tmp4 [V09,T01] ( 6, 96 ) ref -> r14 "arr expr" -; V10 tmp5 [V10,T04] ( 5, 64.32) ref -> r15 "arr expr" -; V11 cse0 [V11,T15] ( 5, 20.20) ref -> r10 hoist multi-def "CSE - moderate" -; V12 cse1 [V12,T17] ( 3, 0.48) ref -> r15 "CSE - conservative" -; V13 cse2 [V13,T13] ( 7, 31.92) ref -> r9 multi-def "CSE - moderate" -; V14 cse3 [V14,T09] ( 3, 47.52) ref -> r15 "CSE - moderate" -; V15 cse4 [V15,T16] ( 6, 12.24) int -> rdx hoist multi-def "CSE - moderate" -; V16 cse5 [V16,T14] ( 2, 31.68) int -> r13 "CSE - moderate" -; V17 cse6 [V17,T10] ( 8, 40.08) long -> r8 hoist multi-def "CSE - moderate" -; V18 cse7 [V18,T06] ( 4, 63.36) long -> rdx "CSE - moderate"
+; V06 tmp1 [V06,T01] ( 6, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V07 tmp2 [V07,T06] ( 4, 64 ) int -> r15 "Strict ordering of exceptions for Array store" +; V08 tmp3 [V08,T04] ( 5, 64.32) ref -> r10 "arr expr" +; V09 tmp4 [V09,T02] ( 6, 96 ) ref -> rbx "arr expr" +; V10 tmp5 [V10,T05] ( 5, 64.32) ref -> registers "arr expr" +; V11 tmp6 [V11,T03] ( 15, 80.25) long -> rcx "Widened primary induction variable" +; V12 tmp7 [V12,T16] ( 10, 1.48) long -> rax "Widened primary induction variable" +; V13 tmp8 [V13,T00] ( 8,114.88) long -> rax "Widened primary induction variable" +; V14 cse0 [V14,T13] ( 5, 20.20) ref -> r9 hoist multi-def "CSE - moderate" +; V15 cse1 [V15,T17] ( 3, 0.48) ref -> r8 "CSE - conservative" +; V16 cse2 [V16,T11] ( 7, 31.92) ref -> r8 multi-def "CSE - moderate" +; V17 cse3 [V17,T08] ( 3, 47.52) ref -> rdx "CSE - moderate" +; V18 cse4 [V18,T15] ( 6, 12.24) int -> rdx hoist multi-def "CSE - moderate" +; V19 cse5 [V19,T12] ( 2, 31.68) int -> r15 "CSE - moderate"
; ; Lcl frame size = 0 G_M43574_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 32 - mov qword ptr [rsp+0x88], r15 - mov qword ptr [rsp+0x80], r14 - mov qword ptr [rsp+0x78], r13
+ sub rsp, 16 + mov qword ptr [rsp+0x78], r15
mov qword ptr [rsp+0x70], rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rdi, gword ptr [rbp+0x40] ; gcrRegs +[rdi] mov esi, dword ptr [rbp+0x3C] mov ecx, dword ptr [rbp+0x38] mov eax, dword ptr [rbp+0x34]
- ;; size=53 bbWeight=0.01 PerfScore 0.16
+ ;; size=37 bbWeight=0.01 PerfScore 0.14
G_M43574_IG02: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, ecx
jmp SHORT G_M43574_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=4 bbWeight=0.01 PerfScore 0.02
G_M43574_IG03: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov eax, 1 ;; size=5 bbWeight=2 PerfScore 0.50 @@ -61,89 +61,85 @@ G_M43574_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr mov edx, dword ptr [rdi+0x08] cmp edx, ecx jbe SHORT G_M43574_IG08
- mov r8d, ecx - mov r9, gword ptr [rdi+8*r8+0x10] - ; gcrRegs +[r9] - test r9, r9
+ mov r8, gword ptr [rdi+8*rcx+0x10] + ; gcrRegs +[r8] + test r8, r8
je SHORT G_M43574_IG08
- mov r10d, eax - or r10d, esi
+ mov r9d, eax + or r9d, esi
jl SHORT G_M43574_IG08
- cmp dword ptr [r9+0x08], esi
+ cmp dword ptr [r8+0x08], esi
jle SHORT G_M43574_IG08 cmp edx, esi jle SHORT G_M43574_IG08
- mov r10, r9
+ mov eax, eax + mov r9, r8 + ; gcrRegs +[r9] + ;; size=45 bbWeight=4 PerfScore 60.00 +G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0380 {rdi r8 r9}, byrefRegs=0000 {}, byref, isz + mov r10, r8
; gcrRegs +[r10]
- ;; size=46 bbWeight=4 PerfScore 60.00 -G_M43574_IG06: ; bbWeight=15.84, gcrefRegs=0680 {rdi r9 r10}, byrefRegs=0000 {}, byref, isz - mov r11, r9 - ; gcrRegs +[r11] - mov edx, eax - mov ebx, dword ptr [r11+4*rdx+0x10] - mov r11, r10 - mov r15, gword ptr [rdi+8*rdx+0x10] - ; gcrRegs +[r15] - mov r14, r15 - ; gcrRegs +[r14] - mov r13d, dword ptr [r14+0x08] - cmp ecx, r13d
+ mov r11d, dword ptr [r10+4*rax+0x10] + mov r10, r9 + mov rdx, gword ptr [rdi+8*rax+0x10] + ; gcrRegs +[rdx] + mov rbx, rdx + ; gcrRegs +[rbx] + mov r15d, dword ptr [rbx+0x08] + cmp ecx, r15d
jae G_M43574_IG12
- mov r13d, dword ptr [r14+4*r8+0x10] - cmp eax, dword ptr [r11+0x08] - jae G_M43574_IG12 - mov dword ptr [r11+4*rdx+0x10], r13d - mov dword ptr [r15+4*r8+0x10], ebx
+ mov r15d, dword ptr [rbx+4*rcx+0x10] + cmp eax, dword ptr [r10+0x08] + jae SHORT G_M43574_IG12 + mov dword ptr [r10+4*rax+0x10], r15d + mov dword ptr [rdx+4*rcx+0x10], r11d
inc eax cmp eax, esi jle SHORT G_M43574_IG06
- ;; size=65 bbWeight=15.84 PerfScore 281.16
+ ;; size=59 bbWeight=15.84 PerfScore 277.20
G_M43574_IG07: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9-r11 r14-r15]
+ ; gcrRegs -[rdx rbx r8-r10]
jmp SHORT G_M43574_IG10 ;; size=2 bbWeight=8 PerfScore 16.00 G_M43574_IG08: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
mov edx, dword ptr [rdi+0x08]
- mov r8d, ecx
cmp ecx, edx jae SHORT G_M43574_IG12
- mov r9, gword ptr [rdi+8*r8+0x10]
+ mov r8, gword ptr [rdi+8*rcx+0x10] + ; gcrRegs +[r8] + mov r9, r8
; gcrRegs +[r9]
+ ;; size=17 bbWeight=0.04 PerfScore 0.23 +G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0280 {rdi r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r8]
mov r10, r9 ; gcrRegs +[r10]
- ;; size=18 bbWeight=0.04 PerfScore 0.23 -G_M43574_IG09: ; bbWeight=0.16, gcrefRegs=0480 {rdi r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9] - mov r11, r10 - ; gcrRegs +[r11] - cmp eax, dword ptr [r11+0x08]
+ cmp eax, dword ptr [r10+0x08]
jae SHORT G_M43574_IG12
- mov r9d, eax - mov ebx, dword ptr [r11+4*r9+0x10] - mov r11, r10
+ mov r11d, dword ptr [r10+4*rax+0x10] + mov r10, r9
cmp eax, edx jae SHORT G_M43574_IG12
- mov r9d, eax - mov r15, gword ptr [rdi+8*r9+0x10] - ; gcrRegs +[r15] - mov r14, r15 - ; gcrRegs +[r14] - cmp ecx, dword ptr [r14+0x08]
+ mov r8, gword ptr [rdi+8*rax+0x10] + ; gcrRegs +[r8] + mov rbx, r8 + ; gcrRegs +[rbx] + cmp ecx, dword ptr [rbx+0x08]
jae SHORT G_M43574_IG12
- mov r13d, dword ptr [r14+4*r8+0x10] - cmp eax, dword ptr [r11+0x08]
+ mov r15d, dword ptr [rbx+4*rcx+0x10] + cmp eax, dword ptr [r10+0x08]
jae SHORT G_M43574_IG12
- mov r9d, eax - mov dword ptr [r11+4*r9+0x10], r13d - cmp ecx, dword ptr [r15+0x08]
+ mov dword ptr [r10+4*rax+0x10], r15d + cmp ecx, dword ptr [r8+0x08]
jae SHORT G_M43574_IG12
- mov dword ptr [r15+4*r8+0x10], ebx
+ mov dword ptr [r8+4*rcx+0x10], r11d
inc eax cmp eax, esi jle SHORT G_M43574_IG09
- ;; size=77 bbWeight=0.16 PerfScore 4.52
+ ;; size=67 bbWeight=0.16 PerfScore 4.40
G_M43574_IG10: ; bbWeight=8, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10-r11 r14-r15]
+ ; gcrRegs -[rbx r8-r10]
inc ecx cmp ecx, esi jle G_M43574_IG03 @@ -152,19 +148,17 @@ G_M43574_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[rdi] add rsp, 112 pop rbx
- pop r13 - pop r14
pop r15 pop rbp ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.75
G_M43574_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 305, prolog size 53, PerfScore 388.34, instruction count 93, allocated bytes for code 305 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
+; Total bytes of code 269, prolog size 37, PerfScore 383.24, instruction count 86, allocated bytes for code 269 (MethodHash=d41955c9) for method Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -172,20 +166,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x23 - CountOfUnwindCodes: 12
+ SizeOfProlog : 0x13 + CountOfUnwindCodes: 8
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x23 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 14 * 8 = 112 = 0x00070
- CodeOffset: 0x1E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
+ CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
Scaled Small Offset: 15 * 8 = 120 = 0x00078 ...

+8 (+16.33%) : 47059.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T02] ( 4, 6.96) ref -> rdi class-hnd single-def <System.String> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V02 loc0 [V02,T00] ( 5, 16.34) int -> rax
+;* V02 loc0 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 2, 4.96) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V05 tmp2 [V05,T03] ( 4, 6.46) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T01] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V04 tmp1 [V04,T03] ( 2, 4.96) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V05 tmp2 [V05,T01] ( 5, 10.42) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +;* V06 tmp3 [V06,T05] ( 0, 0 ) long -> zero-ref "Widened primary induction variable" +; V07 tmp4 [V07,T00] ( 7, 24.26) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -39,20 +40,21 @@ G_M50292_IG04: ; bbWeight=0.50, epilog, nogc, extend G_M50292_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz ; gcrRegs +[rdi] ; byrRegs +[rsi]
- xor eax, eax
test edx, edx jle SHORT G_M50292_IG07
+ xor eax, eax
;; size=6 bbWeight=0.50 PerfScore 0.75 G_M50292_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov ecx, eax - movzx r8, byte ptr [rsi+rcx] - movzx rcx, word ptr [rdi+2*rcx+0x0C] - cmp r8d, ecx
+ cmp eax, edx + jae SHORT G_M50292_IG09 + movzx rcx, byte ptr [rsi+rax] + movzx r8, word ptr [rdi+2*rax+0x0C] + cmp ecx, r8d
jne SHORT G_M50292_IG03 inc eax cmp eax, edx jl SHORT G_M50292_IG06
- ;; size=23 bbWeight=3.96 PerfScore 27.72
+ ;; size=25 bbWeight=3.96 PerfScore 31.68
G_M50292_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] ; byrRegs -[rsi] @@ -62,8 +64,13 @@ G_M50292_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M50292_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 49, prolog size 4, PerfScore 35.47, instruction count 21, allocated bytes for code 49 (MethodHash=8c563b8b) for method Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
+; Total bytes of code 57, prolog size 4, PerfScore 39.43, instruction count 24, allocated bytes for code 57 (MethodHash=8c563b8b) for method Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
; ============================================================ Unwind Info:

+8 (+21.62%) : 48504.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)

@@ -8,11 +8,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax -; V02 loc1 [V02,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,26 +24,32 @@ G_M53167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] mov eax, 0xD1FFAB1E
- xor ecx, ecx
test esi, esi jle SHORT G_M53167_IG04
+ xor ecx, ecx
;; size=11 bbWeight=1 PerfScore 1.75 G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi + jae SHORT G_M53167_IG05 + movzx rdx, byte ptr [rdi+rcx]
xor eax, edx imul eax, eax, 0xD1FFAB1E inc ecx cmp ecx, esi jl SHORT G_M53167_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M53167_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 37, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 37 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 45, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 45 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================ Unwind Info:

+8 (+23.53%) : 51828.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -9,10 +9,11 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> rdi ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> rax
+;* V02 loc0 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -22,19 +23,20 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz ; byrRegs +[rsi]
- xor eax, eax
test edx, edx jle SHORT G_M1770_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- mov ecx, eax - movzx rcx, word ptr [rsi+2*rcx]
+ cmp eax, edx + jae SHORT G_M1770_IG06 + movzx rcx, word ptr [rsi+2*rax]
xor edi, ecx imul edi, edi, 0xD1FFAB1E inc eax cmp eax, edx jl SHORT G_M1770_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rsi] mov eax, edi @@ -43,8 +45,13 @@ G_M1770_IG05: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 34 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 42, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 42 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-11 (-18.03%) : 592287.dasm - test:test_001() (FullOpts)

@@ -7,49 +7,46 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> +;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable" +;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M18991_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - xor ebx, ebx - ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M18991_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> mov esi, 100 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx + ;; size=22 bbWeight=1 PerfScore 1.75
G_M18991_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M18991_IG05
- mov ecx, ebx - mov dword ptr [rax+4*rcx+0x10], ebx - inc ebx - cmp ebx, 101
+ mov dword ptr [rax+4*rcx+0x10], ecx + inc ecx + cmp ecx, 101
jl SHORT G_M18991_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M18991_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax]
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M18991_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f8b5d0) for method test:test_001() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f8b5d0) for method test:test_001() (FullOpts)
; ============================================================ Unwind Info: @@ -57,11 +54,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-11 (-18.03%) : 592307.dasm - test:test_021() (FullOpts)

@@ -7,49 +7,46 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> +;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable" +;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M12653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - xor ebx, ebx - ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M12653_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> mov esi, 100 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx + ;; size=22 bbWeight=1 PerfScore 1.75
G_M12653_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M12653_IG05
- mov ecx, ebx - mov dword ptr [rax+4*rcx+0x10], ebx - inc ebx - cmp ebx, 101
+ mov dword ptr [rax+4*rcx+0x10], ecx + inc ecx + cmp ecx, 101
jl SHORT G_M12653_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M12653_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax]
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M12653_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f9ce92) for method test:test_021() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f9ce92) for method test:test_021() (FullOpts)
; ============================================================ Unwind Info: @@ -57,11 +54,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-11 (-18.03%) : 592288.dasm - test:test_002() (FullOpts)

@@ -7,49 +7,46 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T01] ( 6, 0.24) int -> rbx must-init
+; V00 loc0 [V00,T01] ( 2, 1.04) ref -> rax class-hnd exact single-def <<unknown class>> +;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T00] ( 7, 1.24) long -> rcx "Widened primary induction variable" +;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M15788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - xor ebx, ebx - ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M15788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> mov esi, 100 call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- ;; size=20 bbWeight=1 PerfScore 1.50
+ xor ecx, ecx + ;; size=22 bbWeight=1 PerfScore 1.75
G_M15788_IG03: ; bbWeight=0.04, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 100
+ cmp ecx, 100
jae SHORT G_M15788_IG05
- mov ecx, ebx - mov dword ptr [rax+4*rcx+0x10], ebx - inc ebx - cmp ebx, 100
+ mov dword ptr [rax+4*rcx+0x10], ecx + inc ecx + cmp ecx, 100
jle SHORT G_M15788_IG03
- ;; size=18 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.15
G_M15788_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax]
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M15788_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 61, prolog size 10, PerfScore 7.66, instruction count 21, allocated bytes for code 61 (MethodHash=f2f8c253) for method test:test_002() (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 4.65, instruction count 16, allocated bytes for code 50 (MethodHash=f2f8c253) for method test:test_002() (FullOpts)
; ============================================================ Unwind Info: @@ -57,11 +54,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+8 (+34.78%) : 502680.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,30 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
test esi, esi jle SHORT G_M31126_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50 G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax - mov byte ptr [rdi+rcx], al
+ cmp eax, esi + jae SHORT G_M31126_IG05 + mov byte ptr [rdi+rax], al
inc eax cmp eax, esi jl SHORT G_M31126_IG03
- ;; size=11 bbWeight=4 PerfScore 11.00
+ ;; size=13 bbWeight=4 PerfScore 15.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 23, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 23 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 31 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info:

+14 (+45.16%) : 501705.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax -; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,27 +24,37 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx test esi, esi jle SHORT G_M31628_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx + ;; size=10 bbWeight=1 PerfScore 2.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx] - xor eax, edx - movzx rax, al - inc ecx - cmp ecx, esi
+ cmp edx, eax + jae SHORT G_M31628_IG06 + movzx r8, byte ptr [rdi+rdx] + xor ecx, r8d + movzx rcx, cl + inc edx + cmp edx, esi
jl SHORT G_M31628_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00 -G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00 +G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+14 (+45.16%) : 501686.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rax -; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> rax single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> rcx +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,27 +24,37 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
+ mov eax, esi
xor ecx, ecx test esi, esi jle SHORT G_M44428_IG04
- ;; size=8 bbWeight=1 PerfScore 1.75
+ xor edx, edx + ;; size=10 bbWeight=1 PerfScore 2.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx] - xor eax, edx - movzx rax, al - inc ecx - cmp ecx, esi
+ cmp edx, eax + jae SHORT G_M44428_IG06 + movzx r8, byte ptr [rdi+rdx] + xor ecx, r8d + movzx rcx, cl + inc edx + cmp edx, esi
jl SHORT G_M44428_IG03
- ;; size=17 bbWeight=4 PerfScore 17.00 -G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=21 bbWeight=4 PerfScore 21.00 +G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
+ mov eax, ecx + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 4, PerfScore 21.50, instruction count 15, allocated bytes for code 31 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 26.00, instruction count 20, allocated bytes for code 45 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.linux.x64.checked.mch

-23 (-14.56%) : 39753.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)

@@ -14,26 +14,25 @@ ; V03 arg3 [V03,T08] ( 3, 2.50) long -> rcx single-def ; V04 loc0 [V04,T05] ( 4, 5 ) ubyte -> r14 ; V05 loc1 [V05,T01] ( 4, 12.50) long -> r13
-; V06 loc2 [V06,T00] ( 6, 16.50) int -> r12
+;* V06 loc2 [V06,T09] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 6 ) int -> rcx -; V09 cse0 [V09,T07] ( 3, 5 ) int -> rax "CSE - aggressive"
+; V08 tmp1 [V08,T04] ( 3, 6 ) int -> rdx +; V09 tmp2 [V09,T00] ( 6, 16.50) long -> rcx "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 3, 5 ) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M26438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15d, esi mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M26438_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] cmp byte ptr [rdi+0x58], 0 @@ -44,20 +43,17 @@ G_M26438_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 4 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M26438_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M26438_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx] mov r14d, 1 mov r13, rcx
- xor r12d, r12d
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0 @@ -65,7 +61,8 @@ G_M26438_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; byrRegs -[rax] test eax, eax jle SHORT G_M26438_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ xor ecx, ecx + ;; size=27 bbWeight=0.50 PerfScore 3.50
G_M26438_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test r13b, 1 je SHORT G_M26438_IG10 @@ -73,26 +70,25 @@ G_M26438_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M26438_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test r14d, r14d je SHORT G_M26438_IG08
- cmp r12d, dword ptr [rbx+0x08]
+ cmp ecx, dword ptr [rbx+0x08]
jae SHORT G_M26438_IG14
- mov ecx, r12d
+ xor edx, edx
cmp dword ptr [rbx+4*rcx+0x10], r15d
- setl cl - movzx rcx, cl
+ setl dl
jmp SHORT G_M26438_IG09
- ;; size=27 bbWeight=2 PerfScore 23.50
+ ;; size=22 bbWeight=2 PerfScore 23.00
G_M26438_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor ecx, ecx
+ xor edx, edx
;; size=2 bbWeight=2 PerfScore 0.50 G_M26438_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- movzx r14, cl
+ movzx r14, dl
;; size=4 bbWeight=2 PerfScore 0.50 G_M26438_IG10: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz shr r13, 1
- inc r12d - cmp eax, r12d
+ inc ecx + cmp eax, ecx
jg SHORT G_M26438_IG06
- ;; size=11 bbWeight=4 PerfScore 8.00
+ ;; size=9 bbWeight=4 PerfScore 8.00
G_M26438_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbx] test r14d, r14d @@ -102,22 +98,20 @@ G_M26438_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 2 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M26438_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M26438_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 22, PerfScore 58.12, instruction count 58, allocated bytes for code 158 (MethodHash=9ebe98b9) for method System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
+; Total bytes of code 135, prolog size 19, PerfScore 54.88, instruction count 51, allocated bytes for code 135 (MethodHash=9ebe98b9) for method System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -125,14 +119,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-27 (-13.50%) : 4178.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)

@@ -10,54 +10,51 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Data.Index>
-; V01 arg1 [V01,T08] ( 3, 6 ) int -> r14 single-def -; V02 arg2 [V02,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]> -; V03 loc0 [V03,T00] ( 8, 25.50) int -> r13 -; V04 loc1 [V04,T07] ( 4, 9 ) int -> rax
+; V01 arg1 [V01,T07] ( 3, 6 ) int -> r14 single-def +; V02 arg2 [V02,T05] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]> +; V03 loc0 [V03,T09] ( 3, 1.50) int -> rcx +; V04 loc1 [V04,T06] ( 4, 9 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T02] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Data.DataColumn> ; V07 tmp2 [V07,T03] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object> ; V08 tmp3 [V08,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> rcx "arr expr" -; V10 cse0 [V10,T05] ( 4, 12.50) long -> r12 "CSE - aggressive"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> rdx "arr expr" +; V10 tmp5 [V10,T00] ( 9, 29.50) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r14d, esi mov r15, rdx ; gcrRegs +[r15]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M46110_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], 0 jle SHORT G_M46110_IG04
+ xor r13d, r13d
;; size=13 bbWeight=1 PerfScore 6.25 G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08]
- jae G_M46110_IG10 - mov r12d, r13d - mov rdx, r12
+ jae SHORT G_M46110_IG10 + mov rdx, r13
shl rdx, 4 mov rdi, gword ptr [rdi+rdx+0x10] cmp r13d, dword ptr [r15+0x08] jae SHORT G_M46110_IG10
- mov rdx, gword ptr [r15+8*r12+0x10]
+ mov rdx, gword ptr [r15+8*r13+0x10]
; gcrRegs +[rdx] mov rsi, qword ptr [(reloc)] ; const ptr mov rdi, gword ptr [rdi+rsi+0x48] @@ -73,61 +70,56 @@ G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] cmp dword ptr [rax+0x08], r13d jg SHORT G_M46110_IG03
- ;; size=84 bbWeight=4 PerfScore 133.00
+ ;; size=77 bbWeight=4 PerfScore 132.00
G_M46110_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx r15] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46110_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx]
- mov rcx, gword ptr [rbx+0x10] - ; gcrRegs +[rcx] - cmp r13d, dword ptr [rcx+0x08]
+ mov ecx, r13d + mov rdx, gword ptr [rbx+0x10] + ; gcrRegs +[rdx] + cmp ecx, dword ptr [rdx+0x08]
jae SHORT G_M46110_IG10
- shl r12, 4 - cmp byte ptr [rcx+r12+0x18], 0
+ shl rcx, 4 + cmp byte ptr [rdx+rcx+0x18], 0
jne SHORT G_M46110_IG08
- ;; size=22 bbWeight=0.50 PerfScore 5.25
+ ;; size=23 bbWeight=0.50 PerfScore 5.38
G_M46110_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rdx rbx]
neg eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46110_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call [CORINFO_HELP_RNGCHKFAIL] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 16, PerfScore 159.38, instruction count 71, allocated bytes for code 200 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
+; Total bytes of code 173, prolog size 13, PerfScore 155.38, instruction count 63, allocated bytes for code 173 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -135,14 +127,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-18 (-13.04%) : 206512.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)

@@ -11,27 +11,26 @@ ; ; V00 this [V00,T10] ( 5, 4 ) ref -> rdi this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer> ; V01 arg1 [V01,T05] ( 5, 10.50) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> rcx
+;* V02 loc0 [V02,T13] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> r8 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
+; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> r10 "arr expr" ; V06 tmp3 [V06,T02] ( 3, 24 ) ref -> r10 "arr expr" ; V07 tmp4 [V07,T03] ( 3, 24 ) ref -> r10 "arr expr" ; V08 tmp5 [V08,T04] ( 2, 16 ) ref -> r10 "arr expr"
-; V09 cse0 [V09,T07] ( 4, 10 ) ref -> rax "CSE - moderate" -; V10 cse1 [V10,T11] ( 2, 1 ) ref -> rdx "CSE - moderate" -; V11 cse2 [V11,T12] ( 3, 5 ) ref -> r8 "CSE - moderate" -; V12 cse3 [V12,T06] ( 3, 12 ) int -> r11 "CSE - moderate" -; V13 cse4 [V13,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
+; V09 tmp6 [V09,T00] ( 8, 28.50) long -> r8 "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 4, 10 ) ref -> rax "CSE - moderate" +; V11 cse1 [V11,T11] ( 2, 1 ) ref -> rcx "CSE - moderate" +; V12 cse2 [V12,T12] ( 3, 5 ) ref -> rdx "CSE - moderate" +; V13 cse3 [V13,T06] ( 3, 12 ) int -> r11 "CSE - moderate" +; V14 cse4 [V14,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M10477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x40] @@ -41,56 +40,50 @@ G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=9 bbWeight=1 PerfScore 3.25 G_M10477_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdi]
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rax rdi]
- xor ecx, ecx - mov rdx, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + mov rdx, rcx
; gcrRegs +[rdx]
- mov r8, rdx - ; gcrRegs +[r8] - mov r8, gword ptr [r8+0x08] - cmp dword ptr [r8+0x08], 0
+ mov rdx, gword ptr [rdx+0x08] + cmp dword ptr [rdx+0x08], 0
jle SHORT G_M10477_IG06
+ xor r8d, r8d
mov r9d, esi ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M10477_IG05: ; bbWeight=4, gcrefRegs=0185 {rax rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10477_IG05: ; bbWeight=4, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rax ; gcrRegs +[r10] mov r11d, dword ptr [r10+0x08] cmp esi, r11d jae SHORT G_M10477_IG08 mov r10, gword ptr [r10+8*r9+0x10]
- cmp ecx, dword ptr [r10+0x08]
+ cmp r8d, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
- mov ebx, ecx - mov dword ptr [r10+4*rbx+0x10], 1
+ mov dword ptr [r10+4*r8+0x10], 1
mov r10, rax
- cmp ecx, r11d
+ cmp r8d, r11d
jae SHORT G_M10477_IG08
- mov r11d, ecx - mov r10, gword ptr [r10+8*r11+0x10]
+ mov r10, gword ptr [r10+8*r8+0x10]
cmp esi, dword ptr [r10+0x08] jae SHORT G_M10477_IG08 mov dword ptr [r10+4*r9+0x10], 1
- inc ecx - cmp dword ptr [r8+0x08], ecx
+ inc r8d + cmp dword ptr [rdx+0x08], r8d
jg SHORT G_M10477_IG05
- ;; size=73 bbWeight=4 PerfScore 95.00
+ ;; size=69 bbWeight=4 PerfScore 93.00
G_M10477_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx r8 r10]
+ ; gcrRegs -[rax rcx rdx r10]
mov byte ptr [rdi+0x48], 1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M10477_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] call [CORINFO_HELP_RNGCHKFAIL] @@ -98,7 +91,7 @@ G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 8, PerfScore 108.88, instruction count 45, allocated bytes for code 138 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
+; Total bytes of code 120, prolog size 4, PerfScore 103.88, instruction count 37, allocated bytes for code 120 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -106,11 +99,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+9 (+32.14%) : 228961.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -11,13 +11,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rcx
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,25 +29,31 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] xor eax, eax
- xor ecx, ecx
test esi, esi jle SHORT G_M59336_IG04
+ xor ecx, ecx
;; size=8 bbWeight=1 PerfScore 1.75 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi + jae SHORT G_M59336_IG05 + movzx rdx, byte ptr [rdi+rcx]
add eax, edx inc ecx cmp ecx, esi jl SHORT G_M59336_IG03
- ;; size=14 bbWeight=4 PerfScore 16.00
+ ;; size=16 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call [CORINFO_HELP_RNGCHKFAIL] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 28, prolog size 4, PerfScore 20.50, instruction count 14, allocated bytes for code 28 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 37, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 37 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info:

+37 (+32.17%) : 124620.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)

@@ -10,37 +10,39 @@ ; ; V00 arg0 [V00,T04] ( 5, 7 ) ref -> rdi class-hnd single-def <ushort[]> ; V01 loc0 [V01,T03] ( 6, 10 ) int -> rax
-; V02 loc1 [V02,T02] ( 7, 11 ) int -> rdx single-def -; V03 loc2 [V03,T00] ( 11, 21 ) int -> rsi -; V04 loc3 [V04,T01] ( 8, 12 ) ushort -> r8
+; V02 loc1 [V02,T02] ( 7, 11 ) int -> rsi single-def +;* V03 loc2 [V03,T07] ( 0, 0 ) int -> zero-ref +; V04 loc3 [V04,T01] ( 8, 12 ) ushort -> registers
;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 6, 8 ) int -> r8 -; V08 cse0 [V08,T06] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V07 tmp1 [V07,T05] ( 6, 8 ) int -> [rbp-0x04] +; V08 tmp2 [V08,T08] ( 7, 0.25) long -> r8 "Widened primary induction variable" +; V09 tmp3 [V09,T00] ( 6, 20.80) long -> rdx "Widened primary induction variable" +; V10 cse0 [V10,T06] ( 4, 3.04) int -> rdx "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M3741_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ sub rsp, 16 + lea rbp, [rsp+0x10] + ;; size=10 bbWeight=1 PerfScore 1.75
G_M3741_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] xor eax, eax
- mov ecx, dword ptr [rdi+0x08] - lea edx, [rcx-0x01] - xor esi, esi - test edx, edx - jl SHORT G_M3741_IG12 - cmp ecx, edx
+ mov edx, dword ptr [rdi+0x08] + lea esi, [rdx-0x01] + test esi, esi + jl SHORT G_M3741_IG13 + cmp edx, esi
jle SHORT G_M3741_IG08
+ xor edx, edx
;; size=18 bbWeight=1 PerfScore 5.50 G_M3741_IG03: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, esi - movzx r8, word ptr [rdi+2*rcx+0x10]
+ movzx r8, word ptr [rdi+2*rdx+0x10]
cmp r8d, 58 jl SHORT G_M3741_IG05
- ;; size=14 bbWeight=3.96 PerfScore 13.86
+ ;; size=12 bbWeight=3.96 PerfScore 12.87
G_M3741_IG04: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz add r8d, -55 jmp SHORT G_M3741_IG06 @@ -49,51 +51,64 @@ G_M3741_IG05: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, b add r8d, -48 ;; size=4 bbWeight=1.98 PerfScore 0.49 G_M3741_IG06: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, edx - sub ecx, esi
+ mov ecx, esi + sub ecx, edx
shl ecx, 2 shl r8d, cl add eax, r8d
- inc esi - cmp esi, edx
+ inc edx + cmp edx, esi
jle SHORT G_M3741_IG03 ;; size=19 bbWeight=3.96 PerfScore 18.81 G_M3741_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi]
- jmp SHORT G_M3741_IG12
+ jmp SHORT G_M3741_IG13
;; size=2 bbWeight=1 PerfScore 2.00
-G_M3741_IG08: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M3741_IG08: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov ecx, esi - movzx r8, word ptr [rdi+2*rcx+0x10] - cmp r8d, 58 - jl SHORT G_M3741_IG10 - ;; size=14 bbWeight=0.04 PerfScore 0.14 -G_M3741_IG09: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - add r8d, -55 - jmp SHORT G_M3741_IG11 - ;; size=6 bbWeight=0.02 PerfScore 0.05 -G_M3741_IG10: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - add r8d, -48 - ;; size=4 bbWeight=0.02 PerfScore 0.01 -G_M3741_IG11: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - mov ecx, edx - sub ecx, esi - shl ecx, 2 - shl r8d, cl - add r8d, eax - mov eax, r8d - inc esi - cmp esi, edx - jle SHORT G_M3741_IG08 - ;; size=22 bbWeight=0.04 PerfScore 0.20 -G_M3741_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ xor r8d, r8d + ;; size=3 bbWeight=0.01 PerfScore 0.00 +G_M3741_IG09: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + cmp r8d, edx + jae SHORT G_M3741_IG14 + movzx rcx, word ptr [rdi+2*r8+0x10] + cmp ecx, 58 + jl SHORT G_M3741_IG11 + ;; size=16 bbWeight=0.04 PerfScore 0.18 +G_M3741_IG10: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + add ecx, -55 + mov dword ptr [rbp-0x04], ecx + jmp SHORT G_M3741_IG12 + ;; size=8 bbWeight=0.02 PerfScore 0.07 +G_M3741_IG11: ; bbWeight=0.02, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + add ecx, -48 + mov dword ptr [rbp-0x04], ecx + ;; size=6 bbWeight=0.02 PerfScore 0.03 +G_M3741_IG12: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + mov r9d, esi + sub r9d, r8d + lea ecx, [4*r9] + mov r9d, dword ptr [rbp-0x04] + shl r9d, cl + add r9d, eax + mov eax, r9d + inc r8d + cmp r8d, esi + jle SHORT G_M3741_IG09 + ;; size=35 bbWeight=0.04 PerfScore 0.24 +G_M3741_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi]
+ add rsp, 16
pop rbp ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=6 bbWeight=1 PerfScore 1.75 +G_M3741_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call [CORINFO_HELP_RNGCHKFAIL] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 115, prolog size 4, PerfScore 48.26, instruction count 44, allocated bytes for code 115 (MethodHash=e7bef162) for method Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
+; Total bytes of code 152, prolog size 10, PerfScore 48.14, instruction count 52, allocated bytes for code 152 (MethodHash=e7bef162) for method Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
; ============================================================ Unwind Info: @@ -101,9 +116,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+28 (+33.33%) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,17 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> r11
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r9 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -40,43 +39,54 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG10 - mov r10d, r9d - movzx r10, word ptr [rdi+2*r10+0x0C]
+ jae SHORT G_M6389_IG11 + movzx r10, word ptr [rdi+2*r9+0x0C]
lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG10 - movzx r11, word ptr [rsi+2*r11+0x0C] - cmp r10d, r11d
+ jae SHORT G_M6389_IG11 + cmp r10w, word ptr [rsi+2*r11+0x0C]
je SHORT G_M6389_IG03
- ;; size=35 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi rdi] - mov eax, r10d - sub eax, r11d - ;; size=6 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=29 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + cmp r11d, r8d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + cmp r11d, eax + jae SHORT G_M6389_IG11 + mov eax, r11d + movzx rax, word ptr [rdi+2*rax+0x0C] + add r11d, edx + cmp r11d, dword ptr [rsi+0x08] + jae SHORT G_M6389_IG11 + mov ecx, r11d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + sub eax, ecx + ;; size=32 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi rdi]
sub eax, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 84 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 112, prolog size 4, PerfScore 72.00, instruction count 39, allocated bytes for code 112 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-35 (-15.22%) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-27 (-14.29%) : 23479.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)

@@ -9,55 +9,52 @@ ; Final local variable assignments ; ; V00 this [V00,T05] ( 6, 11.50) ref -> rbx this class-hnd single-def <System.Data.Index>
-; V01 arg1 [V01,T09] ( 3, 6 ) int -> r14 single-def -; V02 arg2 [V02,T07] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]> -; V03 loc0 [V03,T00] ( 8, 25.50) int -> r13 -; V04 loc1 [V04,T08] ( 4, 9 ) int -> rax
+; V01 arg1 [V01,T08] ( 3, 6 ) int -> r14 single-def +; V02 arg2 [V02,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Object[]> +; V03 loc0 [V03,T10] ( 3, 1.50) int -> rcx +; V04 loc1 [V04,T07] ( 4, 9 ) int -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T03] ( 2, 16 ) ref -> rdi class-hnd "Inlining Arg" <System.Data.DataColumn> ; V07 tmp2 [V07,T04] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Object> ; V08 tmp3 [V08,T01] ( 3, 24 ) ref -> rdi "arr expr" ; V09 tmp4 [V09,T02] ( 3, 24 ) ref -> rdi "argument with side effect"
-; V10 tmp5 [V10,T10] ( 3, 3 ) ref -> rcx "arr expr" -; V11 cse0 [V11,T06] ( 4, 12.50) long -> r12 "CSE - aggressive"
+; V10 tmp5 [V10,T09] ( 3, 3 ) ref -> rdx "arr expr" +; V11 tmp6 [V11,T00] ( 9, 29.50) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r14d, esi mov r15, rdx ; gcrRegs +[r15]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M46110_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], 0 jle SHORT G_M46110_IG04
+ xor r13d, r13d
;; size=13 bbWeight=1 PerfScore 6.25 G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdi] mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08]
- jae G_M46110_IG10 - mov r12d, r13d - mov rsi, r12
+ jae SHORT G_M46110_IG10 + mov rsi, r13
shl rsi, 4 mov rdi, gword ptr [rdi+rsi+0x10] cmp r13d, dword ptr [r15+0x08] jae SHORT G_M46110_IG10
- mov rdx, gword ptr [r15+8*r12+0x10]
+ mov rdx, gword ptr [r15+8*r13+0x10]
; gcrRegs +[rdx] mov rdi, gword ptr [rdi+0x60] mov esi, r14d @@ -72,61 +69,56 @@ G_M46110_IG03: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] cmp dword ptr [rax+0x08], r13d jg SHORT G_M46110_IG03
- ;; size=74 bbWeight=4 PerfScore 127.00
+ ;; size=67 bbWeight=4 PerfScore 126.00
G_M46110_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx r15] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46110_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx]
- mov rcx, gword ptr [rbx+0x10] - ; gcrRegs +[rcx] - cmp r13d, dword ptr [rcx+0x08]
+ mov ecx, r13d + mov rdx, gword ptr [rbx+0x10] + ; gcrRegs +[rdx] + cmp ecx, dword ptr [rdx+0x08]
jae SHORT G_M46110_IG10
- shl r12, 4 - cmp byte ptr [rcx+r12+0x18], 0
+ shl rcx, 4 + cmp byte ptr [rdx+rcx+0x18], 0
jne SHORT G_M46110_IG08
- ;; size=22 bbWeight=0.50 PerfScore 5.25
+ ;; size=23 bbWeight=0.50 PerfScore 5.38
G_M46110_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rdx rbx]
neg eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46110_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M46110_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 189, prolog size 16, PerfScore 153.38, instruction count 70, allocated bytes for code 189 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
+; Total bytes of code 162, prolog size 13, PerfScore 149.38, instruction count 62, allocated bytes for code 162 (MethodHash=26d94be1) for method System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -134,14 +126,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-18 (-13.14%) : 243045.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)

@@ -10,27 +10,26 @@ ; ; V00 this [V00,T10] ( 5, 4 ) ref -> rdi this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer> ; V01 arg1 [V01,T05] ( 5, 10.50) int -> rsi single-def
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> rcx
+;* V02 loc0 [V02,T13] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> r8 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
+; V04 tmp1 [V04,T08] ( 2, 2 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> r10 "arr expr" ; V06 tmp3 [V06,T02] ( 3, 24 ) ref -> r10 "arr expr" ; V07 tmp4 [V07,T03] ( 3, 24 ) ref -> r10 "arr expr" ; V08 tmp5 [V08,T04] ( 2, 16 ) ref -> r10 "arr expr"
-; V09 cse0 [V09,T07] ( 4, 10 ) ref -> rax "CSE - moderate" -; V10 cse1 [V10,T11] ( 2, 1 ) ref -> rdx "CSE - moderate" -; V11 cse2 [V11,T12] ( 3, 5 ) ref -> r8 "CSE - moderate" -; V12 cse3 [V12,T06] ( 3, 12 ) int -> r11 "CSE - moderate" -; V13 cse4 [V13,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
+; V09 tmp6 [V09,T00] ( 8, 28.50) long -> r8 "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 4, 10 ) ref -> rax "CSE - moderate" +; V11 cse1 [V11,T11] ( 2, 1 ) ref -> rcx "CSE - moderate" +; V12 cse2 [V12,T12] ( 3, 5 ) ref -> rdx "CSE - moderate" +; V13 cse3 [V13,T06] ( 3, 12 ) int -> r11 "CSE - moderate" +; V14 cse4 [V14,T09] ( 3, 8.50) long -> r9 hoist "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M10477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi] mov rax, gword ptr [rdi+0x40] @@ -40,56 +39,50 @@ G_M10477_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr ;; size=9 bbWeight=1 PerfScore 3.25 G_M10477_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdi]
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rax rdi]
- xor ecx, ecx - mov rdx, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + mov rdx, rcx
; gcrRegs +[rdx]
- mov r8, rdx - ; gcrRegs +[r8] - mov r8, gword ptr [r8+0x08] - cmp dword ptr [r8+0x08], 0
+ mov rdx, gword ptr [rdx+0x08] + cmp dword ptr [rdx+0x08], 0
jle SHORT G_M10477_IG06
+ xor r8d, r8d
mov r9d, esi ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M10477_IG05: ; bbWeight=4, gcrefRegs=0185 {rax rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M10477_IG05: ; bbWeight=4, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rax ; gcrRegs +[r10] mov r11d, dword ptr [r10+0x08] cmp esi, r11d jae SHORT G_M10477_IG08 mov r10, gword ptr [r10+8*r9+0x10]
- cmp ecx, dword ptr [r10+0x08]
+ cmp r8d, dword ptr [r10+0x08]
jae SHORT G_M10477_IG08
- mov ebx, ecx - mov dword ptr [r10+4*rbx+0x10], 1
+ mov dword ptr [r10+4*r8+0x10], 1
mov r10, rax
- cmp ecx, r11d
+ cmp r8d, r11d
jae SHORT G_M10477_IG08
- mov r11d, ecx - mov r10, gword ptr [r10+8*r11+0x10]
+ mov r10, gword ptr [r10+8*r8+0x10]
cmp esi, dword ptr [r10+0x08] jae SHORT G_M10477_IG08 mov dword ptr [r10+4*r9+0x10], 1
- inc ecx - cmp dword ptr [r8+0x08], ecx
+ inc r8d + cmp dword ptr [rdx+0x08], r8d
jg SHORT G_M10477_IG05
- ;; size=73 bbWeight=4 PerfScore 95.00
+ ;; size=69 bbWeight=4 PerfScore 93.00
G_M10477_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx r8 r10]
+ ; gcrRegs -[rax rcx rdx r10]
mov byte ptr [rdi+0x48], 1 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M10477_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8 - pop rbx
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] call CORINFO_HELP_RNGCHKFAIL @@ -97,7 +90,7 @@ G_M10477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 137, prolog size 8, PerfScore 108.88, instruction count 45, allocated bytes for code 137 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
+; Total bytes of code 119, prolog size 4, PerfScore 103.88, instruction count 37, allocated bytes for code 119 (MethodHash=74a9d712) for method Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -105,11 +98,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+12 (+28.57%) : 177140.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> -; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> +; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> rcx hoist "CSE - aggressive" -; V05 cse1 [V05,T05] ( 2, 8 ) int -> rdx "CSE - aggressive" -; V06 cse2 [V06,T02] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable" +; V05 cse0 [V05,T01] ( 3, 13 ) int -> rcx hoist "CSE - aggressive" +; V06 cse1 [V06,T03] ( 3, 12 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, mov edx, dword ptr [rsi+0x08] cmp edx, eax jle SHORT G_M16586_IG06
- mov edx, eax - movzx r8, word ptr [rdi+2*rdx+0x0C] - cmp r8w, word ptr [rsi+2*rdx+0x0C]
+ cmp eax, ecx + jae SHORT G_M16586_IG07 + movzx r8, word ptr [rdi+2*rax+0x0C] + cmp eax, edx + jae SHORT G_M16586_IG07 + cmp r8w, word ptr [rsi+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=23 bbWeight=4 PerfScore 38.00
+ ;; size=29 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rsi rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 42, prolog size 4, PerfScore 55.50, instruction count 17, allocated bytes for code 42 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 54, prolog size 4, PerfScore 64.50, instruction count 22, allocated bytes for code 54 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================ Unwind Info:

+16 (+30.19%) : 240264.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)

@@ -7,41 +7,47 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 9 ) ref -> rdi class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 6, 19 ) int -> rax
+; V00 arg0 [V00,T02] ( 5, 9 ) ref -> rdi class-hnd single-def <System.String> +;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rcx "CSE - aggressive" -; V04 cse1 [V04,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 7, 23 ) long -> rdx "Widened primary induction variable" +; V04 cse0 [V04,T04] ( 3, 6 ) int -> rcx "CSE - aggressive" +; V05 cse1 [V05,T01] ( 5, 14 ) int -> rsi multi-def "CSE - aggressive" +; V06 cse2 [V06,T03] ( 4, 8 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0
-G_M53831_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M53831_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M53831_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdi]
- xor eax, eax - mov ecx, dword ptr [rdi+0x08] - dec ecx
+ mov eax, dword ptr [rdi+0x08] + lea ecx, [rax-0x01]
test ecx, ecx jle SHORT G_M53831_IG06
- ;; size=11 bbWeight=1 PerfScore 3.75
+ xor edx, edx + ;; size=12 bbWeight=1 PerfScore 4.00
G_M53831_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov edx, eax
+ cmp edx, eax + jae SHORT G_M53831_IG10
cmp word ptr [rdi+2*rdx+0x0C], 46 jne SHORT G_M53831_IG05
- ;; size=10 bbWeight=4 PerfScore 17.00
+ ;; size=12 bbWeight=4 PerfScore 21.00
G_M53831_IG04: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- lea edx, [rax+0x01] - cmp word ptr [rdi+2*rdx+0x0C], 46
+ lea esi, [rdx+0x01] + cmp esi, eax + jae SHORT G_M53831_IG10 + cmp word ptr [rdi+2*rsi+0x0C], 46
je SHORT G_M53831_IG08
- ;; size=11 bbWeight=2 PerfScore 9.00
+ ;; size=15 bbWeight=2 PerfScore 11.50
G_M53831_IG05: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- inc eax - cmp ecx, eax
+ lea esi, [rdx+0x01] + mov edx, esi + cmp ecx, edx
jg SHORT G_M53831_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00
+ ;; size=9 bbWeight=4 PerfScore 8.00
G_M53831_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] xor eax, eax @@ -57,8 +63,13 @@ G_M53831_IG09: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M53831_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 4, PerfScore 38.75, instruction count 22, allocated bytes for code 53 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 47.50, instruction count 28, allocated bytes for code 69 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
; ============================================================ Unwind Info:

+28 (+33.73%) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,17 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> r11
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r9 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,43 +38,54 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG10 - mov r10d, r9d - movzx r10, word ptr [rdi+2*r10+0x0C]
+ jae SHORT G_M6389_IG11 + movzx r10, word ptr [rdi+2*r9+0x0C]
lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG10 - movzx r11, word ptr [rsi+2*r11+0x0C] - cmp r10d, r11d
+ jae SHORT G_M6389_IG11 + cmp r10w, word ptr [rsi+2*r11+0x0C]
je SHORT G_M6389_IG03
- ;; size=35 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi rdi] - mov eax, r10d - sub eax, r11d - ;; size=6 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=29 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + cmp r11d, r8d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + cmp r11d, eax + jae SHORT G_M6389_IG11 + mov eax, r11d + movzx rax, word ptr [rdi+2*rax+0x0C] + add r11d, edx + cmp r11d, dword ptr [rsi+0x08] + jae SHORT G_M6389_IG11 + mov ecx, r11d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + sub eax, ecx + ;; size=32 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi rdi]
sub eax, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 111, prolog size 4, PerfScore 72.00, instruction count 39, allocated bytes for code 111 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-27 (-20.93%) : 443683.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ushort]:RemoveSignedMinValue(System.Span1[ushort]):this (Tier1)

@@ -11,44 +11,44 @@ ; ; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-; V02 loc0 [V02,T00] ( 8,474.77) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call" ;* V06 tmp3 [V06 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T02] ( 5,119.19) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V09 tmp6 [V09,T01] ( 2,120.19) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T02] ( 4,119.19) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T01] ( 3,238.38) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp7 [V10,T00] ( 8,592.96) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M58468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi ; gcrRegs +[r14] mov r15, rsi ; byrRegs +[r15] mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M58468_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz xor r13d, r13d jmp SHORT G_M58468_IG05 ;; size=5 bbWeight=1 PerfScore 2.25 G_M58468_IG03: ; bbWeight=118.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d - cmp word ptr [r15+2*rdi], 0
+ cmp r13d, ebx + jae SHORT G_M58468_IG07 + xor edi, edi + cmp word ptr [r15+2*r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M58468_IG08 - ;; size=21 bbWeight=118.19 PerfScore 679.61
+ jl SHORT G_M58468_IG09 + ;; size=21 bbWeight=118.19 PerfScore 797.80
G_M58468_IG04: ; bbWeight=118.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref inc r13d ;; size=3 bbWeight=118.19 PerfScore 29.55 @@ -59,19 +59,20 @@ G_M58468_IG05: ; bbWeight=119.19, gcrefRegs=4000 {r14}, byrefRegs=8000 {r G_M58468_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r14] ; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50 +G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M58468_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14 ; gcrRegs +[rdi] mov rax, qword ptr [r14] @@ -79,22 +80,16 @@ G_M58468_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 { call [rax+0x28]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- mov word ptr [r15+2*r12], ax - mov eax, r13d - cmp word ptr [r15+2*rax], 0 - setne al - movzx rax, al - test eax, eax - jge SHORT G_M58468_IG04 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M58468_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz - mov edi, r13d - cmp word ptr [r15+2*rdi], 0 - je SHORT G_M58468_IG07
+ mov word ptr [r15+2*r13], ax + jmp SHORT G_M58468_IG03 + ;; size=23 bbWeight=0 PerfScore 0.00 +G_M58468_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + cmp word ptr [r15+2*r13], 0 + je SHORT G_M58468_IG08
jmp SHORT G_M58468_IG04
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 129, prolog size 24, PerfScore 872.90, instruction count 46, allocated bytes for code 129 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 102, prolog size 21, PerfScore 988.34, instruction count 37, allocated bytes for code 102 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
; ============================================================ Unwind Info: @@ -102,14 +97,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-26 (-20.80%) : 438089.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[uint]:RemoveSignedMinValue(System.Span1[uint]):this (Tier1)

@@ -11,43 +11,43 @@ ; ; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
-; V02 loc0 [V02,T00] ( 8,428.11) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call" ;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T02] ( 5,107.53) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V08 tmp5 [V08,T01] ( 2,108.53) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T02] ( 4,107.53) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V08 tmp5 [V08,T01] ( 3,215.05) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V09 tmp6 [V09,T00] ( 8,534.63) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M7684_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi ; gcrRegs +[r14] mov r15, rsi ; byrRegs +[r15] mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M7684_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz xor r13d, r13d jmp SHORT G_M7684_IG05 ;; size=5 bbWeight=1 PerfScore 2.25 G_M7684_IG03: ; bbWeight=106.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d - cmp dword ptr [r15+4*rdi], 0
+ cmp r13d, ebx + jae SHORT G_M7684_IG07 + xor edi, edi + cmp dword ptr [r15+4*r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M7684_IG08 - ;; size=20 bbWeight=106.53 PerfScore 612.53
+ jl SHORT G_M7684_IG09 + ;; size=20 bbWeight=106.53 PerfScore 719.05
G_M7684_IG04: ; bbWeight=106.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref inc r13d ;; size=3 bbWeight=106.53 PerfScore 26.63 @@ -58,19 +58,20 @@ G_M7684_IG05: ; bbWeight=107.53, gcrefRegs=4000 {r14}, byrefRegs=8000 {r1 G_M7684_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r14] ; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50 +G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M7684_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14 ; gcrRegs +[rdi] mov rax, qword ptr [r14] @@ -78,22 +79,16 @@ G_M7684_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r call [rax+0x28]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- mov dword ptr [r15+4*r12], eax - mov eax, r13d - cmp dword ptr [r15+4*rax], 0 - setne al - movzx rax, al - test eax, eax - jge SHORT G_M7684_IG04 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M7684_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz - mov edi, r13d - cmp dword ptr [r15+4*rdi], 0 - je SHORT G_M7684_IG07
+ mov dword ptr [r15+4*r13], eax + jmp SHORT G_M7684_IG03 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M7684_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + cmp dword ptr [r15+4*r13], 0 + je SHORT G_M7684_IG08
jmp SHORT G_M7684_IG04
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 24, PerfScore 788.32, instruction count 46, allocated bytes for code 125 (MethodHash=3ffbe1fb) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
+; Total bytes of code 99, prolog size 21, PerfScore 892.09, instruction count 37, allocated bytes for code 99 (MethodHash=3ffbe1fb) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
; ============================================================ Unwind Info: @@ -101,14 +96,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-26 (-20.80%) : 444750.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ubyte]:RemoveSignedMinValue(System.Span1[ubyte]):this (Tier1)

@@ -11,44 +11,44 @@ ; ; V00 this [V00,T03] ( 4, 2 ) ref -> r14 this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 loc0 [V02,T00] ( 8,515.74) int -> r13
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T02] ( 5,129.44) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V09 tmp6 [V09,T01] ( 2,130.44) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp5 [V08,T02] ( 4,129.44) byref -> r15 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T01] ( 3,258.87) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp7 [V10,T00] ( 8,644.18) long -> r13 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M15780_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r14, rdi ; gcrRegs +[r14] mov r15, rsi ; byrRegs +[r15] mov ebx, edx
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 6.25
G_M15780_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz xor r13d, r13d jmp SHORT G_M15780_IG05 ;; size=5 bbWeight=1 PerfScore 2.25 G_M15780_IG03: ; bbWeight=128.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
- mov edi, r13d - cmp byte ptr [r15+rdi], 0
+ cmp r13d, ebx + jae SHORT G_M15780_IG07 + xor edi, edi + cmp byte ptr [r15+r13], 0
setne dil
- movzx rdi, dil
test edi, edi
- jl SHORT G_M15780_IG08 - ;; size=20 bbWeight=128.44 PerfScore 738.51
+ jl SHORT G_M15780_IG09 + ;; size=20 bbWeight=128.44 PerfScore 866.94
G_M15780_IG04: ; bbWeight=128.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref inc r13d ;; size=3 bbWeight=128.44 PerfScore 32.11 @@ -59,19 +59,20 @@ G_M15780_IG05: ; bbWeight=129.44, gcrefRegs=4000 {r14}, byrefRegs=8000 {r G_M15780_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r14] ; byrRegs -[r15]
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 4.25 -G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=1 PerfScore 3.50 +G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M15780_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[r14] ; byrRegs +[r15]
- mov r12d, r13d
mov rdi, r14 ; gcrRegs +[rdi] mov rax, qword ptr [r14] @@ -79,22 +80,16 @@ G_M15780_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 { call [rax+0x28]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- mov byte ptr [r15+r12], al - mov eax, r13d - cmp byte ptr [r15+rax], 0 - setne al - movzx rax, al - test eax, eax - jge SHORT G_M15780_IG04 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M15780_IG08: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz - mov edi, r13d - cmp byte ptr [r15+rdi], 0 - je SHORT G_M15780_IG07
+ mov byte ptr [r15+r13], al + jmp SHORT G_M15780_IG03 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M15780_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + cmp byte ptr [r15+r13], 0 + je SHORT G_M15780_IG08
jmp SHORT G_M15780_IG04
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 125, prolog size 24, PerfScore 947.16, instruction count 46, allocated bytes for code 125 (MethodHash=123ac25b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
+; Total bytes of code 99, prolog size 21, PerfScore 1072.85, instruction count 37, allocated bytes for code 99 (MethodHash=123ac25b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
; ============================================================ Unwind Info: @@ -102,14 +97,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+28 (+33.73%) : 473459.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)

@@ -8,17 +8,16 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 26 ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 5.69) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 7.38) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 3, 4.69) int -> rdx single-def -; V03 arg3 [V03,T08] ( 5, 4.08) int -> rcx single-def -; V04 loc0 [V04,T04] ( 5, 6.77) int -> r8 -; V05 loc1 [V05,T00] ( 7, 15.38) int -> r9
+; V00 arg0 [V00,T03] ( 5, 6.62) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 9.23) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 5.62) int -> rdx single-def +; V03 arg3 [V03,T06] ( 5, 4.08) int -> rcx single-def +; V04 loc0 [V04,T04] ( 6, 7.77) int -> r8 +; V05 loc1 [V05,T08] ( 5, 4.77) int -> r11
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 3, 6.31) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T07] ( 3, 6.31) int -> r10 "CSE - aggressive" -; V09 cse2 [V09,T02] ( 3, 8.08) int -> r11 "CSE - aggressive" -; V10 cse3 [V10,T09] ( 4, 4.77) int -> rax "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 16.38) long -> r9 "Widened primary induction variable" +; V08 cse0 [V08,T02] ( 6, 10.85) int -> r11 multi-def "CSE - aggressive" +; V09 cse1 [V09,T07] ( 5, 5.69) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -40,43 +39,54 @@ G_M6389_IG03: ; bbWeight=1.77, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 { ;; size=3 bbWeight=1.77 PerfScore 0.44 G_M6389_IG04: ; bbWeight=2.77, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=2.77 PerfScore 3.46 G_M6389_IG05: ; bbWeight=2.69, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG10 - mov r10d, r9d - movzx r10, word ptr [rdi+2*r10+0x0C]
+ jae SHORT G_M6389_IG11 + movzx r10, word ptr [rdi+2*r9+0x0C]
lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG10 - movzx r11, word ptr [rsi+2*r11+0x0C] - cmp r10d, r11d
+ jae SHORT G_M6389_IG11 + cmp r10w, word ptr [rsi+2*r11+0x0C]
je SHORT G_M6389_IG03
- ;; size=35 bbWeight=2.69 PerfScore 30.29 -G_M6389_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi rdi] - mov eax, r10d - sub eax, r11d - ;; size=6 bbWeight=0.92 PerfScore 0.46 -G_M6389_IG07: ; bbWeight=0.92, epilog, nogc, extend
+ ;; size=29 bbWeight=2.69 PerfScore 31.63 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + cmp r11d, r8d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.92, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + cmp r11d, eax + jae SHORT G_M6389_IG11 + mov eax, r11d + movzx rax, word ptr [rdi+2*rax+0x0C] + add r11d, edx + cmp r11d, dword ptr [rsi+0x08] + jae SHORT G_M6389_IG11 + mov ecx, r11d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + sub eax, ecx + ;; size=32 bbWeight=0.92 PerfScore 9.46 +G_M6389_IG08: ; bbWeight=0.92, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.92 PerfScore 1.38
-G_M6389_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi rdi]
sub eax, ecx ;; size=2 bbWeight=0.08 PerfScore 0.02
-G_M6389_IG09: ; bbWeight=0.08, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.08, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.08 PerfScore 0.12
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 4, PerfScore 42.42, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 111, prolog size 4, PerfScore 54.27, instruction count 39, allocated bytes for code 111 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================ Unwind Info:

+8 (+36.36%) : 436649.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[ushort]:RemoveSignedMinValue(System.Span1[ushort]):this (Tier1)

@@ -11,15 +11,16 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-; V02 loc0 [V02,T00] ( 5,511.39) int -> rax
+;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-;* V06 tmp3 [V06,T01] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp3 [V06,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V09 tmp6 [V09,T03] ( 2,128.35) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T02] ( 2,129.35) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 tmp7 [V10,T01] ( 3,256.69) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V11 tmp8 [V11,T00] ( 6,638.73) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -32,11 +33,12 @@ G_M58468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr xor eax, eax jmp SHORT G_M58468_IG04 ;; size=4 bbWeight=1 PerfScore 2.25
-G_M58468_IG03: ; bbWeight=127.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - mov ecx, eax - movzx rcx, word ptr [rsi+2*rcx]
+G_M58468_IG03: ; bbWeight=127.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz + cmp eax, edx + jae SHORT G_M58468_IG06 + movzx rcx, word ptr [rsi+2*rax]
inc eax
- ;; size=8 bbWeight=127.35 PerfScore 318.37
+ ;; size=10 bbWeight=127.35 PerfScore 445.71
G_M58468_IG04: ; bbWeight=128.35, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz cmp eax, edx jl SHORT G_M58468_IG03 @@ -46,8 +48,13 @@ G_M58468_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M58468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 22, prolog size 4, PerfScore 483.80, instruction count 11, allocated bytes for code 22 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 30, prolog size 4, PerfScore 611.14, instruction count 14, allocated bytes for code 30 (MethodHash=46261b9b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
; ============================================================ Unwind Info:

+11 (+37.93%) : 442665.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests1[System.UInt128]:RemoveSignedMinValue(System.Span1[System.UInt128]):this (Tier1)

@@ -11,7 +11,7 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.UInt128]>
-; V02 loc0 [V02,T00] ( 5,457.97) int -> rax
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128> ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128> @@ -24,7 +24,7 @@ ;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.UInt128> ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp11 [V14,T03] ( 2,115.24) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp12 [V15,T02] ( 3,116.24) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T02] ( 4,230.49) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V16 tmp13 [V16 ] ( 0, 0 ) long -> zero-ref "field V04._lower (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) long -> zero-ref "field V04._upper (fldOffset=0x8)" P-INDEP ;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP @@ -41,6 +41,7 @@ ;* V29 tmp26 [V29 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP ; V30 tmp27 [V30,T01] ( 2,456.97) byref -> rcx "BlockOp address local" ;* V31 tmp28 [V31 ] ( 0, 0 ) byref -> zero-ref "BlockOp address local"
+; V32 tmp29 [V32,T00] ( 6,571.72) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -50,27 +51,36 @@ G_M1732_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M1732_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz ; byrRegs +[rsi]
- xor eax, eax
test edx, edx
- jle SHORT G_M1732_IG04 - ;; size=6 bbWeight=1 PerfScore 1.50 -G_M1732_IG03: ; bbWeight=114.24, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz - mov ecx, eax
+ jle SHORT G_M1732_IG05 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M1732_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M1732_IG04: ; bbWeight=114.24, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz + cmp eax, edx + jae SHORT G_M1732_IG06 + mov rcx, rax
shl rcx, 4 add rcx, rsi ; byrRegs +[rcx] cmp dword ptr [rcx], ecx inc eax cmp eax, edx
- jl SHORT G_M1732_IG03 - ;; size=17 bbWeight=114.24 PerfScore 628.34 -G_M1732_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M1732_IG04 + ;; size=22 bbWeight=114.24 PerfScore 771.14 +G_M1732_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rcx rsi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M1732_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 29, prolog size 4, PerfScore 632.59, instruction count 14, allocated bytes for code 29 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
+; Total bytes of code 40, prolog size 4, PerfScore 775.27, instruction count 18, allocated bytes for code 40 (MethodHash=a857f93b) for method System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-35 (-15.22%) : 4667.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-35 (-15.22%) : 42707.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-35 (-15.22%) : 48344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+8 (+33.33%) : 143170.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,30 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
test esi, esi jle SHORT G_M58764_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50 G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax - mov byte ptr [rdi+rcx], 204
+ cmp eax, esi + jae SHORT G_M58764_IG05 + mov byte ptr [rdi+rax], 204
inc eax cmp eax, esi jl SHORT G_M58764_IG03
- ;; size=12 bbWeight=4 PerfScore 11.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 24, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 24 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 32 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info:

+28 (+33.73%) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,17 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rdi class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> rdx single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> rcx single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r8 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r9
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rdi class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> rdx single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> rcx single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r8 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> r11
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> r10 "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> r11 "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r9 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> r11 multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,43 +38,54 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, r8d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz cmp r9d, eax
- jae SHORT G_M6389_IG10 - mov r10d, r9d - movzx r10, word ptr [rdi+2*r10+0x0C]
+ jae SHORT G_M6389_IG11 + movzx r10, word ptr [rdi+2*r9+0x0C]
lea r11d, [rdx+r9] cmp r11d, dword ptr [rsi+0x08]
- jae SHORT G_M6389_IG10 - movzx r11, word ptr [rsi+2*r11+0x0C] - cmp r10d, r11d
+ jae SHORT G_M6389_IG11 + cmp r10w, word ptr [rsi+2*r11+0x0C]
je SHORT G_M6389_IG03
- ;; size=35 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi rdi] - mov eax, r10d - sub eax, r11d - ;; size=6 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=29 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + cmp r11d, r8d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + cmp r11d, eax + jae SHORT G_M6389_IG11 + mov eax, r11d + movzx rax, word ptr [rdi+2*rax+0x0C] + add r11d, edx + cmp r11d, dword ptr [rsi+0x08] + jae SHORT G_M6389_IG11 + mov ecx, r11d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + sub eax, ecx + ;; size=32 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi rdi]
sub eax, ecx ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 4, PerfScore 63.62, instruction count 30, allocated bytes for code 83 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 111, prolog size 4, PerfScore 72.00, instruction count 39, allocated bytes for code 111 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+8 (+34.78%) : 225657.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,30 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 1.25 G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
test esi, esi jle SHORT G_M39013_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50 G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax - mov byte ptr [rdi+rcx], al
+ cmp eax, esi + jae SHORT G_M39013_IG05 + mov byte ptr [rdi+rax], al
inc eax cmp eax, esi jl SHORT G_M39013_IG03
- ;; size=11 bbWeight=4 PerfScore 11.00
+ ;; size=13 bbWeight=4 PerfScore 15.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 23, prolog size 4, PerfScore 15.25, instruction count 12, allocated bytes for code 23 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 19.25, instruction count 15, allocated bytes for code 31 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info:

realworld.run.linux.x64.checked.mch

-35 (-15.22%) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> r15 single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> r13 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r12
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rdi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,27 +22,26 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rsi "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rsi "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> r14 "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> r14 "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> r14 "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rsi "CSE - moderate" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -51,7 +50,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz test r15d, r15d
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov r14d, dword ptr [rdi+0x10] movsxd rsi, r14d mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -61,21 +60,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- xor r12d, r12d
test r14d, r14d jle SHORT G_M22286_IG05
- ;; size=42 bbWeight=0.50 PerfScore 3.25
+ xor r14d, r14d + ;; size=38 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rsi, gword ptr [rbx+0x10] ; gcrRegs +[rsi]
- cmp r12d, dword ptr [rsi+0x10] - jae G_M22286_IG12
+ cmp r14d, dword ptr [rsi+0x10] + jae SHORT G_M22286_IG12
mov rsi, gword ptr [rsi+0x08]
- cmp r12d, dword ptr [rsi+0x08]
+ cmp r14d, dword ptr [rsi+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - mov rsi, gword ptr [rsi+8*rdi+0x10]
+ mov rsi, gword ptr [rsi+8*r14+0x10]
mov rdi, rsi ; gcrRegs +[rdi] mov eax, r15d @@ -85,67 +83,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- cmp r12d, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae SHORT G_M22286_IG11
- mov edi, r12d - lea rdi, bword ptr [r13+8*rdi+0x10]
+ lea rdi, bword ptr [r13+8*r14+0x10]
; byrRegs +[rdi] mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] ; byrRegs -[rdi]
- inc r12d
+ inc r14d
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r12d, dword ptr [rax+0x10]
+ cmp r14d, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=84 bbWeight=4 PerfScore 139.00
+ ;; size=74 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax r13] +[rdi] cmp dword ptr [rdi], edi ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=20 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rdi] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -157,7 +148,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 22, PerfScore 162.12, instruction count 76, allocated bytes for code 230 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 195, prolog size 19, PerfScore 157.00, instruction count 66, allocated bytes for code 195 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -165,14 +156,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-11 (-11.70%) : 17556.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],uint,System.Span1[uint],byref) (FullOpts)

@@ -8,69 +8,65 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[uint]>
-; V01 arg1 [V01,T11] ( 3, 3 ) int -> rdx single-def
+; V01 arg1 [V01,T10] ( 3, 3 ) int -> rdx single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[uint]>
-; V03 arg3 [V03,T10] ( 3, 3 ) byref -> r9 single-def -; V04 loc0 [V04,T04] ( 4, 10 ) long -> r10 -; V05 loc1 [V05,T00] ( 8, 26 ) int -> r11
+; V03 arg3 [V03,T09] ( 3, 3 ) byref -> r9 single-def +; V04 loc0 [V04,T03] ( 4, 10 ) long -> r10 +; V05 loc1 [V05,T11] ( 3, 3 ) int -> rax
; V06 loc2 [V06,T01] ( 3, 12 ) long -> r10 ; V07 loc3 [V07,T02] ( 3, 12 ) long -> rax ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T07] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V10 tmp2 [V10,T06] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V11 tmp3 [V11,T08] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T09] ( 2, 5 ) int -> r8 single-def "field V02._length (fldOffset=0x8)" P-INDEP -; V13 cse0 [V13,T05] ( 3, 9 ) long -> rbx hoist "CSE - aggressive" -; V14 cse1 [V14,T03] ( 3, 12 ) long -> r15 "CSE - aggressive"
+; V09 tmp1 [V09,T06] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V10 tmp2 [V10,T05] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V11 tmp3 [V11,T07] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T08] ( 2, 5 ) int -> r8 single-def "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp5 [V13,T00] ( 8, 29 ) long -> r11 "Widened primary induction variable" +; V14 cse0 [V14,T04] ( 3, 9 ) long -> rbx hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M32639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax - lea rbp, [rsp+0x20] - ;; size=12 bbWeight=1 PerfScore 5.50
+ lea rbp, [rsp+0x10] + ;; size=9 bbWeight=1 PerfScore 3.50
G_M32639_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0282 {rcx rdi r9}, byref, isz ; byrRegs +[rcx rdi r9] xor r10d, r10d
- lea r11d, [rsi-0x01] - test r11d, r11d
+ lea eax, [rsi-0x01] + test eax, eax
jl SHORT G_M32639_IG04
+ mov r11d, eax
mov ebx, edx
- ;; size=14 bbWeight=1 PerfScore 2.25
+ ;; size=15 bbWeight=1 PerfScore 2.50
G_M32639_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0282 {rcx rdi r9}, byref, isz cmp r11d, esi jae SHORT G_M32639_IG06
- mov r15d, r11d - mov r14d, dword ptr [rdi+4*r15]
+ mov r15d, dword ptr [rdi+4*r11]
shl r10, 32
- or r10, r14
+ or r10, r15
mov rax, r10 xor edx, edx div rdx:rax, rbx cmp r11d, r8d jae SHORT G_M32639_IG06
- mov dword ptr [rcx+4*r15], eax
+ mov dword ptr [rcx+4*r11], eax
imul rax, rbx sub r10, rax dec r11d jns SHORT G_M32639_IG03
- ;; size=48 bbWeight=4 PerfScore 286.00
+ ;; size=45 bbWeight=4 PerfScore 285.00
G_M32639_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref ; byrRegs -[rcx rdi] mov dword ptr [r9], r10d ;; size=3 bbWeight=1 PerfScore 1.00 G_M32639_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M32639_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[r9] call CORINFO_HELP_RNGCHKFAIL @@ -78,7 +74,7 @@ G_M32639_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 12, PerfScore 298.00, instruction count 36, allocated bytes for code 94 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
+; Total bytes of code 83, prolog size 9, PerfScore 294.50, instruction count 32, allocated bytes for code 83 (MethodHash=723d8080) for method System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
; ============================================================ Unwind Info: @@ -86,13 +82,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-13 (-6.88%) : 14021.dasm - Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)

@@ -8,21 +8,21 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 6, 15 ) ref -> rbx this class-hnd single-def <Microsoft.ML.Trainers.KMeansModelParameters>
-; V01 arg1 [V01,T06] ( 4, 7 ) byref -> r15 single-def
+; V01 arg1 [V01,T05] ( 4, 7 ) byref -> r15 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[float]> ; V03 loc0 [V03,T10] ( 2, 5 ) float -> [rbp-0x2C] spill-single-def
-; V04 loc1 [V04,T00] ( 8, 29 ) int -> r12
+;* V04 loc1 [V04,T08] ( 0, 0 ) int -> zero-ref
;* V05 loc2 [V05 ] ( 0, 0 ) float -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T09] ( 3, 24 ) simd16 -> mm0 "Cloning non-constant for Math.Max/Min"
-; V08 tmp2 [V08,T07] ( 2, 5 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V09 tmp3 [V09,T08] ( 2, 5 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V08 tmp2 [V08,T06] ( 2, 5 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V09 tmp3 [V09,T07] ( 2, 5 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V10 tmp4 [V10,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V11 tmp5 [V11,T05] ( 2, 16 ) byref -> rdi "argument with side effect"
+; V11 tmp5 [V11,T04] ( 2, 16 ) byref -> rdi "argument with side effect"
; V12 tmp6 [V12,T02] ( 3, 24 ) ref -> rax "arr expr"
-; V13 cse0 [V13,T04] ( 4, 16 ) long -> [rbp-0x38] spill-single-def "CSE - aggressive"
+; V13 tmp7 [V13,T00] ( 10, 37 ) long -> r12 "Widened primary induction variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -31,9 +31,9 @@ G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 24
+ push rax
vzeroupper
- lea rbp, [rsp+0x40]
+ lea rbp, [rsp+0x30]
mov rbx, rdi ; gcrRegs +[rbx] mov r15, rsi @@ -41,25 +41,23 @@ G_M50770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14, rdx ; byrRegs +[r14] mov r13d, ecx
- ;; size=34 bbWeight=1 PerfScore 8.75
+ ;; size=31 bbWeight=1 PerfScore 9.50
G_M50770_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz mov rdi, r15 ; byrRegs +[rdi] call [Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float] ; byrRegs -[rdi] vmovss dword ptr [rbp-0x2C], xmm0
- xor r12d, r12d
cmp dword ptr [rbx+0x34], 0 jle SHORT G_M50770_IG04
+ xor r12d, r12d
;; size=23 bbWeight=1 PerfScore 8.50 G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz mov rdi, gword ptr [rbx+0x20] ; gcrRegs +[rdi] cmp r12d, dword ptr [rdi+0x08] jae SHORT G_M50770_IG05
- mov eax, r12d - mov qword ptr [rbp-0x38], rax - lea rsi, [rax+2*rax]
+ lea rsi, [r12+2*r12]
lea rdi, bword ptr [rdi+8*rsi+0x10] ; gcrRegs -[rdi] ; byrRegs +[rdi] @@ -72,8 +70,7 @@ G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1 ; gcrRegs +[rax] cmp r12d, dword ptr [rax+0x08] jae SHORT G_M50770_IG05
- mov rcx, qword ptr [rbp-0x38] - vaddss xmm0, xmm0, dword ptr [rax+4*rcx+0x10]
+ vaddss xmm0, xmm0, dword ptr [rax+4*r12+0x10]
vmovss xmm1, dword ptr [rbp-0x2C] vaddss xmm0, xmm0, xmm1 cmp r12d, r13d @@ -81,15 +78,15 @@ G_M50770_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1 vxorps xmm2, xmm2, xmm2 vmaxss xmm2, xmm2, xmm0 vfixupimmss xmm2, xmm0, xmmword ptr [reloc @RWD16], 0
- vmovss dword ptr [r14+4*rcx], xmm2
+ vmovss dword ptr [r14+4*r12], xmm2
inc r12d cmp r12d, dword ptr [rbx+0x34] jl SHORT G_M50770_IG03
- ;; size=111 bbWeight=4 PerfScore 207.33
+ ;; size=101 bbWeight=4 PerfScore 198.33
G_M50770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rbx] ; byrRegs -[r14-r15]
- add rsp, 24
+ add rsp, 8
pop rbx pop r12 pop r13 @@ -107,7 +104,7 @@ RWD04 dd 00000000h, 00000000h, 00000000h RWD16 dq 0000000000000800h, 0000000000000000h
-; Total bytes of code 189, prolog size 22, PerfScore 228.83, instruction count 55, allocated bytes for code 189 (MethodHash=73ef39ad) for method Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
+; Total bytes of code 176, prolog size 19, PerfScore 220.58, instruction count 52, allocated bytes for code 176 (MethodHash=73ef39ad) for method Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
; ============================================================ Unwind Info: @@ -115,12 +112,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0E
+ SizeOfProlog : 0x0B
CountOfUnwindCodes: 7 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)

+8 (+21.62%) : 28243.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -8,11 +8,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> rax -; V02 loc1 [V02,T00] ( 5, 17 ) int -> rcx
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,26 +24,32 @@ G_M53167_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] mov eax, 0xD1FFAB1E
- xor ecx, ecx
test esi, esi jle SHORT G_M53167_IG04
+ xor ecx, ecx
;; size=11 bbWeight=1 PerfScore 1.75 G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov edx, ecx - movzx rdx, byte ptr [rdi+rdx]
+ cmp ecx, esi + jae SHORT G_M53167_IG05 + movzx rdx, byte ptr [rdi+rcx]
xor eax, edx imul eax, eax, 0xD1FFAB1E inc ecx cmp ecx, esi jl SHORT G_M53167_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=22 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M53167_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 37, prolog size 4, PerfScore 28.50, instruction count 15, allocated bytes for code 37 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 32.50, instruction count 18, allocated bytes for code 45 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info:

+8 (+22.22%) : 15890.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,33 +9,35 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rax
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V05 tmp2 [V05,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> rsi single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> rsi single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V08 tmp5 [V08,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp mov rbp, rsp ;; size=4 bbWeight=1 PerfScore 1.25 G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- xor eax, eax
test esi, esi jle SHORT G_M41908_IG04
+ xor eax, eax
;; size=6 bbWeight=1 PerfScore 1.50 G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax - cmp word ptr [rdi+2*rcx], 127
+ cmp eax, esi + jae SHORT G_M41908_IG08 + cmp word ptr [rdi+2*rax], 127
ja SHORT G_M41908_IG06 inc eax cmp eax, esi jl SHORT G_M41908_IG03
- ;; size=15 bbWeight=4 PerfScore 23.00
+ ;; size=17 bbWeight=4 PerfScore 27.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rdi] mov eax, 1 @@ -51,8 +53,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 36, prolog size 4, PerfScore 27.50, instruction count 17, allocated bytes for code 36 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 31.50, instruction count 20, allocated bytes for code 44 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+8 (+25.00%) : 1049.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> mm0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> mm0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rax
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> rdi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -32,24 +33,30 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi] vxorps xmm0, xmm0, xmm0
- xor eax, eax
test esi, esi jle SHORT G_M25021_IG04
+ xor eax, eax
;; size=10 bbWeight=1 PerfScore 1.83 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- mov ecx, eax - vaddsd xmm0, xmm0, qword ptr [rdi+8*rcx]
+ cmp eax, esi + jae SHORT G_M25021_IG05 + vaddsd xmm0, xmm0, qword ptr [rdi+8*rax]
inc eax cmp eax, esi jl SHORT G_M25021_IG03
- ;; size=13 bbWeight=4 PerfScore 31.00
+ ;; size=15 bbWeight=4 PerfScore 35.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 7, PerfScore 36.58, instruction count 14, allocated bytes for code 32 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 40, prolog size 7, PerfScore 40.58, instruction count 17, allocated bytes for code 40 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.linux.x64.checked.mch

-20 (-12.82%) : 4452.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> -; V01 loc0 [V01,T06] ( 5, 17 ) int -> r15 -; V02 loc1 [V02,T02] ( 6, 84 ) int -> r13
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> +;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rdi "Inlining Arg" @@ -20,107 +20,102 @@ ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rdi "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> r14 "CSE - moderate" -; V14 cse1 [V14,T04] ( 4, 40 ) long -> r12 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> r14 "Widened primary induction variable" +; V14 tmp11 [V14,T02] ( 6, 82 ) long -> r13 "Widened primary induction variable" +; V15 cse0 [V15,T06] ( 3, 6 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r15d, r15d - mov r14d, dword ptr [rbx+0x08] - test r14d, r14d - jle SHORT G_M29788_IG09
+ mov r15d, dword ptr [rbx+0x08] + test r15d, r15d + jle SHORT G_M29788_IG10 + xor r14d, r14d
;; size=12 bbWeight=1 PerfScore 3.50 G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor r13d, r13d - mov r12d, r15d - mov rdi, gword ptr [rbx+8*r12+0x10]
+ mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M29788_IG08 - ;; size=17 bbWeight=4 PerfScore 26.00 -G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09 + ;; size=11 bbWeight=4 PerfScore 24.00 +G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbx+8*r12+0x10]
+ xor r13d, r13d + ;; size=3 bbWeight=2 PerfScore 0.50 +G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M29788_IG13 - mov eax, r13d - movzx rdi, word ptr [rdi+2*rax+0x0C]
+ jae SHORT G_M29788_IG14 + movzx rdi, word ptr [rdi+2*r13+0x0C]
; gcrRegs -[rdi] cmp edi, 256
- jae SHORT G_M29788_IG06 - ;; size=27 bbWeight=16 PerfScore 152.00 -G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07 + ;; size=25 bbWeight=16 PerfScore 148.00 +G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte ; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 ;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc r13d
- mov rax, gword ptr [rbx+8*r12+0x10]
+ mov rax, gword ptr [rbx+8*r14+0x10]
; gcrRegs +[rax] cmp dword ptr [rax+0x08], r13d
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=18 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc r15d - cmp r14d, r15d
+ inc r14d + cmp r15d, r14d
jg SHORT G_M29788_IG03 ;; size=8 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r12
pop r13 pop r14 pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 19, PerfScore 351.75, instruction count 57, allocated bytes for code 156 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 136, prolog size 16, PerfScore 343.50, instruction count 49, allocated bytes for code 136 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================ Cfi Info: @@ -134,8 +129,5 @@ Cfi Info: CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0 CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8 CodeOffset: 0x07 Op: RelOffset DwarfReg:0xd Offset:0x0
- CodeOffset: 0x09 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x09 Op: RelOffset DwarfReg:0xc Offset:0x0 - CodeOffset: 0x0A Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x0A Op: RelOffset DwarfReg:0x3 Offset:0x0 - CodeOffset: 0x0B Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x08 Op: AdjustCfaOffset Offset:0x8 + CodeOffset: 0x08 Op: RelOffset DwarfReg:0x3 Offset:0x0

-24 (-12.06%) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)

@@ -7,25 +7,24 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 11, 21 ) int -> rbx
+; V00 arg0 [V00,T00] ( 11, 23 ) int -> rbx
; V01 loc0 [V01,T04] ( 5, 6.50) ref -> r15 class-hnd exact single-def <ushort[]>
-; V02 loc1 [V02,T02] ( 11, 20 ) int -> r14 -; V03 loc2 [V03,T05] ( 3, 1.50) ubyte -> rdi single-def
+; V02 loc1 [V02,T05] ( 7, 3.50) int -> rbx +; V03 loc2 [V03,T06] ( 3, 2.50) ubyte -> rdi single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T03] ( 3, 12 ) int -> rax "CSE - aggressive" -; V06 rat0 [V06,T00] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V05 tmp1 [V05,T02] ( 6, 17.50) long -> rcx "Widened primary induction variable" +; V06 cse0 [V06,T03] ( 3, 12 ) int -> rax "CSE - aggressive" +; V07 rat0 [V07,T01] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax - lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov ebx, edi
- ;; size=14 bbWeight=1 PerfScore 5.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M46937_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz lea rdi, [(reloc)] ; ushort[] mov esi, 11 @@ -34,24 +33,21 @@ G_M46937_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 mov r15, rax ; gcrRegs +[r15]
- xor r14d, r14d
cmp ebx, 0xD1FFAB1E jne SHORT G_M46937_IG05
- ;; size=31 bbWeight=1 PerfScore 3.50
+ ;; size=28 bbWeight=1 PerfScore 3.25
G_M46937_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax r15] lea rax, gword ptr [(reloc)] ; gcrRegs +[rax] ;; size=7 bbWeight=0.50 PerfScore 0.25 G_M46937_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62 -G_M46937_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=0.50 PerfScore 1.25 +G_M46937_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r15] mov edi, ebx shr edi, 31 @@ -59,11 +55,11 @@ G_M46937_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 neg eax test edi, edi cmovne ebx, eax
- ;; size=14 bbWeight=0.50 PerfScore 0.88
+ xor ecx, ecx + ;; size=16 bbWeight=1 PerfScore 2.00
G_M46937_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- cmp r14d, 11
+ cmp ecx, 11
jae SHORT G_M46937_IG10
- mov ecx, r14d
mov edx, 0xD1FFAB1E mov eax, edx imul edx:eax, ebx @@ -76,20 +72,21 @@ G_M46937_IG06: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr sub ebx, edx add ebx, 48 mov word ptr [r15+2*rcx+0x10], bx
- inc r14d
+ inc ecx
mov ebx, eax test ebx, ebx jne SHORT G_M46937_IG06
- ;; size=53 bbWeight=4 PerfScore 42.00
+ ;; size=48 bbWeight=4 PerfScore 41.00
G_M46937_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ mov ebx, ecx
test edi, edi je SHORT G_M46937_IG08
- cmp r14d, 11
+ cmp ebx, 11
jae SHORT G_M46937_IG10
- mov edi, r14d
+ mov edi, ebx
mov word ptr [r15+2*rdi+0x10], 45
- inc r14d - ;; size=24 bbWeight=0.50 PerfScore 2.00
+ inc ebx + ;; size=23 bbWeight=0.50 PerfScore 2.12
G_M46937_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rdi, r15 ; gcrRegs +[rdi] @@ -97,23 +94,21 @@ G_M46937_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] ; gcr arg pop 0 mov esi, 11
- sub esi, r14d
+ sub esi, ebx
mov rdi, r15 ; gcrRegs +[rdi]
- mov edx, r14d
+ mov edx, ebx
call <unknown method> ; gcrRegs -[rdi r15] +[rax] ; gcr arg pop 0 nop
- ;; size=28 bbWeight=0.50 PerfScore 1.75
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M46937_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M46937_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -121,7 +116,7 @@ G_M46937_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 199, prolog size 14, PerfScore 59.38, instruction count 69, allocated bytes for code 199 (MethodHash=585e48a6) for method PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
+; Total bytes of code 175, prolog size 11, PerfScore 56.62, instruction count 63, allocated bytes for code 175 (MethodHash=585e48a6) for method PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
; ============================================================ Cfi Info: @@ -131,8 +126,5 @@ Cfi Info: CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0 CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8 CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0 - CodeOffset: 0x06 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x06 Op: RelOffset DwarfReg:0x3 Offset:0x0 - CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8 + CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0

-37 (-11.28%) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Filter(System.Func2[System.Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon]:this (FullOpts)

@@ -13,16 +13,17 @@ ; V03 loc1 [V03,T11] ( 3, 4 ) ref -> r13 class-hnd exact single-def <System.__Canon[]> ; V04 loc2 [V04,T10] ( 4, 6 ) int -> [rbp-0x34] ; V05 loc3 [V05,T03] ( 7, 12 ) int -> [rbp-0x38]
-; V06 loc4 [V06,T00] ( 9, 27 ) int -> [rbp-0x3C] -; V07 loc5 [V07,T07] ( 3, 10 ) ref -> r14 class-hnd <System.__Canon>
+;* V06 loc4 [V06,T15] ( 0, 0 ) int -> zero-ref +; V07 loc5 [V07,T07] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T08] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store" ; V10 tmp2 [V10,T04] ( 6, 12 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]> ; V11 tmp3 [V11,T01] ( 3, 24 ) ref -> rsi "arr expr" ; V12 tmp4 [V12,T06] ( 3, 12 ) ref -> rdi "arr expr"
-; V13 cse0 [V13,T12] ( 3, 3 ) long -> [rbp-0x48] spill-single-def "CSE - moderate" -; V14 cse1 [V14,T13] ( 3, 3 ) long -> r13 "CSE - moderate" -; V15 cse2 [V15,T14] ( 3, 3 ) int -> r14 "CSE - moderate"
+; V13 tmp5 [V13,T00] ( 9, 27 ) long -> r14 "Widened primary induction variable" +; V14 cse0 [V14,T12] ( 3, 3 ) long -> [rbp-0x40] spill-single-def "CSE - moderate" +; V15 cse1 [V15,T13] ( 3, 3 ) long -> r13 "CSE - moderate" +; V16 cse2 [V16,T14] ( 3, 3 ) int -> r14 "CSE - moderate"
; ; Lcl frame size = 40 @@ -41,7 +42,7 @@ G_M51283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, rsi ; gcrRegs +[r15] ;; size=29 bbWeight=1 PerfScore 8.25
-G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rbx+0x18] movsxd r13, r14d mov rsi, r13 @@ -53,7 +54,7 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov rdi, qword ptr [rbx] mov rax, qword ptr [rdi+0x30] ; gcrRegs -[rax]
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x40], rax
mov rdi, qword ptr [rax+0x08] mov rsi, r13 call CORINFO_HELP_NEWARR_1_VC @@ -65,67 +66,63 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov dword ptr [rbp-0x34], eax xor ecx, ecx mov dword ptr [rbp-0x38], ecx
- xor edx, edx
test r14d, r14d
- jle G_M51283_IG06 - ;; size=72 bbWeight=1 PerfScore 16.75
+ jle SHORT G_M51283_IG06 + xor r14d, r14d + ;; size=69 bbWeight=1 PerfScore 16.75
G_M51283_IG03: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi]
- cmp edx, dword ptr [rsi+0x08] - jae G_M51283_IG09 - mov dword ptr [rbp-0x3C], edx - mov edi, edx - mov r14, gword ptr [rsi+8*rdi+0x10] - ; gcrRegs +[r14] - mov rsi, r14
+ cmp r14d, dword ptr [rsi+0x08] + jae G_M51283_IG08 + mov rdx, gword ptr [rsi+8*r14+0x10] + ; gcrRegs +[rdx] + mov gword ptr [rbp-0x48], rdx + ; GC ptr vars +{V07} + mov rsi, rdx
mov rdi, gword ptr [r15+0x08] ; gcrRegs +[rdi] call [r15+0x20]<unknown method>
- ; gcrRegs -[rsi rdi]
+ ; gcrRegs -[rdx rsi rdi]
test eax, eax je SHORT G_M51283_IG05
- ;; size=38 bbWeight=4 PerfScore 63.00 -G_M51283_IG04: ; bbWeight=2, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=4 PerfScore 62.00 +G_M51283_IG04: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
movsxd rsi, dword ptr [rbp-0x38] mov rdi, r13 ; gcrRegs +[rdi]
- mov rdx, r14
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rdx rdi r14]
+ ; gcrRegs -[rdx rdi]
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi]
- mov r14d, dword ptr [rbp-0x3C]
cmp r14d, dword ptr [rdi+0x08]
- jae G_M51283_IG09 - mov eax, r14d - mov edi, dword ptr [rdi+4*rax+0x10]
+ jae SHORT G_M51283_IG08 + mov edi, dword ptr [rdi+4*r14+0x10]
; gcrRegs -[rdi] mov eax, dword ptr [rbp-0x38] cmp eax, dword ptr [r12+0x08]
- jae G_M51283_IG09
+ jae SHORT G_M51283_IG08
mov ecx, eax mov dword ptr [r12+4*rcx+0x10], edi inc eax mov dword ptr [rbp-0x38], eax cmp r14d, dword ptr [rbx+0x1C]
- jge SHORT G_M51283_IG08
+ jge SHORT G_M51283_IG05
mov edi, dword ptr [rbp-0x34] inc edi mov dword ptr [rbp-0x34], edi
- mov dword ptr [rbp-0x3C], r14d - ;; size=84 bbWeight=2 PerfScore 57.00 -G_M51283_IG05: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref - mov r14d, dword ptr [rbp-0x3C]
+ ;; size=67 bbWeight=2 PerfScore 54.00 +G_M51283_IG05: ; bbWeight=4, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
inc r14d cmp r14d, dword ptr [rbx+0x18]
- mov edx, r14d - jl G_M51283_IG03 - ;; size=20 bbWeight=4 PerfScore 22.00
+ jl SHORT G_M51283_IG03 + ;; size=9 bbWeight=4 PerfScore 17.00
G_M51283_IG06: ; bbWeight=1, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref ; gcrRegs -[r15]
- mov r15, qword ptr [rbp-0x48]
+ mov r15, qword ptr [rbp-0x40]
mov rdi, qword ptr [r15] call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -162,18 +159,13 @@ G_M51283_IG07: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M51283_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[r12-r13] - mov dword ptr [rbp-0x3C], r14d - jmp SHORT G_M51283_IG05 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M51283_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12-r13 r15]
+G_M51283_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 23, PerfScore 186.25, instruction count 97, allocated bytes for code 328 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 291, prolog size 23, PerfScore 174.25, instruction count 89, allocated bytes for code 291 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
; ============================================================ Cfi Info:

+10 (+18.18%) : 26937.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -8,22 +8,22 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test ebx, ebx
+ mov edx, ebx + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi + ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx + jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi] mov word ptr [rcx+2*rdi], si
- inc edx - cmp edx, ebx
+ inc edi + cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx r15] pop rbx @@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rbp ret ;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Cfi Info:

+10 (+18.18%) : 19478.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -8,22 +8,22 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test ebx, ebx
+ mov edx, ebx + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi + ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx + jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi] mov word ptr [rcx+2*rdi], si
- inc edx - cmp edx, ebx
+ inc edi + cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx r15] pop rbx @@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rbp ret ;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Cfi Info:

+10 (+18.18%) : 24212.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -8,22 +8,22 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T05] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T09] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T03] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T02] ( 3, 3 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T04] ( 3, 6 ) int -> rbx "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T02] ( 2, 5 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T01] ( 4, 7 ) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T04] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T07] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V16 cse0 [V16,T01] ( 3, 12 ) long -> rdi "CSE - aggressive"
+; V16 tmp12 [V16,T00] ( 7, 25 ) long -> rdi "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -44,18 +44,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test ebx, ebx
+ mov edx, ebx + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=19 bbWeight=1 PerfScore 6.25
+ xor edi, edi + ;; size=21 bbWeight=1 PerfScore 6.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=8002 {rcx r15}, byref, isz
- mov edi, edx
+ cmp edi, ebx + jae SHORT G_M6504_IG05
movzx rsi, byte ptr [r15+rdi] mov word ptr [rcx+2*rdi], si
- inc edx - cmp edx, ebx
+ inc edi + cmp edi, edx
jl SHORT G_M6504_IG03
- ;; size=17 bbWeight=4 PerfScore 19.00
+ ;; size=19 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx r15] pop rbx @@ -63,8 +65,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rbp ret ;; size=5 bbWeight=1 PerfScore 2.50
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 55, prolog size 14, PerfScore 31.75, instruction count 23, allocated bytes for code 55 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 65, prolog size 14, PerfScore 36.00, instruction count 27, allocated bytes for code 65 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 1,688 1,038 579 71 -7,290 +9,194
benchmarks.run_pgo.linux.x64.checked.mch 19,287 2,681 16,210 396 -20,250 +177,899
benchmarks.run_tiered.linux.x64.checked.mch 608 354 226 28 -5,779 +2,928
coreclr_tests.run.linux.x64.checked.mch 21,579 18,252 3,019 308 -96,366 +42,854
libraries.crossgen2.linux.x64.checked.mch 5,108 2,928 1,927 253 -14,469 +33,158
libraries.pmi.linux.x64.checked.mch 6,642 3,814 2,436 392 -17,954 +41,415
libraries_tests.run.linux.x64.Release.mch 28,200 10,223 17,008 969 -63,825 +446,171
librariestestsnotieredcompilation.run.linux.x64.Release.mch 8,452 4,867 3,191 394 -23,655 +53,196
realworld.run.linux.x64.checked.mch 1,438 709 643 86 -3,614 +12,005
smoke_tests.nativeaot.linux.x64.checked.mch 1,015 652 306 57 -3,218 +3,340
94,017 45,518 45,545 2,954 -256,420 +822,160

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 36,216 3,549 32,667 1 (0.00%) 1 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 160,129 63,207 96,922 198 (0.12%) 198 (0.12%)
benchmarks.run_tiered.linux.x64.checked.mch 65,386 50,236 15,150 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,883 355,942 242,941 130 (0.02%) 130 (0.02%)
libraries.crossgen2.linux.x64.checked.mch 234,329 15 234,314 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 296,928 6 296,922 3 (0.00%) 3 (0.00%)
libraries_tests.run.linux.x64.Release.mch 758,879 496,184 262,695 887 (0.12%) 887 (0.12%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,440 21,912 283,528 3 (0.00%) 3 (0.00%)
realworld.run.linux.x64.checked.mch 33,082 9 33,073 1 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,053 10 27,043 361 (1.32%) 361 (1.32%)
2,516,325 991,070 1,525,255 1,584 (0.06%) 1,584 (0.06%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14336053 (overridden on cmd)
Total bytes of diff: 14337957 (overridden on cmd)
Total bytes of delta: 1904 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         309 : 27846.dasm (11.05 % of base)
         302 : 20096.dasm (7.81 % of base)
         281 : 4031.dasm (3.03 % of base)
         256 : 5113.dasm (6.20 % of base)
         253 : 14188.dasm (3.74 % of base)
         247 : 10282.dasm (9.04 % of base)
         113 : 4477.dasm (6.36 % of base)
         108 : 3531.dasm (1.09 % of base)
         107 : 8293.dasm (7.20 % of base)
         105 : 20318.dasm (1.38 % of base)
          88 : 20556.dasm (3.08 % of base)
          87 : 21503.dasm (3.32 % of base)
          83 : 2378.dasm (4.72 % of base)
          73 : 20602.dasm (2.63 % of base)
          69 : 20555.dasm (4.99 % of base)
          65 : 10178.dasm (5.48 % of base)
          65 : 21329.dasm (8.31 % of base)
          65 : 22276.dasm (3.65 % of base)
          65 : 4481.dasm (5.93 % of base)
          62 : 20606.dasm (2.82 % of base)

Top file improvements (bytes):
        -476 : 18107.dasm (-15.02 % of base)
        -395 : 17464.dasm (-11.14 % of base)
        -344 : 23263.dasm (-4.25 % of base)
        -187 : 17710.dasm (-6.96 % of base)
        -158 : 28516.dasm (-1.62 % of base)
        -121 : 28324.dasm (-1.11 % of base)
        -116 : 23264.dasm (-8.12 % of base)
        -112 : 34856.dasm (-1.03 % of base)
        -100 : 18106.dasm (-9.00 % of base)
         -93 : 15126.dasm (-6.03 % of base)
         -61 : 18105.dasm (-5.68 % of base)
         -56 : 9862.dasm (-3.76 % of base)
         -53 : 3726.dasm (-2.48 % of base)
         -50 : 27045.dasm (-5.07 % of base)
         -46 : 10377.dasm (-3.80 % of base)
         -44 : 18108.dasm (-4.79 % of base)
         -43 : 30085.dasm (-8.07 % of base)
         -43 : 17556.dasm (-2.65 % of base)
         -42 : 9861.dasm (-4.64 % of base)
         -41 : 28517.dasm (-2.21 % of base)

91 total files with Code Size differences (50 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         309 (11.05 % of base) : 27846.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         302 (7.81 % of base) : 20096.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         281 (3.03 % of base) : 4031.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         256 (6.20 % of base) : 5113.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
         253 (3.74 % of base) : 14188.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
         247 (9.04 % of base) : 10282.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         113 (6.36 % of base) : 4477.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
         108 (1.09 % of base) : 3531.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
         107 (7.20 % of base) : 8293.dasm - ProtoBuf.Meta.MetaType:ResolveTupleConstructor(System.Type,byref):System.Reflection.ConstructorInfo (FullOpts)
         105 (1.38 % of base) : 20318.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
          88 (3.08 % of base) : 20556.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)
          87 (3.32 % of base) : 21503.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          83 (4.72 % of base) : 2378.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
          73 (2.63 % of base) : 20602.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
          69 (4.99 % of base) : 20555.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
          65 (3.65 % of base) : 22276.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildStoresToTemps(ubyte,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator]):this (FullOpts)
          65 (8.31 % of base) : 21329.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          65 (5.93 % of base) : 4481.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          65 (5.48 % of base) : 10178.dasm - System.Xml.Serialization.XmlReflectionImporter:XsdTypeName(System.Type,System.Xml.Serialization.XmlAttributes,System.String):System.String:this (FullOpts)
          62 (2.82 % of base) : 20606.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)

Top method improvements (bytes):
        -476 (-15.02 % of base) : 18107.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -395 (-11.14 % of base) : 17464.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -344 (-4.25 % of base) : 23263.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -187 (-6.96 % of base) : 17710.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
        -158 (-1.62 % of base) : 28516.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -121 (-1.11 % of base) : 28324.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
        -116 (-8.12 % of base) : 23264.dasm - Benchstone.BenchF.LLoops:Init():this (FullOpts)
        -112 (-1.03 % of base) : 34856.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
        -100 (-9.00 % of base) : 18106.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -93 (-6.03 % of base) : 15126.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         -61 (-5.68 % of base) : 18105.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
         -56 (-3.76 % of base) : 9862.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         -53 (-2.48 % of base) : 3726.dasm - System.Enum:TryFormatFlagNames[uint](System.Enum+EnumInfo`1[uint],uint,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
         -50 (-5.07 % of base) : 27045.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -46 (-3.80 % of base) : 10377.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
         -44 (-4.79 % of base) : 18108.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
         -43 (-8.07 % of base) : 30085.dasm - Benchstone.BenchI.Array2:Bench(int):ubyte (FullOpts)
         -43 (-2.65 % of base) : 17556.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
         -42 (-4.64 % of base) : 9861.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (FullOpts)
         -41 (-2.21 % of base) : 28517.dasm - Benchstone.MDBenchF.MDLLoops:Init():this (FullOpts)

Top method regressions (percentages):
          20 (58.82 % of base) : 29485.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          14 (45.16 % of base) : 26830.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          14 (45.16 % of base) : 29193.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (32.00 % of base) : 17534.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
           8 (28.57 % of base) : 14106.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (25.81 % of base) : 27032.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (25.81 % of base) : 27314.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (25.81 % of base) : 4103.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          13 (25.49 % of base) : 27410.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
           8 (25.00 % of base) : 1046.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
           8 (21.62 % of base) : 22391.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          38 (21.59 % of base) : 35257.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          11 (19.64 % of base) : 29634.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[]):ubyte (FullOpts)
          10 (18.18 % of base) : 7539.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          17 (17.17 % of base) : 29742.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[]):ubyte (FullOpts)
           7 (17.07 % of base) : 27790.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
           8 (17.02 % of base) : 25477.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
           8 (17.02 % of base) : 24001.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
           8 (17.02 % of base) : 34072.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
           8 (17.02 % of base) : 30843.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)

Top method improvements (percentages):
         -35 (-15.22 % of base) : 20020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
        -476 (-15.02 % of base) : 18107.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -20 (-11.76 % of base) : 4125.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -18 (-11.46 % of base) : 16367.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
        -395 (-11.14 % of base) : 17464.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -22 (-10.73 % of base) : 16636.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (FullOpts)
          -9 (-10.00 % of base) : 30633.dasm - Span.IndexerBench:TestSameIndex2(System.Span`1[ubyte],byref,int,int):ubyte (FullOpts)
          -8 (-9.64 % of base) : 13472.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
         -23 (-9.62 % of base) : 35258.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (FullOpts)
        -100 (-9.00 % of base) : 18106.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -29 (-8.76 % of base) : 30086.dasm - Benchstone.BenchI.Array2:Initialize(int[][][]) (FullOpts)
         -25 (-8.71 % of base) : 17733.dasm - NeuralJagged:zero_changes() (FullOpts)
         -32 (-8.56 % of base) : 18067.dasm - Benchstone.BenchF.InvMt:Inner(double[][],byref,byref) (FullOpts)
         -14 (-8.54 % of base) : 33853.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
          -4 (-8.51 % of base) : 12117.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -3 (-8.33 % of base) : 15596.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
         -26 (-8.18 % of base) : 17740.dasm - NeuralJagged:adjust_out_wts() (FullOpts)
         -32 (-8.16 % of base) : 10919.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (FullOpts)
         -32 (-8.16 % of base) : 10918.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (FullOpts)
          -8 (-8.16 % of base) : 33854.dasm - Benchstone.BenchI.BubbleSort:VerifySort(int[],int):ubyte (FullOpts)


benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 71262198 (overridden on cmd)
Total bytes of diff: 71419847 (overridden on cmd)
Total bytes of delta: 157649 (0.22 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         281 : 127067.dasm (9.34 % of base)
         137 : 147568.dasm (2.29 % of base)
         130 : 69896.dasm (8.39 % of base)
         130 : 79418.dasm (8.39 % of base)
         107 : 146220.dasm (6.86 % of base)
         107 : 156881.dasm (6.86 % of base)
         107 : 118915.dasm (6.86 % of base)
         107 : 34469.dasm (6.86 % of base)
         107 : 61474.dasm (6.86 % of base)
         107 : 128445.dasm (6.86 % of base)
         107 : 131179.dasm (6.86 % of base)
         107 : 123019.dasm (6.86 % of base)
         107 : 98604.dasm (6.86 % of base)
          90 : 157480.dasm (1.51 % of base)
          79 : 145248.dasm (5.49 % of base)
          79 : 147746.dasm (5.49 % of base)
          79 : 156587.dasm (5.49 % of base)
          79 : 103124.dasm (5.49 % of base)
          79 : 134764.dasm (5.49 % of base)
          79 : 153751.dasm (5.49 % of base)

Top file improvements (bytes):
        -484 : 78242.dasm (-14.90 % of base)
        -453 : 125771.dasm (-4.10 % of base)
        -400 : 70825.dasm (-11.51 % of base)
        -379 : 84871.dasm (-4.15 % of base)
        -367 : 84856.dasm (-4.03 % of base)
        -342 : 84870.dasm (-4.17 % of base)
        -266 : 78252.dasm (-4.02 % of base)
        -177 : 105906.dasm (-14.08 % of base)
        -166 : 70813.dasm (-10.97 % of base)
        -155 : 70824.dasm (-10.32 % of base)
        -152 : 125770.dasm (-1.55 % of base)
        -145 : 78224.dasm (-11.08 % of base)
        -145 : 78240.dasm (-11.08 % of base)
        -142 : 78254.dasm (-5.70 % of base)
        -132 : 84855.dasm (-4.05 % of base)
        -132 : 84869.dasm (-4.05 % of base)
        -124 : 70812.dasm (-11.23 % of base)
        -124 : 70823.dasm (-11.23 % of base)
        -113 : 54159.dasm (-5.88 % of base)
        -111 : 84867.dasm (-7.79 % of base)

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

Top method regressions (bytes):
         281 (9.34 % of base) : 127067.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
         137 (2.29 % of base) : 147568.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
         130 (8.39 % of base) : 69896.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         130 (8.39 % of base) : 79418.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 146220.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 156881.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 118915.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 34469.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 61474.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 128445.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 131179.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 123019.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         107 (6.86 % of base) : 98604.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
          90 (1.51 % of base) : 157480.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
          79 (5.49 % of base) : 145248.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
          79 (5.49 % of base) : 147746.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
          79 (5.49 % of base) : 156587.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
          79 (5.49 % of base) : 103124.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
          79 (5.49 % of base) : 134764.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
          79 (5.49 % of base) : 153751.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)

Top method improvements (bytes):
        -484 (-14.90 % of base) : 78242.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -453 (-4.10 % of base) : 125771.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        -400 (-11.51 % of base) : 70825.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -379 (-4.15 % of base) : 84871.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -367 (-4.03 % of base) : 84856.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -342 (-4.17 % of base) : 84870.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -266 (-4.02 % of base) : 78252.dasm - LUDecomp:Run():double:this (Tier1)
        -177 (-14.08 % of base) : 105906.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
        -166 (-10.97 % of base) : 70813.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -155 (-10.32 % of base) : 70824.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -152 (-1.55 % of base) : 125770.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -145 (-11.08 % of base) : 78224.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -145 (-11.08 % of base) : 78240.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -142 (-5.70 % of base) : 78254.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -132 (-4.05 % of base) : 84855.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -132 (-4.05 % of base) : 84869.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -124 (-11.23 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -124 (-11.23 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -113 (-5.88 % of base) : 54159.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -111 (-7.79 % of base) : 84867.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)

Top method regressions (percentages):
           9 (23.68 % of base) : 79209.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           9 (23.68 % of base) : 147765.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           9 (23.68 % of base) : 145173.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           8 (21.62 % of base) : 96933.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (16.00 % of base) : 102711.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 95824.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           7 (14.29 % of base) : 103579.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
          54 (12.03 % of base) : 78250.dasm - LUDecomp:Run():double:this (Tier1-OSR)
          54 (12.03 % of base) : 78218.dasm - LUDecomp:Run():double:this (Tier1-OSR)
           9 (11.25 % of base) : 147618.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           9 (11.25 % of base) : 157568.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (9.88 % of base) : 94142.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
         281 (9.34 % of base) : 127067.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          19 (8.44 % of base) : 52491.dasm - Span.Sorting:TestQuickSortArray(int[],int,int) (Tier1)
         130 (8.39 % of base) : 69896.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         130 (8.39 % of base) : 79418.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
          29 (8.26 % of base) : 138239.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
          29 (8.26 % of base) : 102614.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
           8 (7.77 % of base) : 103873.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
          17 (7.11 % of base) : 53404.dasm - Benchstone.BenchI.HeapSort:Test():ubyte:this (Tier1-OSR)

Top method improvements (percentages):
        -484 (-14.90 % of base) : 78242.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -177 (-14.08 % of base) : 105906.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
         -32 (-13.50 % of base) : 116803.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -32 (-13.50 % of base) : 123533.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -32 (-13.50 % of base) : 123489.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -32 (-13.50 % of base) : 64435.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -32 (-13.50 % of base) : 68537.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -16 (-12.60 % of base) : 149848.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
         -16 (-12.60 % of base) : 149873.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
         -30 (-12.35 % of base) : 62228.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
        -400 (-11.51 % of base) : 70825.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -124 (-11.23 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -124 (-11.23 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -145 (-11.08 % of base) : 78224.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -145 (-11.08 % of base) : 78240.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -166 (-10.97 % of base) : 70813.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         -22 (-10.73 % of base) : 62239.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1)
         -22 (-10.68 % of base) : 155880.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
         -26 (-10.40 % of base) : 4281.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier1-OSR)
        -155 (-10.32 % of base) : 70824.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)


benchmarks.run_tiered.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 21436449 (overridden on cmd)
Total bytes of diff: 21433598 (overridden on cmd)
Total bytes of delta: -2851 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         309 : 58518.dasm (11.05 % of base)
         113 : 28319.dasm (6.76 % of base)
         108 : 64375.dasm (1.10 % of base)
          75 : 38620.dasm (16.45 % of base)
          56 : 47189.dasm (8.38 % of base)
          56 : 47587.dasm (3.53 % of base)
          53 : 29911.dasm (1.76 % of base)
          51 : 35240.dasm (1.60 % of base)
          48 : 47594.dasm (1.69 % of base)
          46 : 30684.dasm (1.95 % of base)
          44 : 3873.dasm (3.75 % of base)
          40 : 15009.dasm (0.80 % of base)
          39 : 60258.dasm (3.06 % of base)
          37 : 21989.dasm (6.20 % of base)
          36 : 60252.dasm (2.43 % of base)
          33 : 32926.dasm (1.30 % of base)
          32 : 47130.dasm (1.78 % of base)
          31 : 5296.dasm (4.23 % of base)
          28 : 12219.dasm (3.88 % of base)
          28 : 30681.dasm (1.87 % of base)

Top file improvements (bytes):
        -568 : 35976.dasm (-17.07 % of base)
        -476 : 38627.dasm (-15.02 % of base)
        -395 : 35977.dasm (-11.14 % of base)
        -357 : 38624.dasm (-12.16 % of base)
        -344 : 40519.dasm (-4.25 % of base)
        -158 : 40517.dasm (-4.92 % of base)
        -158 : 58279.dasm (-1.62 % of base)
        -116 : 40518.dasm (-8.12 % of base)
        -115 : 32006.dasm (-6.40 % of base)
        -100 : 38631.dasm (-9.00 % of base)
        -100 : 40516.dasm (-7.68 % of base)
         -96 : 58277.dasm (-2.71 % of base)
         -93 : 32008.dasm (-6.03 % of base)
         -91 : 38622.dasm (-10.77 % of base)
         -61 : 38630.dasm (-5.68 % of base)
         -56 : 24396.dasm (-3.76 % of base)
         -47 : 38619.dasm (-5.30 % of base)
         -44 : 38628.dasm (-4.79 % of base)
         -43 : 64661.dasm (-2.65 % of base)
         -42 : 24395.dasm (-4.64 % of base)

82 total files with Code Size differences (44 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         309 (11.05 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
         113 (6.76 % of base) : 28319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
         108 (1.10 % of base) : 64375.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier1)
          75 (16.45 % of base) : 38620.dasm - LUDecomp:Run():double:this (Tier1-OSR)
          56 (3.53 % of base) : 47587.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (Tier1)
          56 (8.38 % of base) : 47189.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
          53 (1.76 % of base) : 29911.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          51 (1.60 % of base) : 35240.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)
          48 (1.69 % of base) : 47594.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],short,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],Microsoft.CodeAnalysis.CSharp.Binder,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]:this (Tier1)
          46 (1.95 % of base) : 30684.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier1)
          44 (3.75 % of base) : 3873.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
          40 (0.80 % of base) : 15009.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
          39 (3.06 % of base) : 60258.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          37 (6.20 % of base) : 21989.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
          36 (2.43 % of base) : 60252.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          33 (1.30 % of base) : 32926.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
          32 (1.78 % of base) : 47130.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeTypeOrThrow(byref,ubyte,byref):System.__Canon:this (Tier1)
          31 (4.23 % of base) : 5296.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (Tier0-FullOpts)
          28 (3.88 % of base) : 12219.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
          28 (1.87 % of base) : 30681.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier1)

Top method improvements (bytes):
        -568 (-17.07 % of base) : 35976.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -476 (-15.02 % of base) : 38627.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -395 (-11.14 % of base) : 35977.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -357 (-12.16 % of base) : 38624.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -344 (-4.25 % of base) : 40519.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -158 (-4.92 % of base) : 40517.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -158 (-1.62 % of base) : 58279.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -116 (-8.12 % of base) : 40518.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
        -115 (-6.40 % of base) : 32006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -100 (-7.68 % of base) : 40516.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
        -100 (-9.00 % of base) : 38631.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -96 (-2.71 % of base) : 58277.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -93 (-6.03 % of base) : 32008.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         -91 (-10.77 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
         -61 (-5.68 % of base) : 38630.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1)
         -56 (-3.76 % of base) : 24396.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
         -47 (-5.30 % of base) : 38619.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1-OSR)
         -44 (-4.79 % of base) : 38628.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
         -43 (-2.65 % of base) : 64661.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier1)
         -42 (-4.64 % of base) : 24395.dasm - SciMark2.kernel:CopyMatrix(double[][],double[][]) (Tier1)

Top method regressions (percentages):
           8 (23.53 % of base) : 51828.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (21.62 % of base) : 48504.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          75 (16.45 % of base) : 38620.dasm - LUDecomp:Run():double:this (Tier1-OSR)
           8 (16.33 % of base) : 47059.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
           8 (16.00 % of base) : 46977.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (13.56 % of base) : 46913.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
           7 (12.28 % of base) : 21988.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
           9 (11.25 % of base) : 60660.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
         309 (11.05 % of base) : 58518.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          19 (9.18 % of base) : 10084.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          56 (8.38 % of base) : 47189.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
           8 (8.08 % of base) : 65197.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
           8 (7.77 % of base) : 47003.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
          19 (7.69 % of base) : 60273.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          19 (7.60 % of base) : 60262.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
           8 (7.27 % of base) : 33192.dasm - System.Security.Cryptography.X509Certificates.X509Certificate:GetHashCode():int:this (Tier1)
           9 (7.09 % of base) : 32563.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:ConvertFromBDD(System.Text.RegularExpressions.Symbolic.BDD,System.Text.RegularExpressions.Symbolic.CharSetSolver):ulong:this (Tier1)
         113 (6.76 % of base) : 28319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
           8 (6.72 % of base) : 50078.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1)
          10 (6.62 % of base) : 65301.dasm - IfStatements.IfStatements:AndAndAnd():this (Tier1-OSR)

Top method improvements (percentages):
        -568 (-17.07 % of base) : 35976.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         -35 (-15.22 % of base) : 43458.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
        -476 (-15.02 % of base) : 38627.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -16 (-12.80 % of base) : 61569.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
        -357 (-12.16 % of base) : 38624.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
         -36 (-11.80 % of base) : 56030.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -14 (-11.48 % of base) : 2878.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1-OSR)
         -18 (-11.46 % of base) : 31967.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
        -395 (-11.14 % of base) : 35977.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         -91 (-10.77 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
          -8 (-9.64 % of base) : 30993.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
         -16 (-9.04 % of base) : 65201.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
        -100 (-9.00 % of base) : 38631.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -25 (-8.71 % of base) : 36048.dasm - NeuralJagged:zero_changes() (Tier1)
          -3 (-8.33 % of base) : 34158.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (Tier1)
         -26 (-8.18 % of base) : 36043.dasm - NeuralJagged:adjust_out_wts() (Tier1)
        -116 (-8.12 % of base) : 40518.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
        -100 (-7.68 % of base) : 40516.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
         -25 (-7.55 % of base) : 37775.dasm - Benchstone.BenchF.InProd:InitMatrix(double[][]) (Tier1)
         -10 (-7.46 % of base) : 28427.dasm - EMFloat:ShiftMantRight1(byref,ushort[]) (Tier1)


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 403514426 (overridden on cmd)
Total bytes of diff: 403460914 (overridden on cmd)
Total bytes of delta: -53512 (-0.01 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         459 : 392625.dasm (4.16 % of base)
         302 : 503020.dasm (7.80 % of base)
         231 : 114781.dasm (10.39 % of base)
         231 : 143711.dasm (10.39 % of base)
         231 : 159923.dasm (10.39 % of base)
         230 : 398722.dasm (9.26 % of base)
         229 : 392440.dasm (9.33 % of base)
         216 : 246868.dasm (3.92 % of base)
         200 : 399337.dasm (1.76 % of base)
         172 : 398510.dasm (5.21 % of base)
         140 : 299854.dasm (8.11 % of base)
         130 : 111881.dasm (3.48 % of base)
         130 : 154644.dasm (3.48 % of base)
         130 : 29741.dasm (3.30 % of base)
         130 : 134136.dasm (3.48 % of base)
         129 : 241833.dasm (7.63 % of base)
         127 : 175222.dasm (3.40 % of base)
         127 : 173686.dasm (3.60 % of base)
         127 : 68480.dasm (3.61 % of base)
         127 : 34326.dasm (3.59 % of base)

Top file improvements (bytes):
        -484 : 223287.dasm (-14.90 % of base)
        -476 : 500384.dasm (-15.02 % of base)
        -395 : 501986.dasm (-11.14 % of base)
        -344 : 501881.dasm (-4.25 % of base)
        -282 : 223296.dasm (-4.27 % of base)
        -215 : 394360.dasm (-1.34 % of base)
        -180 : 245835.dasm (-5.83 % of base)
        -172 : 527444.dasm (-9.70 % of base)
        -164 : 472381.dasm (-1.27 % of base)
        -164 : 472384.dasm (-1.27 % of base)
        -161 : 582564.dasm (-1.96 % of base)
        -158 : 501942.dasm (-1.62 % of base)
        -145 : 223276.dasm (-11.08 % of base)
        -145 : 223284.dasm (-11.08 % of base)
        -142 : 223289.dasm (-5.70 % of base)
        -135 : 415807.dasm (-9.18 % of base)
        -132 : 223024.dasm (-7.77 % of base)
        -126 : 527447.dasm (-6.98 % of base)
        -125 : 493548.dasm (-5.44 % of base)
        -124 : 234772.dasm (-11.23 % of base)

96 total files with Code Size differences (56 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         459 (4.16 % of base) : 392625.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
         302 (7.80 % of base) : 503020.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         231 (10.39 % of base) : 114781.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
         231 (10.39 % of base) : 143711.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
         231 (10.39 % of base) : 159923.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
         230 (9.26 % of base) : 398722.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
         229 (9.33 % of base) : 392440.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
         216 (3.92 % of base) : 246868.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Tier1)
         200 (1.76 % of base) : 399337.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
         172 (5.21 % of base) : 398510.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveInterfaceMethodToDefaultImplementationOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType,byref):int (Tier1)
         140 (8.11 % of base) : 299854.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier1)
         130 (3.48 % of base) : 111881.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         130 (3.48 % of base) : 154644.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         130 (3.30 % of base) : 29741.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         130 (3.48 % of base) : 134136.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         129 (7.63 % of base) : 241833.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier1)
         127 (3.40 % of base) : 175222.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         127 (3.60 % of base) : 173686.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         127 (3.61 % of base) : 68480.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
         127 (3.59 % of base) : 34326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -484 (-14.90 % of base) : 223287.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -476 (-15.02 % of base) : 500384.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -395 (-11.14 % of base) : 501986.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -344 (-4.25 % of base) : 501881.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -282 (-4.27 % of base) : 223296.dasm - LUDecomp:Run():double:this (Tier1)
        -215 (-1.34 % of base) : 394360.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -180 (-5.83 % of base) : 245835.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (Instrumented Tier1)
        -172 (-9.70 % of base) : 527444.dasm - string1:ProcessJagged2DArray(byref) (FullOpts)
        -164 (-1.27 % of base) : 472381.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftLeftLogicalVariable() (FullOpts)
        -164 (-1.27 % of base) : 472384.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftRightLogicalVariable() (FullOpts)
        -161 (-1.96 % of base) : 582564.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
        -158 (-1.62 % of base) : 501942.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -145 (-11.08 % of base) : 223276.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -145 (-11.08 % of base) : 223284.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -142 (-5.70 % of base) : 223289.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -135 (-9.18 % of base) : 415807.dasm - Complex_Array_Test:TestEntryPoint():int (FullOpts)
        -132 (-7.77 % of base) : 223024.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -126 (-6.98 % of base) : 527447.dasm - string1:ProcessJagged3DArray(System.String[][]) (FullOpts)
        -125 (-5.44 % of base) : 493548.dasm - Test:TestEntryPoint():int (FullOpts)
        -124 (-11.23 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)

Top method regressions (percentages):
          14 (45.16 % of base) : 501686.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          14 (45.16 % of base) : 501705.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (34.78 % of base) : 502680.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
           8 (30.77 % of base) : 541837.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
           8 (30.77 % of base) : 541838.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
           9 (26.47 % of base) : 518305.dasm - CreateSpanTest:Main():int (FullOpts)
           8 (25.81 % of base) : 501689.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (25.81 % of base) : 501692.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (25.81 % of base) : 501708.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          13 (25.49 % of base) : 501695.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
           9 (23.68 % of base) : 361266.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           8 (21.62 % of base) : 505452.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          21 (16.80 % of base) : 501724.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[],int):ubyte (FullOpts)
           7 (16.67 % of base) : 501698.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
           8 (16.33 % of base) : 503839.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (16.00 % of base) : 503508.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 535780.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
          24 (14.46 % of base) : 500443.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
          10 (13.70 % of base) : 501721.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[],int):ubyte (FullOpts)
           8 (13.56 % of base) : 503465.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)

Top method improvements (percentages):
         -11 (-18.03 % of base) : 592287.dasm - test:test_001() (FullOpts)
         -11 (-18.03 % of base) : 592288.dasm - test:test_002() (FullOpts)
         -11 (-18.03 % of base) : 592307.dasm - test:test_021() (FullOpts)
         -11 (-18.03 % of base) : 592308.dasm - test:test_022() (FullOpts)
         -11 (-17.74 % of base) : 592291.dasm - test:test_005() (FullOpts)
         -11 (-17.74 % of base) : 592292.dasm - test:test_006() (FullOpts)
         -11 (-17.74 % of base) : 592311.dasm - test:test_025() (FullOpts)
         -11 (-17.74 % of base) : 592312.dasm - test:test_026() (FullOpts)
         -35 (-15.22 % of base) : 502944.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
        -476 (-15.02 % of base) : 500384.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -484 (-14.90 % of base) : 223287.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -18 (-13.14 % of base) : 518697.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
         -85 (-12.86 % of base) : 592105.dasm - SimpleArray_01.Test:BadMatrixMul2() (FullOpts)
         -16 (-12.80 % of base) : 222748.dasm - NumericSortJagged:LoadNumArrayWithRand(int[][],int,int) (Tier1-OSR)
         -27 (-12.62 % of base) : 537851.dasm - Utils:CompareArray[int](int[],int[]):ubyte (FullOpts)
         -18 (-11.46 % of base) : 502702.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
         -30 (-11.36 % of base) : 399748.dasm - System.Linq.OrderedEnumerable`1[Internal.NativeFormat.VertexHashtable+Entry]:Fill(Internal.NativeFormat.VertexHashtable+Entry[],System.Span`1[Internal.NativeFormat.VertexHashtable+Entry]):this (Tier1-OSR)
         -30 (-11.36 % of base) : 394005.dasm - System.Linq.OrderedEnumerable`1[Internal.NativeFormat.VertexHashtable+Entry]:Fill(Internal.NativeFormat.VertexHashtable+Entry[],System.Span`1[Internal.NativeFormat.VertexHashtable+Entry]):this (Tier1-OSR)
        -124 (-11.23 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -395 (-11.14 % of base) : 501986.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)


libraries.crossgen2.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38726572 (overridden on cmd)
Total bytes of diff: 38745261 (overridden on cmd)
Total bytes of delta: 18689 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         867 : 200572.dasm (3.43 % of base)
         466 : 7159.dasm (5.17 % of base)
         435 : 201540.dasm (12.20 % of base)
         254 : 198002.dasm (10.96 % of base)
         229 : 224372.dasm (9.08 % of base)
         183 : 120071.dasm (5.68 % of base)
         159 : 117049.dasm (3.65 % of base)
         152 : 121083.dasm (10.11 % of base)
         151 : 136655.dasm (5.18 % of base)
         142 : 136666.dasm (6.85 % of base)
         139 : 154637.dasm (4.25 % of base)
         138 : 116354.dasm (4.78 % of base)
         131 : 4379.dasm (1.16 % of base)
         124 : 121082.dasm (4.89 % of base)
         124 : 40755.dasm (2.59 % of base)
         123 : 177382.dasm (8.13 % of base)
         115 : 157947.dasm (7.04 % of base)
         114 : 73494.dasm (5.09 % of base)
         112 : 137023.dasm (1.87 % of base)
         112 : 101557.dasm (10.43 % of base)

Top file improvements (bytes):
        -153 : 27556.dasm (-6.46 % of base)
        -142 : 22321.dasm (-2.73 % of base)
        -127 : 41391.dasm (-10.06 % of base)
         -74 : 21229.dasm (-13.19 % of base)
         -63 : 232186.dasm (-2.28 % of base)
         -51 : 198059.dasm (-4.68 % of base)
         -48 : 200375.dasm (-2.33 % of base)
         -47 : 200080.dasm (-1.98 % of base)
         -44 : 119828.dasm (-6.40 % of base)
         -43 : 200072.dasm (-1.94 % of base)
         -42 : 21858.dasm (-2.27 % of base)
         -42 : 21869.dasm (-1.30 % of base)
         -41 : 2804.dasm (-2.36 % of base)
         -39 : 200373.dasm (-2.09 % of base)
         -39 : 20286.dasm (-2.46 % of base)
         -37 : 2883.dasm (-1.30 % of base)
         -37 : 53784.dasm (-3.07 % of base)
         -37 : 116918.dasm (-2.05 % of base)
         -36 : 161734.dasm (-6.57 % of base)
         -36 : 2011.dasm (-2.71 % of base)

98 total files with Code Size differences (58 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         867 (3.43 % of base) : 200572.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         466 (5.17 % of base) : 7159.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         435 (12.20 % of base) : 201540.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         254 (10.96 % of base) : 198002.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         229 (9.08 % of base) : 224372.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         183 (5.68 % of base) : 120071.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         159 (3.65 % of base) : 117049.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         152 (10.11 % of base) : 121083.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         151 (5.18 % of base) : 136655.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         142 (6.85 % of base) : 136666.dasm - System.Dynamic.Utils.DelegateHelpers:CreateObjectArrayDelegateRefEmit(System.Type,System.Func`2[System.Object[],System.Object]):System.Delegate (FullOpts)
         139 (4.25 % of base) : 154637.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)
         138 (4.78 % of base) : 116354.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         131 (1.16 % of base) : 4379.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
         124 (2.59 % of base) : 40755.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         124 (4.89 % of base) : 121082.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         123 (8.13 % of base) : 177382.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
         115 (7.04 % of base) : 157947.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         114 (5.09 % of base) : 73494.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
         112 (10.43 % of base) : 101557.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:CreateAdditionalMethodTypeParameterSubstitution(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers]):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
         112 (1.87 % of base) : 137023.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)

Top method improvements (bytes):
        -153 (-6.46 % of base) : 27556.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (FullOpts)
        -142 (-2.73 % of base) : 22321.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (FullOpts)
        -127 (-10.06 % of base) : 41391.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetInvocationArgumentsForEscape(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+MixableDestination],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+EscapeArgument]):this (FullOpts)
         -74 (-13.19 % of base) : 21229.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
         -63 (-2.28 % of base) : 232186.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
         -51 (-4.68 % of base) : 198059.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
         -48 (-2.33 % of base) : 200375.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -47 (-1.98 % of base) : 200080.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadDecimalFormat(System.Xml.Xsl.Xslt.NsDecl):this (FullOpts)
         -44 (-6.40 % of base) : 119828.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildEqualsOperandIsBadErrorArgument(System.Text.StringBuilder,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol]):System.String (FullOpts)
         -43 (-1.94 % of base) : 200072.dasm - System.Xml.Xsl.Xslt.XsltInput:GetAttributes(System.Xml.Xsl.Xslt.XsltInput+XsltAttribute[]):System.Xml.Xsl.Xslt.XsltInput+ContextInfo:this (FullOpts)
         -42 (-2.27 % of base) : 21858.dasm - System.Reflection.ConstructorInvoker:InvokeWithManyArgs(System.Span`1[System.Object]):System.Object:this (FullOpts)
         -42 (-1.30 % of base) : 21869.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -41 (-2.36 % of base) : 2804.dasm - System.Data.Common.TimeSpanStorage:Aggregate(int[],int):System.Object:this (FullOpts)
         -39 (-2.09 % of base) : 200373.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
         -39 (-2.46 % of base) : 20286.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
         -37 (-3.07 % of base) : 53784.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.CSharpPragmaWarningStateMap:CreatePragmaWarningStateEntries(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax]):Microsoft.CodeAnalysis.Syntax.AbstractWarningStateMap`1+WarningStateMapEntry[ubyte][] (FullOpts)
         -37 (-2.05 % of base) : 116918.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         -37 (-1.30 % of base) : 2883.dasm - System.Data.Common.SqlDoubleStorage:Aggregate(int[],int):System.Object:this (FullOpts)
         -36 (-6.57 % of base) : 161734.dasm - Microsoft.CodeAnalysis.CommonCompiler:UpdateAnalyzerConfigOptionsProvider(Microsoft.CodeAnalysis.Diagnostics.CompilerAnalyzerConfigOptionsProvider,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult]):Microsoft.CodeAnalysis.Diagnostics.CompilerAnalyzerConfigOptionsProvider (FullOpts)
         -36 (-2.71 % of base) : 2011.dasm - System.Data.Common.UInt64Storage:Aggregate(int[],int):System.Object:this (FullOpts)

Top method regressions (percentages):
          28 (33.33 % of base) : 127211.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          37 (32.17 % of base) : 124620.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
           9 (32.14 % of base) : 228961.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          13 (30.95 % of base) : 143153.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          13 (30.95 % of base) : 160631.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          13 (30.95 % of base) : 209936.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          10 (27.03 % of base) : 180513.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           9 (26.47 % of base) : 143064.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           9 (26.47 % of base) : 160545.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           9 (26.47 % of base) : 157919.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (26.47 % of base) : 158949.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (25.00 % of base) : 161686.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           9 (25.00 % of base) : 144137.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           9 (24.32 % of base) : 39418.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (24.24 % of base) : 188025.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          11 (19.64 % of base) : 25323.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          56 (19.38 % of base) : 21321.dasm - System.Globalization.UmAlQuraCalendar:InitDateMapping():System.Globalization.UmAlQuraCalendar+DateMapping[] (FullOpts)
          44 (18.49 % of base) : 225376.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
           9 (18.37 % of base) : 143191.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           9 (18.37 % of base) : 160668.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

Top method improvements (percentages):
         -23 (-14.56 % of base) : 39753.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
         -27 (-13.50 % of base) : 4178.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
         -74 (-13.19 % of base) : 21229.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
         -18 (-13.04 % of base) : 206512.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
         -20 (-12.58 % of base) : 27755.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -11 (-11.58 % of base) : 226632.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
         -23 (-11.44 % of base) : 142548.dasm - System.Data.Odbc.OdbcDataReader:SetBaseTableNames(System.Data.Odbc.OdbcDataReader+QualifiedTableName):this (FullOpts)
         -32 (-11.39 % of base) : 42543.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
         -15 (-11.36 % of base) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
         -22 (-11.17 % of base) : 192613.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
         -17 (-10.62 % of base) : 201336.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
        -127 (-10.06 % of base) : 41391.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetInvocationArgumentsForEscape(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+MixableDestination],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis+EscapeArgument]):this (FullOpts)
         -35 (-10.03 % of base) : 189123.dasm - MS.Internal.Xml.Cache.XPathNodeInfoTable:ToString():System.String:this (FullOpts)
         -15 (-9.15 % of base) : 132811.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:Dispose():this (FullOpts)
         -14 (-8.54 % of base) : 39310.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:GetBaseRowCounts(System.Collections.Generic.IReadOnlyList`1[int],int):System.Reflection.Metadata.Ecma335.MetadataAggregator+RowCounts[][] (FullOpts)
         -10 (-8.47 % of base) : 229509.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
         -21 (-8.43 % of base) : 31309.dasm - Microsoft.FSharp.Core.StringModule:MapIndexed(Microsoft.FSharp.Core.FSharpFunc`2[int,Microsoft.FSharp.Core.FSharpFunc`2[ushort,ushort]],System.String):System.String (FullOpts)
         -19 (-8.37 % of base) : 198375.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
         -16 (-8.33 % of base) : 206406.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
          -6 (-8.33 % of base) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)


libraries.pmi.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60417780 (overridden on cmd)
Total bytes of diff: 60441241 (overridden on cmd)
Total bytes of delta: 23461 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         868 : 149346.dasm (3.07 % of base)
         328 : 146215.dasm (8.97 % of base)
         308 : 274519.dasm (10.83 % of base)
         302 : 82599.dasm (7.81 % of base)
         298 : 102299.dasm (1.71 % of base)
         265 : 149360.dasm (4.57 % of base)
         263 : 102340.dasm (1.07 % of base)
         248 : 146216.dasm (8.48 % of base)
         236 : 129517.dasm (4.94 % of base)
         218 : 129516.dasm (6.21 % of base)
         216 : 296345.dasm (6.36 % of base)
         186 : 153682.dasm (5.23 % of base)
         181 : 129515.dasm (3.79 % of base)
         178 : 125402.dasm (2.97 % of base)
         168 : 70366.dasm (1.40 % of base)
         159 : 97827.dasm (5.77 % of base)
         133 : 238079.dasm (3.08 % of base)
         126 : 156730.dasm (9.09 % of base)
         120 : 22378.dasm (1.93 % of base)
         119 : 109394.dasm (2.72 % of base)

Top file improvements (bytes):
        -176 : 149353.dasm (-5.82 % of base)
        -161 : 263833.dasm (-1.96 % of base)
        -117 : 24905.dasm (-4.10 % of base)
        -107 : 243656.dasm (-3.32 % of base)
         -96 : 109541.dasm (-6.32 % of base)
         -52 : 26825.dasm (-2.45 % of base)
         -52 : 26826.dasm (-2.44 % of base)
         -51 : 266539.dasm (-1.82 % of base)
         -50 : 26824.dasm (-2.33 % of base)
         -47 : 26796.dasm (-2.40 % of base)
         -47 : 291791.dasm (-4.44 % of base)
         -46 : 146905.dasm (-3.48 % of base)
         -45 : 23991.dasm (-2.25 % of base)
         -43 : 23980.dasm (-3.67 % of base)
         -39 : 128216.dasm (-3.83 % of base)
         -37 : 154894.dasm (-3.17 % of base)
         -37 : 149345.dasm (-4.79 % of base)
         -35 : 141894.dasm (-1.36 % of base)
         -35 : 160936.dasm (-5.61 % of base)
         -35 : 82447.dasm (-15.22 % of base)

98 total files with Code Size differences (58 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         868 (3.07 % of base) : 149346.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         328 (8.97 % of base) : 146215.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
         308 (10.83 % of base) : 274519.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         302 (7.81 % of base) : 82599.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         298 (1.71 % of base) : 102299.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
         265 (4.57 % of base) : 149360.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         263 (1.07 % of base) : 102340.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
         248 (8.48 % of base) : 146216.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         236 (4.94 % of base) : 129517.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         218 (6.21 % of base) : 129516.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         216 (6.36 % of base) : 296345.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         186 (5.23 % of base) : 153682.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         181 (3.79 % of base) : 129515.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         178 (2.97 % of base) : 125402.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         168 (1.40 % of base) : 70366.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
         159 (5.77 % of base) : 97827.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
         133 (3.08 % of base) : 238079.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
         126 (9.09 % of base) : 156730.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         120 (1.93 % of base) : 22378.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         119 (2.72 % of base) : 109394.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)

Top method improvements (bytes):
        -176 (-5.82 % of base) : 149353.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -161 (-1.96 % of base) : 263833.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
        -117 (-4.10 % of base) : 24905.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
        -107 (-3.32 % of base) : 243656.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -96 (-6.32 % of base) : 109541.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitCaseBlocks(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundCaseBlock],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.GeneratedLabelSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol):this (FullOpts)
         -52 (-2.45 % of base) : 26825.dasm - System.Enum:TryFormatFlagNames[int](System.Enum+EnumInfo`1[int],int,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
         -52 (-2.44 % of base) : 26826.dasm - System.Enum:TryFormatFlagNames[long](System.Enum+EnumInfo`1[long],long,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
         -51 (-1.82 % of base) : 266539.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[]) (FullOpts)
         -50 (-2.33 % of base) : 26824.dasm - System.Enum:TryFormatFlagNames[short](System.Enum+EnumInfo`1[short],short,System.Span`1[ushort],byref,byref):ubyte (FullOpts)
         -47 (-2.40 % of base) : 26796.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
         -47 (-4.44 % of base) : 291791.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
         -46 (-3.48 % of base) : 146905.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
         -45 (-2.25 % of base) : 23991.dasm - System.Data.SqlTypes.SqlDecimal:op_Multiply(System.Data.SqlTypes.SqlDecimal,System.Data.SqlTypes.SqlDecimal):System.Data.SqlTypes.SqlDecimal (FullOpts)
         -43 (-3.67 % of base) : 23980.dasm - System.Data.SqlTypes.SqlDecimal:Parse(System.String):System.Data.SqlTypes.SqlDecimal (FullOpts)
         -39 (-3.83 % of base) : 128216.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildEqualsOperandIsBadErrorArgument(System.Text.StringBuilder,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol]):System.String (FullOpts)
         -37 (-4.79 % of base) : 149345.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:ReorderArgumentArray(byref,System.Object):this (FullOpts)
         -37 (-3.17 % of base) : 154894.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (FullOpts)
         -35 (-5.61 % of base) : 160936.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
         -35 (-15.22 % of base) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -35 (-1.36 % of base) : 141894.dasm - System.Xml.Schema.XsdValidator:EndElementIdentityConstraints():this (FullOpts)

Top method regressions (percentages):
          28 (33.73 % of base) : 157853.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          16 (30.19 % of base) : 240264.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
          12 (28.57 % of base) : 177140.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          12 (28.57 % of base) : 159337.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          12 (28.57 % of base) : 290450.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
           8 (28.57 % of base) : 283583.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (23.53 % of base) : 176636.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (23.53 % of base) : 158696.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (23.53 % of base) : 226433.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (23.53 % of base) : 193779.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (22.50 % of base) : 207944.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           8 (22.22 % of base) : 160932.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (22.22 % of base) : 178776.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (21.62 % of base) : 158685.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (21.62 % of base) : 176627.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (21.62 % of base) : 4134.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           7 (21.21 % of base) : 221178.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          50 (19.08 % of base) : 260297.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
           7 (18.92 % of base) : 272438.dasm - System.Linq.Enumerable:Sum[ubyte,long](System.ReadOnlySpan`1[ubyte]):long (FullOpts)
          10 (17.24 % of base) : 31061.dasm - System.Buffers.Text.Base64:IndexOfAnyExceptWhiteSpace(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

Top method improvements (percentages):
         -35 (-15.22 % of base) : 82447.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -27 (-14.29 % of base) : 23479.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
         -18 (-13.14 % of base) : 243045.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
         -24 (-13.11 % of base) : 2464.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
         -11 (-11.70 % of base) : 291687.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
         -17 (-10.69 % of base) : 149773.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
         -12 (-9.60 % of base) : 231882.dasm - Newtonsoft.Json.Utilities.CollectionUtils:FastReverse[ubyte](System.Collections.Generic.List`1[ubyte]) (FullOpts)
         -18 (-9.57 % of base) : 287303.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
         -15 (-9.20 % of base) : 249789.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:Dispose():this (FullOpts)
         -15 (-9.20 % of base) : 249798.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:Dispose():this (FullOpts)
         -18 (-8.87 % of base) : 141250.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
         -15 (-8.77 % of base) : 38682.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[ubyte](System.Converter`2[System.__Canon,ubyte]):System.Collections.Generic.List`1[ubyte]:this (FullOpts)
         -15 (-8.72 % of base) : 38683.dasm - System.Collections.Generic.List`1[ubyte]:ConvertAll[ubyte](System.Converter`2[ubyte,ubyte]):System.Collections.Generic.List`1[ubyte]:this (FullOpts)
         -16 (-8.56 % of base) : 242842.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
         -19 (-8.41 % of base) : 137118.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
          -6 (-8.33 % of base) : 21259.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -12 (-8.22 % of base) : 21843.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
         -17 (-8.21 % of base) : 154838.dasm - Xunit.Sdk.ReflectionMethodInfo:ParametersHaveSameTypes(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]):ubyte (FullOpts)
          -5 (-8.20 % of base) : 206892.dasm - System.Xml.XmlConverter:ToAsciiChars(System.String,ubyte[],int):int (FullOpts)
         -11 (-8.15 % of base) : 264738.dasm - System.Reflection.Context.CollectionServices:CompareArrays[ubyte](ubyte[],ubyte[]):ubyte (FullOpts)


libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 335675120 (overridden on cmd)
Total bytes of diff: 336057466 (overridden on cmd)
Total bytes of delta: 382346 (0.11 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         906 : 748497.dasm (6.94 % of base)
         862 : 745537.dasm (6.50 % of base)
         838 : 514326.dasm (6.34 % of base)
         836 : 236734.dasm (6.35 % of base)
         809 : 88710.dasm (4.32 % of base)
         795 : 328405.dasm (6.40 % of base)
         790 : 417913.dasm (6.07 % of base)
         767 : 208813.dasm (6.15 % of base)
         702 : 358987.dasm (5.30 % of base)
         661 : 405237.dasm (5.23 % of base)
         641 : 576635.dasm (4.88 % of base)
         639 : 608632.dasm (6.65 % of base)
         595 : 351296.dasm (4.56 % of base)
         588 : 488129.dasm (2.76 % of base)
         576 : 212624.dasm (4.52 % of base)
         576 : 97988.dasm (4.56 % of base)
         569 : 380839.dasm (4.52 % of base)
         567 : 196673.dasm (5.98 % of base)
         564 : 350093.dasm (4.84 % of base)
         562 : 136412.dasm (5.82 % of base)

Top file improvements (bytes):
        -859 : 681153.dasm (-7.66 % of base)
        -704 : 456919.dasm (-4.33 % of base)
        -450 : 240726.dasm (-3.30 % of base)
        -352 : 240903.dasm (-1.65 % of base)
        -263 : 421975.dasm (-1.57 % of base)
        -213 : 412762.dasm (-1.33 % of base)
        -183 : 306667.dasm (-6.90 % of base)
        -182 : 295634.dasm (-6.18 % of base)
        -175 : 710851.dasm (-2.31 % of base)
        -129 : 701058.dasm (-4.58 % of base)
        -124 : 85382.dasm (-1.79 % of base)
        -120 : 131158.dasm (-1.49 % of base)
        -104 : 224778.dasm (-4.05 % of base)
        -104 : 91672.dasm (-0.90 % of base)
         -98 : 91650.dasm (-1.66 % of base)
         -94 : 389323.dasm (-3.12 % of base)
         -93 : 693395.dasm (-0.44 % of base)
         -92 : 700191.dasm (-0.83 % of base)
         -90 : 678870.dasm (-3.50 % of base)
         -88 : 713960.dasm (-0.90 % of base)

99 total files with Code Size differences (59 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         906 (6.94 % of base) : 748497.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         862 (6.50 % of base) : 745537.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         838 (6.34 % of base) : 514326.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         836 (6.35 % of base) : 236734.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         809 (4.32 % of base) : 88710.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
         795 (6.40 % of base) : 328405.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         790 (6.07 % of base) : 417913.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         767 (6.15 % of base) : 208813.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         702 (5.30 % of base) : 358987.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         661 (5.23 % of base) : 405237.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         641 (4.88 % of base) : 576635.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         639 (6.65 % of base) : 608632.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         595 (4.56 % of base) : 351296.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         588 (2.76 % of base) : 488129.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (Tier1)
         576 (4.52 % of base) : 212624.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         576 (4.56 % of base) : 97988.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         569 (4.52 % of base) : 380839.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         567 (5.98 % of base) : 196673.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         564 (4.84 % of base) : 350093.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         562 (5.82 % of base) : 136412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -859 (-7.66 % of base) : 681153.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (Tier1)
        -704 (-4.33 % of base) : 456919.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
        -450 (-3.30 % of base) : 240726.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
        -352 (-1.65 % of base) : 240903.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1)
        -263 (-1.57 % of base) : 421975.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -213 (-1.33 % of base) : 412762.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -183 (-6.90 % of base) : 306667.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (Tier1)
        -182 (-6.18 % of base) : 295634.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this (Instrumented Tier1)
        -175 (-2.31 % of base) : 710851.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
        -129 (-4.58 % of base) : 701058.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindSubcaptures[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong]](System.ReadOnlySpan`1[ushort],int,int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+Registers[ulong]:this (Tier1-OSR)
        -124 (-1.79 % of base) : 85382.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
        -120 (-1.49 % of base) : 131158.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (Tier1)
        -104 (-0.90 % of base) : 91672.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
        -104 (-4.05 % of base) : 224778.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1)
         -98 (-1.66 % of base) : 91650.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:CreateAndSetSourceAssemblyReuseData(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):this (Tier1)
         -94 (-3.12 % of base) : 389323.dasm - System.SpanTests.SpanTests:TestMatchValuesLargerMany_Byte() (Tier1-OSR)
         -93 (-0.44 % of base) : 693395.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
         -92 (-0.83 % of base) : 700191.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (Tier1)
         -90 (-3.50 % of base) : 678870.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+<PolymorphicDictionaryInterface_Deserialization>d__108:MoveNext():this (Tier1)
         -88 (-0.90 % of base) : 713960.dasm - System.Text.RegularExpressions.Tests.RegexGeneratorHelper+<SourceGenRegexAsync>d__13:MoveNext():this (Tier1)

Top method regressions (percentages):
          11 (37.93 % of base) : 442665.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[System.UInt128]:RemoveSignedMinValue(System.Span`1[System.UInt128]):this (Tier1)
           8 (36.36 % of base) : 436649.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
          28 (33.73 % of base) : 473459.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
           8 (33.33 % of base) : 382209.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
           8 (25.00 % of base) : 376821.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (Tier1)
           8 (23.53 % of base) : 61857.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (23.53 % of base) : 692747.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (23.53 % of base) : 90825.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (23.53 % of base) : 190959.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (21.62 % of base) : 189427.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (21.62 % of base) : 708299.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (21.62 % of base) : 714520.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (20.00 % of base) : 536893.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (Tier1)
          95 (17.30 % of base) : 477408.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
           8 (16.00 % of base) : 76283.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 118167.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 194735.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 179919.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 183550.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (16.00 % of base) : 74022.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)

Top method improvements (percentages):
         -27 (-20.93 % of base) : 443683.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ushort]:RemoveSignedMinValue(System.Span`1[ushort]):this (Tier1)
         -26 (-20.80 % of base) : 444750.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ubyte]:RemoveSignedMinValue(System.Span`1[ubyte]):this (Tier1)
         -26 (-20.80 % of base) : 438089.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[uint]:RemoveSignedMinValue(System.Span`1[uint]):this (Tier1)
         -26 (-20.80 % of base) : 437968.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ulong]:RemoveSignedMinValue(System.Span`1[ulong]):this (Tier1)
         -26 (-20.80 % of base) : 448220.dasm - System.Numerics.Tensors.Tests.GenericIntegerTensorPrimitivesTests`1[ulong]:RemoveSignedMinValue(System.Span`1[ulong]):this (Tier1)
         -28 (-14.58 % of base) : 701650.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (Tier1)
         -29 (-14.36 % of base) : 96186.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (Tier1)
         -18 (-13.14 % of base) : 309506.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (Tier1)
         -18 (-13.14 % of base) : 108863.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (Tier1)
         -26 (-13.00 % of base) : 309466.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceDependencies():ubyte:this (Tier1)
         -26 (-13.00 % of base) : 108345.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceDependencies():ubyte:this (Tier1)
         -70 (-11.80 % of base) : 232313.dasm - System.Linq.Enumerable:ToArray[short](System.Collections.Generic.IEnumerable`1[short]):short[] (Tier1)
         -11 (-11.70 % of base) : 558005.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (Tier1)
         -11 (-11.70 % of base) : 521228.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (Tier1)
         -40 (-11.70 % of base) : 309464.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceAllDependencies():this (Tier1)
         -40 (-11.70 % of base) : 108343.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:DeduceAllDependencies():this (Tier1)
          -5 (-10.00 % of base) : 518984.dasm - System.Numerics.NumericsHelpers:DangerousMakeTwosComplement(System.Span`1[uint]) (Tier1-OSR)
         -18 (-9.18 % of base) : 707549.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (Tier1)
         -12 (-8.96 % of base) : 519050.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1-OSR)
         -12 (-8.96 % of base) : 519313.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1-OSR)


librariestestsnotieredcompilation.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 132550474 (overridden on cmd)
Total bytes of diff: 132580015 (overridden on cmd)
Total bytes of delta: 29541 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         882 : 59177.dasm (3.12 % of base)
         352 : 48285.dasm (9.99 % of base)
         352 : 42650.dasm (9.99 % of base)
         328 : 4642.dasm (9.12 % of base)
         328 : 61335.dasm (8.98 % of base)
         323 : 146850.dasm (10.53 % of base)
         291 : 175048.dasm (1.61 % of base)
         263 : 59176.dasm (4.48 % of base)
         248 : 61609.dasm (8.71 % of base)
         232 : 77239.dasm (8.61 % of base)
         229 : 177968.dasm (7.45 % of base)
         222 : 77090.dasm (4.68 % of base)
         203 : 19021.dasm (8.73 % of base)
         194 : 7035.dasm (3.23 % of base)
         193 : 19015.dasm (7.46 % of base)
         189 : 263636.dasm (1.79 % of base)
         186 : 137360.dasm (5.27 % of base)
         171 : 77189.dasm (8.07 % of base)
         154 : 77252.dasm (14.31 % of base)
         147 : 77293.dasm (6.29 % of base)

Top file improvements (bytes):
        -220 : 182134.dasm (-4.88 % of base)
        -123 : 257399.dasm (-4.90 % of base)
        -107 : 24652.dasm (-3.38 % of base)
         -74 : 184257.dasm (-3.64 % of base)
         -67 : 184267.dasm (-4.43 % of base)
         -60 : 182483.dasm (-1.79 % of base)
         -59 : 261341.dasm (-0.97 % of base)
         -52 : 179824.dasm (-2.74 % of base)
         -51 : 17217.dasm (-2.23 % of base)
         -47 : 31473.dasm (-4.44 % of base)
         -46 : 176520.dasm (-1.22 % of base)
         -46 : 61703.dasm (-3.58 % of base)
         -46 : 176518.dasm (-1.22 % of base)
         -45 : 158476.dasm (-2.03 % of base)
         -43 : 92801.dasm (-3.67 % of base)
         -42 : 92682.dasm (-2.55 % of base)
         -41 : 159107.dasm (-4.93 % of base)
         -39 : 143820.dasm (-1.72 % of base)
         -38 : 659.dasm (-3.30 % of base)
         -38 : 301220.dasm (-2.07 % of base)

98 total files with Code Size differences (57 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         882 (3.12 % of base) : 59177.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         352 (9.99 % of base) : 48285.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         352 (9.99 % of base) : 42650.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         328 (9.12 % of base) : 4642.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         328 (8.98 % of base) : 61335.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
         323 (10.53 % of base) : 146850.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         291 (1.61 % of base) : 175048.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
         263 (4.48 % of base) : 59176.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         248 (8.71 % of base) : 61609.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         232 (8.61 % of base) : 77239.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddBefore_LLNode_LLNode():this (FullOpts)
         229 (7.45 % of base) : 177968.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         222 (4.68 % of base) : 77090.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode_LLNode():this (FullOpts)
         203 (8.73 % of base) : 19021.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
         194 (3.23 % of base) : 7035.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
         193 (7.46 % of base) : 19015.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
         189 (1.79 % of base) : 263636.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
         186 (5.27 % of base) : 137360.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         171 (8.07 % of base) : 77189.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddBefore_LLNode():this (FullOpts)
         154 (14.31 % of base) : 77252.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddFirst_T_Tests():this (FullOpts)
         147 (6.29 % of base) : 77293.dasm - System.Collections.Tests.LinkedList_Generic_Tests`1[int]:AddAfter_LLNode():this (FullOpts)

Top method improvements (bytes):
        -220 (-4.88 % of base) : 182134.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
        -123 (-4.90 % of base) : 257399.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+<PolymorphicDictionaryInterface_Deserialization>d__108:MoveNext():this (FullOpts)
        -107 (-3.38 % of base) : 24652.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -74 (-3.64 % of base) : 184257.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
         -67 (-4.43 % of base) : 184267.dasm - System.Reflection.Tests.IdentityTests:ParameterEquality1() (FullOpts)
         -60 (-1.79 % of base) : 182483.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataAggregatorTests:RowCounts():this (FullOpts)
         -59 (-0.97 % of base) : 261341.dasm - System.Text.Json.Tests.JsonDocumentTests:GetPropertyFindsLast_WithEscaping(System.String) (FullOpts)
         -52 (-2.74 % of base) : 179824.dasm - System.Reflection.Emit.Tests.AssemblySaveTools:AssertParameters(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]) (FullOpts)
         -51 (-2.23 % of base) : 17217.dasm - System.IO.Tests.StreamConformanceTests+<WriteAsync>d__47:MoveNext():this (FullOpts)
         -47 (-4.44 % of base) : 31473.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
         -46 (-3.58 % of base) : 61703.dasm - System.Xml.Serialization.TypeScope:PopulateMemberInfos(System.Xml.Serialization.StructMapping,System.Xml.Serialization.MemberMapping[],System.Collections.Generic.Dictionary`2[System.String,System.Reflection.MemberInfo]) (FullOpts)
         -46 (-1.22 % of base) : 176518.dasm - System.Xml.Tests.TCAttributeXmlDeclaration:TAXmlDecl_6():int:this (FullOpts)
         -46 (-1.22 % of base) : 176520.dasm - System.Xml.Tests.TCAttributeXmlDeclaration:TAXmlDecl_8():int:this (FullOpts)
         -45 (-2.03 % of base) : 158476.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<PayloadShouldHaveSimilarSizeWhenSplitIntoSegments>d__18:MoveNext():this (FullOpts)
         -43 (-3.67 % of base) : 92801.dasm - System.Data.SqlTypes.SqlDecimal:Parse(System.String):System.Data.SqlTypes.SqlDecimal (FullOpts)
         -42 (-2.55 % of base) : 92682.dasm - System.Data.Tests.DataTableCollectionTest:Add():this (FullOpts)
         -41 (-4.93 % of base) : 159107.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[long]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (FullOpts)
         -39 (-1.72 % of base) : 143820.dasm - System.SpanTests.SpanTests:RunIndexOfAnyAlgComplexityTest[ushort](ushort[]) (FullOpts)
         -38 (-2.07 % of base) : 301220.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType>d__14:MoveNext():this (FullOpts)
         -38 (-3.30 % of base) : 659.dasm - Xunit.Sdk.TypeUtility:GetDisplayNameWithArguments(Xunit.Abstractions.IMethodInfo,System.String,System.Object[],Xunit.Abstractions.ITypeInfo[]):System.String (FullOpts)

Top method regressions (percentages):
           8 (34.78 % of base) : 225657.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
          28 (33.73 % of base) : 97293.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
           8 (33.33 % of base) : 143170.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
           8 (28.57 % of base) : 118028.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (25.00 % of base) : 135955.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
           8 (23.53 % of base) : 179187.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (22.50 % of base) : 196665.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           8 (22.22 % of base) : 4373.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (21.62 % of base) : 46547.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (21.62 % of base) : 267278.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          50 (19.08 % of base) : 71254.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SymmetricExceptWithSameComparer(System.__Canon[],int):this (FullOpts)
           8 (16.33 % of base) : 48843.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (16.33 % of base) : 5260.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (16.33 % of base) : 43152.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (16.00 % of base) : 22110.dasm - Analyzer.Utilities.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 2310.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 47704.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 48612.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 42059.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 16964.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -35 (-15.22 % of base) : 4667.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -35 (-15.22 % of base) : 42707.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -35 (-15.22 % of base) : 48344.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -27 (-14.29 % of base) : 92414.dasm - System.Data.Index:CompareRecordToKey(int,System.Object[]):int:this (FullOpts)
         -18 (-13.14 % of base) : 25011.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
         -11 (-11.70 % of base) : 31502.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
         -17 (-10.69 % of base) : 59020.dasm - Microsoft.VisualBasic.Financial:OptPV2(byref,double):double (FullOpts)
         -18 (-9.57 % of base) : 227000.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
         -15 (-9.20 % of base) : 132188.dasm - System.Linq.Parallel.SortHelper`2[double,int]:Dispose():this (FullOpts)
         -15 (-9.20 % of base) : 132259.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:Dispose():this (FullOpts)
         -33 (-8.97 % of base) : 183190.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -18 (-8.87 % of base) : 172666.dasm - System.Xml.Schema.XmlSchemaSimpleTypeUnion:Clone():System.Xml.Schema.XmlSchemaObject:this (FullOpts)
         -16 (-8.56 % of base) : 24895.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ConstructExpandedParameters():ubyte:this (FullOpts)
          -4 (-8.51 % of base) : 138160.dasm - System.Linq.SingleLinkedNode`1[int]:Fill(System.Span`1[int]):this (FullOpts)
          -4 (-8.51 % of base) : 135903.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
         -19 (-8.41 % of base) : 227498.dasm - System.Xml.XmlTextReaderImpl:StripSpaces(ushort[],int,byref) (FullOpts)
          -6 (-8.33 % of base) : 92392.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -14 (-8.24 % of base) : 76441.dasm - System.Collections.Generic.List`1[int]:ConvertAll[int](System.Converter`2[int,int]):System.Collections.Generic.List`1[int]:this (FullOpts)
         -12 (-8.22 % of base) : 92410.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
         -17 (-8.21 % of base) : 634.dasm - Xunit.Sdk.ReflectionMethodInfo:ParametersHaveSameTypes(System.Reflection.ParameterInfo[],System.Reflection.ParameterInfo[]):ubyte (FullOpts)


realworld.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13174358 (overridden on cmd)
Total bytes of diff: 13182749 (overridden on cmd)
Total bytes of delta: 8391 (0.06 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         328 : 16351.dasm (9.12 % of base)
         281 : 31609.dasm (3.03 % of base)
         265 : 14146.dasm (3.37 % of base)
         231 : 6050.dasm (3.72 % of base)
         195 : 15688.dasm (3.65 % of base)
         168 : 25362.dasm (1.42 % of base)
         162 : 13880.dasm (4.08 % of base)
         160 : 13275.dasm (2.14 % of base)
         120 : 3197.dasm (1.85 % of base)
         117 : 2287.dasm (6.76 % of base)
         110 : 13573.dasm (4.62 % of base)
         107 : 13293.dasm (3.44 % of base)
         102 : 19275.dasm (2.70 % of base)
          88 : 17774.dasm (1.19 % of base)
          88 : 18204.dasm (3.08 % of base)
          87 : 20460.dasm (3.32 % of base)
          84 : 12174.dasm (2.35 % of base)
          83 : 15037.dasm (4.72 % of base)
          83 : 12875.dasm (1.85 % of base)
          82 : 32083.dasm (4.42 % of base)

Top file improvements (bytes):
         -61 : 17500.dasm (-14.77 % of base)
         -50 : 14060.dasm (-4.71 % of base)
         -42 : 14053.dasm (-1.09 % of base)
         -38 : 14058.dasm (-1.09 % of base)
         -38 : 21066.dasm (-0.54 % of base)
         -37 : 325.dasm (-2.38 % of base)
         -35 : 16219.dasm (-15.22 % of base)
         -35 : 13177.dasm (-1.92 % of base)
         -35 : 15812.dasm (-5.61 % of base)
         -34 : 30470.dasm (-0.70 % of base)
         -34 : 318.dasm (-5.50 % of base)
         -32 : 24782.dasm (-2.66 % of base)
         -28 : 11427.dasm (-2.32 % of base)
         -28 : 1105.dasm (-0.43 % of base)
         -26 : 12226.dasm (-0.81 % of base)
         -26 : 14068.dasm (-3.97 % of base)
         -24 : 19777.dasm (-1.04 % of base)
         -24 : 26299.dasm (-1.70 % of base)
         -22 : 18226.dasm (-5.60 % of base)
         -21 : 13992.dasm (-5.74 % of base)

92 total files with Code Size differences (51 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         328 (9.12 % of base) : 16351.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
         281 (3.03 % of base) : 31609.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         265 (3.37 % of base) : 14146.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         231 (3.72 % of base) : 6050.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
         195 (3.65 % of base) : 15688.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
         168 (1.42 % of base) : 25362.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
         162 (4.08 % of base) : 13880.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
         160 (2.14 % of base) : 13275.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         120 (1.85 % of base) : 3197.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
         117 (6.76 % of base) : 2287.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (FullOpts)
         110 (4.62 % of base) : 13573.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
         107 (3.44 % of base) : 13293.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
         102 (2.70 % of base) : 19275.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
          88 (1.19 % of base) : 17774.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
          88 (3.08 % of base) : 18204.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)
          87 (3.32 % of base) : 20460.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          84 (2.35 % of base) : 12174.dasm - SixLabors.ImageSharp.Processing.Processors.Normalization.AdaptiveHistogramEqualizationProcessor`1+CdfTileData+RowIntervalOperation[SixLabors.ImageSharp.PixelFormats.Rgba32]:Invoke(byref):this (FullOpts)
          83 (1.85 % of base) : 12875.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Runtime.IChannel,Microsoft.ML.Transforms.ValueToKeyMappingTransformer+ColInfo[],Microsoft.ML.IDataView,Microsoft.ML.Transforms.ValueToKeyMappingEstimator+ColumnOptionsBase[],Microsoft.ML.IDataView,ubyte):Microsoft.ML.Transforms.ValueToKeyMappingTransformer+TermMap[] (FullOpts)
          83 (4.72 % of base) : 15037.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:BuildChainElements(System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+WorkingChain,byref):System.Security.Cryptography.X509Certificates.X509ChainElement[]:this (FullOpts)
          82 (4.42 % of base) : 32083.dasm - System.Management.Automation.MemberInvocationLoggingOps:LogMemberInvocation(System.String,System.String,System.Object[]) (FullOpts)

Top method improvements (bytes):
         -61 (-14.77 % of base) : 17500.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
         -50 (-4.71 % of base) : 14060.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
         -42 (-1.09 % of base) : 14053.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
         -38 (-0.54 % of base) : 21066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -38 (-1.09 % of base) : 14058.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
         -37 (-2.38 % of base) : 325.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -35 (-5.61 % of base) : 15812.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
         -35 (-15.22 % of base) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -35 (-1.92 % of base) : 13177.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
         -34 (-0.70 % of base) : 30470.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -34 (-5.50 % of base) : 318.dasm - System.Reflection.MethodInvokerCommon:Initialize(System.RuntimeType[],byref,byref,byref) (FullOpts)
         -32 (-2.66 % of base) : 24782.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:IsAnonymousFunctionCompatibleWithDelegate(Microsoft.CodeAnalysis.CSharp.UnboundLambda,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):int (FullOpts)
         -28 (-0.43 % of base) : 1105.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (FullOpts)
         -28 (-2.32 % of base) : 11427.dasm - System.Diagnostics.StackFrameHelper:InitializeSourceInfo(int,ubyte,System.Exception):this (FullOpts)
         -26 (-3.97 % of base) : 14068.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
         -26 (-0.81 % of base) : 12226.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
         -24 (-1.70 % of base) : 26299.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:GetEffectiveArgumentRefKinds(System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[ubyte] (FullOpts)
         -24 (-1.04 % of base) : 19777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PETypeParameterSymbol:GetDeclaredConstraintTypes(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PETypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
         -22 (-5.60 % of base) : 18226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
         -21 (-3.08 % of base) : 5678.dasm - Microsoft.FSharp.Primitives.Basics.Array:stableSortWithKeysAndComparer[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)

Top method regressions (percentages):
           8 (25.00 % of base) : 1049.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
           8 (22.22 % of base) : 15890.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (21.62 % of base) : 28243.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (18.75 % of base) : 13063.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
           8 (16.33 % of base) : 18112.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (16.00 % of base) : 16051.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           8 (16.00 % of base) : 11519.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
           8 (13.79 % of base) : 13251.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
           8 (13.56 % of base) : 18110.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
           7 (13.46 % of base) : 15712.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
          19 (13.38 % of base) : 5920.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
           9 (13.04 % of base) : 13476.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
           7 (12.28 % of base) : 563.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          13 (11.71 % of base) : 16237.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
           7 (10.77 % of base) : 15992.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
           8 (10.26 % of base) : 1675.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
           8 (10.26 % of base) : 1139.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          21 (9.95 % of base) : 23863.dasm - Microsoft.CodeAnalysis.Text.SourceText+LineInfo:IndexOf(int):int:this (FullOpts)
          11 (9.82 % of base) : 15483.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          36 (9.35 % of base) : 10471.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,FSharp.Compiler.Text.Range]:CopyTo(System.Collections.Generic.KeyValuePair`2[System.__Canon,FSharp.Compiler.Text.Range][],int):this (FullOpts)

Top method improvements (percentages):
         -35 (-15.22 % of base) : 16219.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -61 (-14.77 % of base) : 17500.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
         -11 (-11.70 % of base) : 17556.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint],byref) (FullOpts)
         -13 (-6.88 % of base) : 14021.dasm - Microsoft.ML.Trainers.KMeansModelParameters:Map(byref,System.Span`1[float]):this (FullOpts)
         -11 (-6.40 % of base) : 13504.dasm - Microsoft.ML.Data.VectorDataViewType:Equals(Microsoft.ML.Data.DataViewType):ubyte:this (FullOpts)
         -19 (-6.13 % of base) : 13452.dasm - Microsoft.ML.Data.TransformerChain`1[System.__Canon]:Microsoft.ML.ITransformer.GetRowToRowMapper(Microsoft.ML.DataViewSchema):Microsoft.ML.Data.IRowToRowMapper:this (FullOpts)
          -4 (-5.97 % of base) : 18123.dasm - Microsoft.CodeAnalysis.Collections.ByteSequenceComparer:Equals(System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte (FullOpts)
         -21 (-5.74 % of base) : 13992.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+WorkChunkStateBase:Reduce(Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+WorkChunkState[],Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+ReducedWorkChunkState) (FullOpts)
         -19 (-5.69 % of base) : 23634.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:FixParameters(System.Func`3[Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer,int,ubyte],byref):int:this (FullOpts)
         -35 (-5.61 % of base) : 15812.dasm - Microsoft.CodeAnalysis.CommandLineParser:<RemoveQuotesAndSlashesEx>g__removeFastPath|43_1(System.ReadOnlyMemory`1[ushort]):System.Nullable`1[System.ReadOnlyMemory`1[ushort]] (FullOpts)
         -22 (-5.60 % of base) : 18226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol:.ctor(Microsoft.CodeAnalysis.PEAssembly,Microsoft.CodeAnalysis.DocumentationProvider,ubyte,ubyte):this (FullOpts)
         -34 (-5.50 % of base) : 318.dasm - System.Reflection.MethodInvokerCommon:Initialize(System.RuntimeType[],byref,byref,byref) (FullOpts)
          -6 (-5.45 % of base) : 16823.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder:ToArray():Microsoft.CodeAnalysis.GreenNode[]:this (FullOpts)
         -12 (-5.38 % of base) : 13861.dasm - Microsoft.ML.Internal.Utilities.NormStr+Pool:GrowTable():this (FullOpts)
          -3 (-5.26 % of base) : 16226.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetFullWidth(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder):int (FullOpts)
          -2 (-5.26 % of base) : 18371.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.String):int (FullOpts)
         -11 (-4.93 % of base) : 15709.dasm - Microsoft.ML.Internal.Utilities.SequencePool:GrowTable():this (FullOpts)
         -12 (-4.92 % of base) : 13050.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Batch:SetAll(Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]):this (FullOpts)
          -2 (-4.88 % of base) : 13677.dasm - Microsoft.ML.Data.VectorDataViewType:ComputeSize(System.Collections.Immutable.ImmutableArray`1[int]):int (FullOpts)
          -6 (-4.88 % of base) : 11516.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (FullOpts)


smoke_tests.nativeaot.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 4064942 (overridden on cmd)
Total bytes of diff: 4065064 (overridden on cmd)
Total bytes of delta: 122 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         437 : 14342.dasm (5.20 % of base)
         121 : 16642.dasm (8.46 % of base)
          65 : 9013.dasm (6.06 % of base)
          50 : 2083.dasm (3.71 % of base)
          45 : 15091.dasm (3.56 % of base)
          37 : 21859.dasm (10.00 % of base)
          36 : 1165.dasm (1.97 % of base)
          36 : 12414.dasm (1.97 % of base)
          34 : 20383.dasm (5.66 % of base)
          33 : 5942.dasm (5.62 % of base)
          33 : 2049.dasm (5.77 % of base)
          32 : 14374.dasm (12.96 % of base)
          31 : 12576.dasm (4.59 % of base)
          30 : 12544.dasm (7.50 % of base)
          30 : 19217.dasm (7.52 % of base)
          30 : 26656.dasm (7.52 % of base)
          30 : 23947.dasm (7.52 % of base)
          30 : 7695.dasm (7.52 % of base)
          23 : 3784.dasm (2.93 % of base)
          22 : 21861.dasm (6.25 % of base)

Top file improvements (bytes):
         -45 : 13499.dasm (-1.57 % of base)
         -45 : 13500.dasm (-2.42 % of base)
         -37 : 10212.dasm (-11.28 % of base)
         -33 : 12580.dasm (-0.77 % of base)
         -33 : 9098.dasm (-0.77 % of base)
         -31 : 2913.dasm (-1.23 % of base)
         -31 : 15046.dasm (-2.70 % of base)
         -30 : 9582.dasm (-9.46 % of base)
         -30 : 24985.dasm (-9.46 % of base)
         -30 : 17535.dasm (-9.46 % of base)
         -30 : 22275.dasm (-9.46 % of base)
         -30 : 13498.dasm (-0.99 % of base)
         -28 : 15861.dasm (-3.11 % of base)
         -27 : 16980.dasm (-5.92 % of base)
         -27 : 13457.dasm (-5.92 % of base)
         -24 : 21860.dasm (-12.06 % of base)
         -21 : 11097.dasm (-3.44 % of base)
         -21 : 23265.dasm (-3.44 % of base)
         -21 : 18529.dasm (-3.44 % of base)
         -21 : 15818.dasm (-1.10 % of base)

86 total files with Code Size differences (53 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         437 (5.20 % of base) : 14342.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         121 (8.46 % of base) : 16642.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
          65 (6.06 % of base) : 9013.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          50 (3.71 % of base) : 2083.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          45 (3.56 % of base) : 15091.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMultiDimArrayAccess(System.Linq.Expressions.Expression,System.Linq.Expressions.IArgumentProvider,int):System.Linq.Expressions.Interpreter.ByRefUpdater:this (FullOpts)
          37 (10.00 % of base) : 21859.dasm - PInvokeTests.Program:StructTest_Array(PInvokeTests.Program+SequentialStruct[],int):ubyte (FullOpts)
          36 (1.97 % of base) : 1165.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          36 (1.97 % of base) : 12414.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          34 (5.66 % of base) : 20383.dasm - System.Reflection.Runtime.General.ReflectionCoreCallbacksImplementation:LookupMethodForCreateDelegate(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.String,ubyte,ubyte):System.Reflection.Runtime.MethodInfos.RuntimeMethodInfo (FullOpts)
          33 (5.62 % of base) : 5942.dasm - Internal.Reflection.Execution.ConstraintValidator:TypeParametersAreCompatible(System.Type[],System.Type[],System.Type[],ubyte):ubyte (FullOpts)
          33 (5.77 % of base) : 2049.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          32 (12.96 % of base) : 14374.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
          31 (4.59 % of base) : 12576.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (FullOpts)
          30 (7.50 % of base) : 12544.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 19217.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 26656.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 23947.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 7695.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          23 (2.93 % of base) : 3784.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
          22 (6.25 % of base) : 21861.dasm - PInvokeTests.Program:IsNULL(PInvokeTests.Program+SequentialStruct[]):ubyte (FullOpts)

Top method improvements (bytes):
         -45 (-2.42 % of base) : 13500.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
         -45 (-1.57 % of base) : 13499.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
         -37 (-11.28 % of base) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -33 (-0.77 % of base) : 12580.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -33 (-0.77 % of base) : 9098.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -31 (-1.23 % of base) : 2913.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:TryParseConstantArray(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,byref):System.Array (FullOpts)
         -31 (-2.70 % of base) : 15046.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (FullOpts)
         -30 (-9.46 % of base) : 9582.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 24985.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 17535.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 22275.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-0.99 % of base) : 13498.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
         -28 (-3.11 % of base) : 15861.dasm - System.IO.Path:Combine(System.String[]):System.String (FullOpts)
         -27 (-5.92 % of base) : 16980.dasm - Interfaces:TestInterfaceCache():int (FullOpts)
         -27 (-5.92 % of base) : 13457.dasm - Interfaces:TestInterfaceCache():int (FullOpts)
         -24 (-12.06 % of base) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
         -21 (-3.44 % of base) : 11097.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
         -21 (-3.44 % of base) : 23265.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
         -21 (-3.44 % of base) : 18529.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
         -21 (-1.10 % of base) : 15818.dasm - System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)

Top method regressions (percentages):
          10 (18.18 % of base) : 5369.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          10 (18.18 % of base) : 19478.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          10 (18.18 % of base) : 24212.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          10 (18.18 % of base) : 26937.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          32 (12.96 % of base) : 14374.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
          37 (10.00 % of base) : 21859.dasm - PInvokeTests.Program:StructTest_Array(PInvokeTests.Program+SequentialStruct[],int):ubyte (FullOpts)
          11 (9.82 % of base) : 4363.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
           9 (9.47 % of base) : 7540.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
          19 (9.22 % of base) : 9135.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          19 (9.22 % of base) : 23248.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          19 (9.22 % of base) : 18486.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          19 (9.22 % of base) : 25923.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
           8 (8.99 % of base) : 4076.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
           7 (8.75 % of base) : 8733.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
          11 (8.66 % of base) : 15803.dasm - System.Linq.Enumerable+SelectIListIterator`2[System.__Canon,System.__Canon]:Fill(System.Collections.Generic.IList`1[System.__Canon],System.Span`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]) (FullOpts)
         121 (8.46 % of base) : 16642.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
          30 (7.52 % of base) : 19217.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 26656.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 23947.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          30 (7.52 % of base) : 7695.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)

Top method improvements (percentages):
         -20 (-12.82 % of base) : 4452.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -24 (-12.06 % of base) : 21860.dasm - PInvokeTests.LowLevelExtensions:LowLevelToString(int):System.String (FullOpts)
         -37 (-11.28 % of base) : 10212.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -12 (-9.52 % of base) : 4229.dasm - System.Type:GetMethod(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
         -30 (-9.46 % of base) : 9582.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 24985.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 17535.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
         -30 (-9.46 % of base) : 22275.dasm - System.MulticastDelegate:InvocationListEquals(System.MulticastDelegate):ubyte:this (FullOpts)
          -3 (-8.33 % of base) : 8551.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
         -14 (-7.87 % of base) : 6079.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass18_0:<get_SyntheticConstructors>b__0(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
         -12 (-7.23 % of base) : 10026.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
         -12 (-7.23 % of base) : 19262.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
         -12 (-7.23 % of base) : 26706.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
         -12 (-7.23 % of base) : 24021.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:UnregisterWait():this (FullOpts)
         -14 (-7.18 % of base) : 6069.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__0(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
         -14 (-6.60 % of base) : 6065.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass20_0:<get_SyntheticMethods>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
         -18 (-6.52 % of base) : 7684.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:MatchGenericTypeEntry(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeEntry):ubyte:this (FullOpts)
         -15 (-6.22 % of base) : 6078.dasm - System.Reflection.Runtime.TypeInfos.RuntimeArrayTypeInfo+<>c__DisplayClass18_0:<get_SyntheticConstructors>b__1(System.Object,System.Object[],System.Type):System.Object:this (FullOpts)
         -12 (-6.09 % of base) : 6099.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)
         -27 (-5.92 % of base) : 16980.dasm - Interfaces:TestInterfaceCache():int (FullOpts)



osx arm64

Diffs are based on 2,270,092 contexts (932,669 MinOpts, 1,337,423 FullOpts).

MISSED contexts: base: 772 (0.03%), diff: 778 (0.03%)

Overall (+539,840 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,173,700 +13,580
benchmarks.run_pgo.osx.arm64.checked.mch 34,346,112 +21,404
benchmarks.run_tiered.osx.arm64.checked.mch 15,512,636 +1,296
coreclr_tests.run.osx.arm64.checked.mch 486,269,368 +155,172
libraries.crossgen2.osx.arm64.checked.mch 55,715,716 +40,472
libraries.pmi.osx.arm64.checked.mch 80,194,908 +61,468
libraries_tests.run.osx.arm64.Release.mch 323,385,308 +178,832
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 162,548,024 +57,088
realworld.run.osx.arm64.checked.mch 15,058,824 +10,528

MinOpts (-21,812 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -4,868
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -3,636
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -2,076
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -10,640
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 13,153,728 -592

FullOpts (+561,652 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,173,164 +13,580
benchmarks.run_pgo.osx.arm64.checked.mch 18,044,812 +26,272
benchmarks.run_tiered.osx.arm64.checked.mch 4,008,152 +4,932
coreclr_tests.run.osx.arm64.checked.mch 153,656,444 +157,248
libraries.crossgen2.osx.arm64.checked.mch 55,714,088 +40,472
libraries.pmi.osx.arm64.checked.mch 80,073,780 +61,468
libraries_tests.run.osx.arm64.Release.mch 119,669,460 +189,472
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 149,394,296 +57,680
realworld.run.osx.arm64.checked.mch 14,494,868 +10,528

Example diffs

benchmarks.run.osx.arm64.checked.mch

-12 (-6.00%) : 9349.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:SwapIfGreater(System.Span1[System.Canon],System.Comparison`1[System.Canon],int,int) (FullOpts)

@@ -11,17 +11,16 @@ ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]> ; V02 arg1 [V02,T03] ( 4, 4 ) ref -> x22 class-hnd single-def <System.Comparison`1[System.__Canon]>
-; V03 arg2 [V03,T01] ( 5, 5 ) int -> x20 single-def -; V04 arg3 [V04,T02] ( 5, 5 ) int -> x21 single-def -; V05 loc0 [V05,T08] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T00] ( 7, 6 ) int -> x19 single-def +; V04 arg3 [V04,T01] ( 7, 6 ) int -> x20 single-def +; V05 loc0 [V05,T07] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp3 [V09,T00] ( 7, 5 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp3 [V09,T02] ( 7, 5 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T04] ( 3, 3 ) int -> x23 single-def "field V01._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 cse0 [V12,T06] ( 4, 3 ) long -> x20 "CSE - aggressive" -; V13 cse1 [V13,T07] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V12 cse0 [V12,T06] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 8 @@ -31,41 +30,39 @@ G_M47099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x28] str x23, [sp, #0x38] mov fp, sp
- mov x19, x1 - ; byrRegs +[x19]
+ mov x21, x1 + ; byrRegs +[x21]
mov w23, w2 mov x22, x3 ; gcrRegs +[x22]
- mov w20, w4 - mov w21, w5
+ mov w19, w4 + mov w20, w5
;; size=40 bbWeight=1 PerfScore 7.00
-G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w21
+G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w20
bne G_M47099_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
+G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
+ mov x0, x1 + ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ;; size=44 bbWeight=0.50 PerfScore 4.25 -G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz
+ ; gcrRegs -[x0] + ;; size=36 bbWeight=0.50 PerfScore 3.75 +G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w23 + bhs G_M47099_IG07 + ldr x1, [x21, w19, UXTW #3] + ; gcrRegs +[x1]
cmp w20, w23 bhs G_M47099_IG07
- ubfiz x20, x20, #3, #32 - ldr x1, [x19, x20] - ; gcrRegs +[x1] - cmp w21, w23 - bhs G_M47099_IG07 - ubfiz x21, x21, #3, #32 - ldr x2, [x19, x21]
+ ldr x2, [x21, w20, UXTW #3]
; gcrRegs +[x2] ldr x0, [x22, #0x08] ; gcrRegs +[x0] @@ -74,25 +71,26 @@ G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19 ; gcrRegs -[x0-x2 x22] cmp w0, #0 ble G_M47099_IG06
- ;; size=52 bbWeight=1 PerfScore 19.50 -G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x0, [x19, x20]
+ ;; size=44 bbWeight=1 PerfScore 17.50 +G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ldr x0, [x21, w19, UXTW #3]
; gcrRegs +[x0]
- add x14, x19, x20
+ ubfiz x14, x19, #3, #32 + add x14, x21, x14
; byrRegs +[x14]
- ldr x15, [x19, x21]
+ ldr x15, [x21, w20, UXTW #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- add x14, x19, x21
+ add x14, x21, x20, LSL #3
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19] - ;; size=28 bbWeight=0.50 PerfScore 4.75
+ ; byrRegs -[x14 x21] + ;; size=32 bbWeight=0.50 PerfScore 5.50
G_M47099_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -105,7 +103,7 @@ G_M47099_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 20, PerfScore 43.00, instruction count 50, allocated bytes for code 200 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
+; Total bytes of code 188, prolog size 20, PerfScore 41.25, instruction count 47, allocated bytes for code 188 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-5.56%) : 24410.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (FullOpts)

@@ -10,12 +10,13 @@ ; ; V00 this [V00,T04] ( 4, 4 ) ref -> x0 this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
-; V02 loc0 [V02,T01] ( 5, 17 ) int -> x3 -; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x4 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref +; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x3 class-hnd <System.Linq.SingleLinkedNode`1[int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V07 tmp3 [V07,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 5, 17 ) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -26,27 +27,25 @@ G_M40341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M40341_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x1]
- sxtw w3, w2 - mov x4, x0 - ; gcrRegs +[x4]
+ mov x3, x0 + ; gcrRegs +[x3]
cbz x0, G_M40341_IG04
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M40341_IG03: ; bbWeight=4, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
+ mov w0, w2
; gcrRegs -[x0]
- sub w3, w3, #1 - cmp w3, w2
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M40341_IG03: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref, isz + sub w0, w0, #1 + mov w0, w0 + cmp w0, w2
bhs G_M40341_IG05
- ubfiz x0, x3, #2, #32 - add x0, x1, x0 - ; byrRegs +[x0] - ldr w5, [x4, #0x10] - str w5, [x0] - ldr x4, [x4, #0x08] - cbnz x4, G_M40341_IG03 - ;; size=36 bbWeight=4 PerfScore 46.00
+ ldr w4, [x3, #0x10] + str w4, [x1, x0, LSL #2] + ldr x3, [x3, #0x08] + cbnz x3, G_M40341_IG03 + ;; size=32 bbWeight=4 PerfScore 42.00
G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x4] - ; byrRegs -[x0-x1]
+ ; gcrRegs -[x3] + ; byrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 @@ -56,7 +55,7 @@ G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 51.50, instruction count 18, allocated bytes for code 72 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 47.50, instruction count 17, allocated bytes for code 68 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
; ============================================================ Unwind Info: @@ -67,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-5.00%) : 15150.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)

@@ -7,22 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 4, 7 ) ref -> x0 class-hnd single-def <int[][]> -; V01 arg1 [V01,T10] ( 4, 7 ) ref -> x1 class-hnd single-def <int[][]> -; V02 loc0 [V02,T05] ( 7, 25 ) short -> x2
+; V00 arg0 [V00,T11] ( 4, 7 ) ref -> x0 class-hnd single-def <int[][]> +; V01 arg1 [V01,T12] ( 4, 7 ) ref -> x1 class-hnd single-def <int[][]> +; V02 loc0 [V02,T04] ( 7, 49 ) short -> x2
; V03 loc1 [V03,T00] ( 7,100 ) short -> x5 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 96 ) ref -> x8 class-hnd "Strict ordering of exceptions for Array store" <int[]> -; V06 tmp2 [V06,T03] ( 2, 64 ) int -> x9 "Strict ordering of exceptions for Array store" -; V07 tmp3 [V07,T02] ( 3, 96 ) ref -> x9 "arr expr" -; V08 cse0 [V08,T06] ( 2, 20 ) ref -> x6 hoist "CSE - aggressive" -; V09 cse1 [V09,T07] ( 2, 20 ) ref -> x7 hoist "CSE - aggressive" -; V10 cse2 [V10,T08] ( 3, 12 ) long -> x7 hoist "CSE - aggressive" -; V11 cse3 [V11,T04] ( 3, 48 ) long -> x10 "CSE - aggressive" -; V12 cse4 [V12,T13] ( 2, 5 ) byref -> x3 hoist "CSE - aggressive" -; V13 cse5 [V13,T14] ( 2, 5 ) byref -> x4 hoist "CSE - aggressive" -; V14 cse6 [V14,T11] ( 2, 8 ) int -> x6 hoist "CSE - aggressive" -; V15 cse7 [V15,T12] ( 2, 8 ) int -> x8 hoist "CSE - aggressive"
+; V05 tmp1 [V05,T01] ( 3, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <int[]> +; V06 tmp2 [V06,T03] ( 2, 64 ) int -> x10 "Strict ordering of exceptions for Array store" +; V07 tmp3 [V07,T02] ( 3, 96 ) ref -> x10 "arr expr" +; V08 cse0 [V08,T09] ( 2, 17 ) byref -> x3 hoist "CSE - aggressive" +; V09 cse1 [V09,T10] ( 2, 17 ) byref -> x4 hoist "CSE - aggressive" +; V10 cse2 [V10,T07] ( 2, 20 ) int -> x6 hoist "CSE - aggressive" +; V11 cse3 [V11,T08] ( 2, 20 ) int -> x8 hoist "CSE - aggressive" +; V12 cse4 [V12,T06] ( 3, 36 ) long -> x7 hoist "CSE - aggressive" +; V13 cse5 [V13,T05] ( 3, 48 ) long -> x11 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -38,49 +36,44 @@ G_M3993_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, by add x4, x0, #16 ; byrRegs +[x4] ;; size=12 bbWeight=1 PerfScore 1.50
-G_M3993_IG03: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0018 {x3 x4}, byref, isz
+G_M3993_IG03: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0018 {x3 x4}, byref
mov w5, wzr ldr w6, [x1, #0x08]
- ubfiz x7, x2, #3, #32
+ mov w7, w2 + ldr w8, [x0, #0x08] + ;; size=16 bbWeight=4 PerfScore 28.00 +G_M3993_IG04: ; bbWeight=16, gcrefRegs=0003 {x0 x1}, byrefRegs=0018 {x3 x4}, byref, isz
cmp w2, w6 bhs G_M3993_IG07
- ldr x6, [x3, x7] - ; gcrRegs +[x6] - ldr w8, [x0, #0x08]
+ ldr x9, [x3, x7, LSL #3] + ; gcrRegs +[x9]
cmp w2, w8 bhs G_M3993_IG07
- ldr x7, [x4, x7] - ; gcrRegs +[x7] - ;; size=40 bbWeight=4 PerfScore 66.00 -G_M3993_IG04: ; bbWeight=16, gcrefRegs=00C3 {x0 x1 x6 x7}, byrefRegs=0018 {x3 x4}, byref, isz - mov x8, x6 - ; gcrRegs +[x8] - mov x9, x7 - ; gcrRegs +[x9] - ldr w10, [x9, #0x08] - cmp w5, w10
+ ldr x10, [x4, x7, LSL #3] + ; gcrRegs +[x10] + ldr w11, [x10, #0x08] + cmp w5, w11 + bhs G_M3993_IG07 + add x10, x10, #16 + ; gcrRegs -[x10] + ; byrRegs +[x10] + mov w11, w5 + ldr w10, [x10, x11, LSL #2] + ; byrRegs -[x10] + ldr w13, [x9, #0x08] + cmp w5, w13
bhs G_M3993_IG07 add x9, x9, #16 ; gcrRegs -[x9] ; byrRegs +[x9]
- ubfiz x10, x5, #2, #32 - ldr w9, [x9, x10] - ; byrRegs -[x9] - ldr w11, [x8, #0x08] - cmp w5, w11 - bhs G_M3993_IG07 - add x8, x8, #16 - ; gcrRegs -[x8] - ; byrRegs +[x8] - str w9, [x8, x10]
+ str w10, [x9, x11, LSL #2]
add w5, w5, #1 sxth w5, w5 cmp w5, #101 blt G_M3993_IG04
- ;; size=68 bbWeight=16 PerfScore 296.00
+ ;; size=84 bbWeight=16 PerfScore 416.00
G_M3993_IG05: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0018 {x3 x4}, byref, isz
- ; gcrRegs -[x6-x7] - ; byrRegs -[x8]
+ ; byrRegs -[x9]
add w2, w2, #1 sxth w2, w2 cmp w2, #101 @@ -98,7 +91,7 @@ G_M3993_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 8, PerfScore 377.00, instruction count 40, allocated bytes for code 160 (MethodHash=493af066) for method AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
+; Total bytes of code 152, prolog size 8, PerfScore 459.00, instruction count 38, allocated bytes for code 152 (MethodHash=493af066) for method AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
; ============================================================ Unwind Info: @@ -109,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 16143.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)

@@ -11,13 +11,14 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]> ; V02 loc0 [V02,T01] ( 4, 10 ) int -> x0 ;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V04 loc2 [V04,T00] ( 5, 17 ) int -> x3
+;* V04 loc2 [V04,T06] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V08 tmp2 [V08,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP ; V09 tmp3 [V09,T03] ( 2, 5 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T02] ( 3, 6 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T02] ( 4, 10 ) int -> x2 single-def "field V03._length (fldOffset=0x8)" P-INDEP +; V11 tmp5 [V11,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,24 +29,32 @@ G_M10672_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M10672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1] mov w0, wzr
- mov w3, wzr
cmp w2, #0 ble G_M10672_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M10672_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w4, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M10672_IG05 + ldr w4, [x1, x3, LSL #2]
add w0, w4, w0 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M10672_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M10672_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M10672_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 28.00, instruction count 13, allocated bytes for code 52 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 36.00, instruction count 18, allocated bytes for code 72 (MethodHash=42a0d64f) for method Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +65,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 21561.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 23031.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.osx.arm64.checked.mch

-40 (-10.10%) : 31502.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-7.69%) : 3704.dasm - System.Collections.Generic.GenericArraySortHelper2[System.__Canon,System.__Canon]:Swap(System.Span1[System.Canon],System.Span`1[System.Canon],int,int) (Tier0)

@@ -47,8 +47,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x18] // [V05 loc0] @@ -61,8 +60,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -73,8 +71,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -87,8 +84,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x18] // [V05 loc0] ; gcrRegs +[x15] @@ -103,8 +99,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x10] // [V06 loc1] @@ -117,8 +112,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -129,8 +123,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -143,15 +136,14 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x10] // [V06 loc1] ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x0 x14]
- ;; size=356 bbWeight=1 PerfScore 122.50
+ ;; size=324 bbWeight=1 PerfScore 116.50
G_M6091_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -161,7 +153,7 @@ G_M6091_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 16, PerfScore 135.00, instruction count 104, allocated bytes for code 416 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
+; Total bytes of code 384, prolog size 16, PerfScore 129.00, instruction count 96, allocated bytes for code 384 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -172,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-7.38%) : 31501.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:SwapIfGreaterWithValues(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -85,20 +85,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x48] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x40] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x48] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x40] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x48] // [V00 arg0+0x08] @@ -108,9 +105,8 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x1C] // [V05 loc1]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x2C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -120,8 +116,7 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x18] // [V06 loc2] ldr w0, [fp, #0x2C] // [V02 arg2] @@ -132,20 +127,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x38] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x30] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x30] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -155,10 +147,9 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x18] // [V06 loc2]
- str w2, [x0, x1] - ;; size=436 bbWeight=1 PerfScore 151.00
+ str w2, [x0, x1, LSL #2] + ;; size=400 bbWeight=1 PerfScore 143.00
G_M19468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x50 @@ -169,7 +160,7 @@ G_M19468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 488, prolog size 12, PerfScore 161.50, instruction count 122, allocated bytes for code 488 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 452, prolog size 12, PerfScore 153.50, instruction count 113, allocated bytes for code 452 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -180,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+30.00%) : 18110.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# 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 exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -34,20 +35,24 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 2.00 G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr w3, [x0, #0x08] + cmp w2, w3 + bhs G_M16110_IG08
add x3, x0, #16 ; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ ldr x3, [x3, x2, LSL #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr w3, [x3, #0x3C] ; gcrRegs -[x3] add w1, w3, w1 add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ldr w3, [x0, #0x08] cmp w3, w2 @@ -59,8 +64,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 104, prolog size 8, PerfScore 5.50, instruction count 26, allocated bytes for code 104 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info: @@ -71,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+33.33%) : 56652.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -8,17 +8,17 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 19849 ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> -; V01 arg1 [V01,T05] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T02] ( 4, 6.02) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 13.12) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.98) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 7.04) long -> xip0 "CSE - aggressive" -; V06 cse1 [V06,T03] ( 3, 5.03) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 14.11) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T01] ( 4, 6.03) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0 - ble G_M50542_IG05 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M50542_IG03: ; bbWeight=3.03, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08] + cmp w15, #0 + ble G_M50542_IG06 + ;; size=16 bbWeight=1 PerfScore 7.50 +G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32 - add xip0, xip0, #16 - ldr x0, [x14, xip0] - ; gcrRegs +[x0] - cbz x0, G_M50542_IG06 - ;; size=16 bbWeight=3.03 PerfScore 16.64
+ mov x12, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50
G_M50542_IG04: ; bbWeight=3.03, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] - add w15, w15, #1 - cmp w12, w15 - bgt G_M50542_IG03 - ;; size=12 bbWeight=3.03 PerfScore 6.07 -G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lsl xip0, x12, #3 + add xip0, xip0, #16 + ldr xip0, [x14, xip0] + ; gcrRegs +[xip0] + cbz xip0, G_M50542_IG07 + ;; size=16 bbWeight=3.03 PerfScore 16.64 +G_M50542_IG05: ; bbWeight=3.03, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + add w12, w12, #1 + mov w12, w12 + cmp w15, w12 + bgt G_M50542_IG04 + ;; size=16 bbWeight=3.03 PerfScore 7.58 +G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15 + bhs G_M50542_IG09 + ubfiz x15, x12, #3, #32 + add x15, x15, #16 + add x14, x14, x15
; gcrRegs -[x14] ; byrRegs +[x14] mov x15, x1 @@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.99 -G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.96 +G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.99 PerfScore 1.99
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 36.19, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 40.68, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+33.33%) : 63160.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -8,17 +8,17 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14877 ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> -; V01 arg1 [V01,T05] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T02] ( 4, 6.77) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 16.14) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.97) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 8.55) long -> xip0 "CSE - aggressive" -; V06 cse1 [V06,T03] ( 3, 5.79) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.12) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T01] ( 4, 6.78) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0 - ble G_M50542_IG05 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M50542_IG03: ; bbWeight=3.78, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08] + cmp w15, #0 + ble G_M50542_IG06 + ;; size=16 bbWeight=1 PerfScore 7.50 +G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ mov x12, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50 +G_M50542_IG04: ; bbWeight=3.78, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + lsl xip0, x12, #3
add xip0, xip0, #16
- ldr x0, [x14, xip0] - ; gcrRegs +[x0] - cbz x0, G_M50542_IG06
+ ldr xip0, [x14, xip0] + ; gcrRegs +[xip0] + cbz xip0, G_M50542_IG07
;; size=16 bbWeight=3.78 PerfScore 20.78
-G_M50542_IG04: ; bbWeight=3.79, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add w15, w15, #1 - cmp w12, w15 - bgt G_M50542_IG03 - ;; size=12 bbWeight=3.79 PerfScore 7.58 -G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M50542_IG05: ; bbWeight=3.79, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + add w12, w12, #1 + mov w12, w12 + cmp w15, w12 + bgt G_M50542_IG04 + ;; size=16 bbWeight=3.79 PerfScore 9.47 +G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15 + bhs G_M50542_IG09 + ubfiz x15, x12, #3, #32 + add x15, x15, #16 + add x14, x14, x15
; gcrRegs -[x14] ; byrRegs +[x14] mov x15, x1 @@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.98 -G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.95 +G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.99 PerfScore 1.98
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 41.83, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.69, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.osx.arm64.checked.mch

-40 (-10.10%) : 26996.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-7.69%) : 18521.dasm - System.Collections.Generic.GenericArraySortHelper2[System.__Canon,System.__Canon]:Swap(System.Span1[System.Canon],System.Span`1[System.Canon],int,int) (Tier0)

@@ -47,8 +47,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x18] // [V05 loc0] @@ -61,8 +60,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -73,8 +71,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -87,8 +84,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x18] // [V05 loc0] ; gcrRegs +[x15] @@ -103,8 +99,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x10] // [V06 loc1] @@ -117,8 +112,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -129,8 +123,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -143,15 +136,14 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x10] // [V06 loc1] ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x0 x14]
- ;; size=356 bbWeight=1 PerfScore 122.50
+ ;; size=324 bbWeight=1 PerfScore 116.50
G_M6091_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -161,7 +153,7 @@ G_M6091_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 16, PerfScore 135.00, instruction count 104, allocated bytes for code 416 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
+; Total bytes of code 384, prolog size 16, PerfScore 129.00, instruction count 96, allocated bytes for code 384 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -172,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-7.38%) : 26995.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:SwapIfGreaterWithValues(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -85,20 +85,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x48] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x40] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x48] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x40] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x48] // [V00 arg0+0x08] @@ -108,9 +105,8 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x1C] // [V05 loc1]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x2C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -120,8 +116,7 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x18] // [V06 loc2] ldr w0, [fp, #0x2C] // [V02 arg2] @@ -132,20 +127,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x38] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x30] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x30] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -155,10 +147,9 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x18] // [V06 loc2]
- str w2, [x0, x1] - ;; size=436 bbWeight=1 PerfScore 151.00
+ str w2, [x0, x1, LSL #2] + ;; size=400 bbWeight=1 PerfScore 143.00
G_M19468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x50 @@ -169,7 +160,7 @@ G_M19468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 488, prolog size 12, PerfScore 161.50, instruction count 122, allocated bytes for code 488 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 452, prolog size 12, PerfScore 153.50, instruction count 113, allocated bytes for code 452 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -180,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+17.24%) : 6072.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

@@ -9,17 +9,18 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x21
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V06 tmp2 [V06,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T02] ( 2, 5 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 6 ) int -> x20 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 10 ) int -> x20 "field V01._length (fldOffset=0x8)" P-INDEP +; V09 tmp5 [V09,T00] ( 6, 21 ) long -> x21 "Widened primary induction variable"
; ; Lcl frame size = 8
-G_M29423_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29423_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] @@ -30,23 +31,26 @@ G_M29423_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov x19, x0 ; byrRegs +[x19] sxtw w20, w1
- mov w21, wzr
cmp w20, #0 ble G_M29423_IG04
+ mov x21, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs -[x0]
- ldrh w0, [x19, w21, UXTW #2]
+ cmp w21, w20 + bhs G_M29423_IG08 + ldrh w0, [x19, x21, LSL #2]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(int):ubyte movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1 cbnz w0, G_M29423_IG06
- add w21, w21, #1
+ add w0, w21, #1 + mov w21, w0
cmp w21, w20 blt G_M29423_IG03
- ;; size=40 bbWeight=4 PerfScore 46.00
+ ;; size=52 bbWeight=4 PerfScore 54.00
G_M29423_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x19] mov w0, wzr @@ -66,8 +70,12 @@ G_M29423_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M29423_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 16, PerfScore 58.00, instruction count 29, allocated bytes for code 116 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 136, prolog size 16, PerfScore 66.00, instruction count 34, allocated bytes for code 136 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -78,7 +86,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+20.83%) : 38939.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)

@@ -9,14 +9,15 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> ; V01 arg1 [V01,T06] ( 3, 3 ) byref -> x2 single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> x3 -; V03 loc1 [V03,T03] ( 4, 10 ) ubyte -> x4 -; V04 loc2 [V04,T00] ( 5, 17 ) int -> x5 -; V05 loc3 [V05,T01] ( 3, 12 ) ubyte -> x7
+; V02 loc0 [V02,T03] ( 4, 10 ) int -> x3 +; V03 loc1 [V03,T04] ( 4, 10 ) ubyte -> x4 +;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref +; V05 loc3 [V05,T02] ( 3, 12 ) ubyte -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T05] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
+; V08 tmp2 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V09 tmp3 [V09,T00] ( 6, 21 ) long -> x5 "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -29,22 +30,25 @@ G_M60849_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b movz w3, #0xD1FFAB1E movk w3, #0xD1FFAB1E LSL #16 mov w4, wzr
- mov w5, wzr
cmp w1, #0 ble G_M60849_IG04
+ mov x5, xzr
movz w6, #0xD1FFAB1E movk w6, #0xD1FFAB1E LSL #16 ;; size=32 bbWeight=1 PerfScore 4.50 G_M60849_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrb w7, [x0, w5, UXTW #2]
+ cmp w5, w1 + bhs G_M60849_IG06 + ldrb w7, [x0, x5]
orr w4, w4, w7 uxtb w4, w4 eor w3, w3, w7 mul w3, w3, w6 add w5, w5, #1
+ mov w5, w5
cmp w5, w1 blt G_M60849_IG03
- ;; size=32 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 42.00
G_M60849_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref ; byrRegs -[x0] tst w4, #128 @@ -56,8 +60,14 @@ G_M60849_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M60849_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[x2] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 44.50, instruction count 24, allocated bytes for code 96 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 52.50, instruction count 29, allocated bytes for code 116 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+21.74%) : 38994.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -10,13 +10,14 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> x1 class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> x15
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -24,30 +25,33 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0
+ ldr w15, [x14, #0x08] + cmp w15, #0
ble G_M50542_IG04
+ mov x12, xzr
;; size=20 bbWeight=1 PerfScore 8.00 G_M50542_IG03: ; bbWeight=4, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ lsl xip0, x12, #3
add xip0, xip0, #16 ldr xip0, [x14, xip0] ; gcrRegs +[xip0] cbz xip0, G_M50542_IG05
- add w15, w15, #1 - cmp w12, w15
+ add w12, w12, #1 + mov w12, w12 + cmp w15, w12
bgt G_M50542_IG03
- ;; size=28 bbWeight=4 PerfScore 30.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x14 xip0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- ubfiz x15, x15, #3, #32
+ cmp w12, w15 + bhs G_M50542_IG07 + ubfiz x15, x12, #3, #32
add x15, x15, #16 add x14, x14, x15 ; gcrRegs -[x14] @@ -57,13 +61,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 43.25, instruction count 23, allocated bytes for code 92 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.00, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -74,7 +83,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-4 (-11.11%) : 400945.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)

@@ -21,15 +21,14 @@ G_M2112_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- lsl x0, x0, #1 - ldrh w0, [x1, x0] - ;; size=20 bbWeight=1 PerfScore 5.50
+ ldrh w0, [x1, x0, LSL #2] + ;; size=16 bbWeight=1 PerfScore 4.50
G_M2112_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
; ============================================================ Unwind Info: @@ -40,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-11.11%) : 517486.dasm - Testunsafe6.TestApp:test_216(ulong,long[],long):long (FullOpts)

@@ -27,16 +27,14 @@ G_M16071_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #100 cmp x0, #100 cinc w0, w1, ne sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M16071_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -46,7 +44,7 @@ G_M16071_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-11.11%) : 517407.dasm - Testunsafe1.TestApp:test_372(ulong,long[],long):long (FullOpts)

@@ -29,16 +29,14 @@ G_M4387_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #99 cmp x0, #100 cinc w0, w1, eq sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M4387_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -48,7 +46,7 @@ G_M4387_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 492507.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 492488.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 493328.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M31126_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.osx.arm64.checked.mch

-32 (-13.33%) : 160653.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -9,30 +9,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 3, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -61,18 +61,11 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref adrp x22, [HIGH RELOC #0xD1FFAB1E] add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13 - b G_M10117_IG10 - ;; size=16 bbWeight=1 PerfScore 2.50 -G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG08
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -88,34 +81,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=44 bbWeight=2 PerfScore 22.00 +G_M10117_IG07: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=68 bbWeight=2 PerfScore 28.00 -G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG12 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG10 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG07
+ ble G_M10117_IG06
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG06 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG07 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG09: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address @@ -126,7 +114,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 208, prolog size 24, PerfScore 73.00, instruction count 52, allocated bytes for code 208 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -137,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -145,10 +133,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-16 (-8.33%) : 27489.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-16 (-8.33%) : 172802.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

+32 (+53.33%) : 168923.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,27 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.50, instruction count 23, allocated bytes for code 92 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+53.33%) : 23340.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,27 +25,38 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 44.50, instruction count 23, allocated bytes for code 92 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+57.14%) : 224528.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -11,13 +11,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.osx.arm64.checked.mch

-36 (-16.07%) : 198135.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-14.29%) : 205501.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -8,30 +8,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 2, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -50,18 +50,11 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #1 LSL #32
- mov w23, #13 - b G_M10117_IG07 - ;; size=56 bbWeight=1 PerfScore 9.00 -G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG05
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=56 bbWeight=1 PerfScore 9.00 +G_M10117_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -78,34 +71,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=48 bbWeight=2 PerfScore 23.00 +G_M10117_IG04: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=72 bbWeight=2 PerfScore 29.00 -G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG09 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG07 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG04
+ ble G_M10117_IG03
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG03 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG04 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] bl CORINFO_HELP_RNGCHKFAIL @@ -113,7 +101,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 192, prolog size 24, PerfScore 69.50, instruction count 48, allocated bytes for code 192 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -124,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -132,10 +120,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-8 (-9.09%) : 303759.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)

@@ -48,19 +48,17 @@ G_M26712_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cbz w0, G_M26712_IG05 ;; size=32 bbWeight=1 PerfScore 7.50 G_M26712_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M26712_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -70,7 +68,7 @@ G_M26712_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 15.50, instruction count 22, allocated bytes for code 88 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 14.50, instruction count 20, allocated bytes for code 80 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 34604.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,27 +24,35 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 44.50, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 300588.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -8,11 +8,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,17 +25,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -43,8 +47,13 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 39.00, instruction count 20, allocated bytes for code 80 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+35.71%) : 310288.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -10,13 +10,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.osx.arm64.Release.mch

-12 (-13.04%) : 364305.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)

@@ -9,54 +9,49 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3,129.76) byref -> x20 single-def -; V01 arg1 [V01,T04] ( 3,129.76) byref -> x21 single-def -; V02 arg2 [V02,T02] ( 4,130.76) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,512.05) long -> x22
+; V00 arg0 [V00,T02] ( 3,129.76) byref -> x20 single-def +; V01 arg1 [V01,T03] ( 3,129.76) byref -> x21 single-def +; V02 arg2 [V02,T01] ( 4,130.76) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,639.82) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
-; V06 cse0 [V06,T01] ( 3,383.29) long -> x23 "CSE - aggressive" -; V07 rat0 [V07,T05] ( 2,511.05) double -> d1 "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M25219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M25219_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25219_IG03: ; bbWeight=127.76, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #3 - ldr d1, [x20, x23]
+ ldr d1, [x20, x22, LSL #3]
fmov d0, #2.0000 bl <unknown method> ; gcr arg pop 0
- str d0, [x21, x23]
+ str d0, [x21, x22, LSL #3]
add x22, x22, #1 cmp x22, x19 blo G_M25219_IG03
- ;; size=32 bbWeight=127.76 PerfScore 1085.99
+ ;; size=28 bbWeight=127.76 PerfScore 958.22
G_M25219_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1099.49, instruction count 23, allocated bytes for code 92 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 968.72, instruction count 20, allocated bytes for code 80 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -67,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -75,9 +70,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-12 (-13.04%) : 365645.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[float,int,System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[float,int]](byref,byref,ulong) (Tier1)

@@ -9,57 +9,53 @@ ; 1 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3,112.67) byref -> x20 single-def -; V01 arg1 [V01,T05] ( 3,112.67) byref -> x21 single-def -; V02 arg2 [V02,T03] ( 4,113.67) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,443.70) long -> x22
+; V00 arg0 [V00,T03] ( 3,112.67) byref -> x20 single-def +; V01 arg1 [V01,T04] ( 3,112.67) byref -> x21 single-def +; V02 arg2 [V02,T02] ( 4,113.67) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,554.37) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
-; V06 tmp2 [V06,T02] ( 2,221.35) int -> x0 ld-addr-op "Inline ldloca(s) first use temp"
+; V06 tmp2 [V06,T01] ( 2,221.35) int -> x0 ld-addr-op "Inline ldloca(s) first use temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) float -> zero-ref "Inline stloc first use temp" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 cse0 [V10,T01] ( 3,332.02) long -> x23 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M56698_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M56698_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M56698_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M56698_IG03: ; bbWeight=110.67, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #2 - ldr s0, [x20, x23]
+ ldr s0, [x20, x22, LSL #2]
fcvt d0, s0 bl CORINFO_HELP_DBL2INT_OVF ; gcr arg pop 0
- str w0, [x21, x23]
+ str w0, [x21, x22, LSL #2]
add x22, x22, #1 cmp x22, x19 blo G_M56698_IG03
- ;; size=32 bbWeight=110.67 PerfScore 1217.42
+ ;; size=28 bbWeight=110.67 PerfScore 1106.74
G_M56698_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1230.92, instruction count 23, allocated bytes for code 92 (MethodHash=1a1d2285) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,int,System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[float,int]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 1117.24, instruction count 20, allocated bytes for code 80 (MethodHash=1a1d2285) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,int,System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[float,int]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -70,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -78,9 +74,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-12 (-13.04%) : 369757.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)

@@ -9,54 +9,49 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3,129.61) byref -> x20 single-def -; V01 arg1 [V01,T04] ( 3,129.61) byref -> x21 single-def -; V02 arg2 [V02,T02] ( 4,130.61) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,511.42) long -> x22
+; V00 arg0 [V00,T02] ( 3,129.61) byref -> x20 single-def +; V01 arg1 [V01,T03] ( 3,129.61) byref -> x21 single-def +; V02 arg2 [V02,T01] ( 4,130.61) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,639.03) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
-; V06 cse0 [V06,T01] ( 3,382.82) long -> x23 "CSE - aggressive" -; V07 rat0 [V07,T05] ( 2,510.42) double -> d1 "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M25219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M25219_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25219_IG03: ; bbWeight=127.61, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #3 - ldr d1, [x20, x23]
+ ldr d1, [x20, x22, LSL #3]
fmov d0, #2.0000 bl <unknown method> ; gcr arg pop 0
- str d0, [x21, x23]
+ str d0, [x21, x22, LSL #3]
add x22, x22, #1 cmp x22, x19 blo G_M25219_IG03
- ;; size=32 bbWeight=127.61 PerfScore 1084.65
+ ;; size=28 bbWeight=127.61 PerfScore 957.04
G_M25219_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1098.15, instruction count 23, allocated bytes for code 92 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 967.54, instruction count 20, allocated bytes for code 80 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -67,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -75,9 +70,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

+20 (+33.33%) : 51389.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 26.53) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 48.05) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 12.76) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 13.76) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 12.69) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 25.53) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 59.74) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 12.69) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.92 PerfScore 0.92
+ ;; size=12 bbWeight=0.92 PerfScore 1.38
G_M1770_IG04: ; bbWeight=11.76, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=11.76 PerfScore 88.23
+ ;; size=36 bbWeight=11.76 PerfScore 111.76
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 94.65, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 118.14, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 599219.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 32.07) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 59.15) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 15.54) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 16.54) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 15.47) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 31.07) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 73.62) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 15.47) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.94 PerfScore 0.94
+ ;; size=12 bbWeight=0.94 PerfScore 1.40
G_M1770_IG04: ; bbWeight=14.54, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=14.54 PerfScore 109.03
+ ;; size=36 bbWeight=14.54 PerfScore 138.10
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 115.46, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 144.51, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 88112.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 23.78) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 42.55) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 11.39) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 12.39) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 11.30) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 22.78) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 52.85) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 11.30) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.91, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.91 PerfScore 0.91
+ ;; size=12 bbWeight=0.91 PerfScore 1.37
G_M1770_IG04: ; bbWeight=10.39, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=10.39 PerfScore 77.91
+ ;; size=36 bbWeight=10.39 PerfScore 98.69
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 84.32, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 105.05, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-36 (-16.07%) : 173935.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-11.43%) : 129539.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)

@@ -9,27 +9,25 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]>
-; V01 arg1 [V01,T00] ( 4, 4 ) int -> x1 single-def
+; V01 arg1 [V01,T00] ( 5, 4.50) int -> x1 single-def
; V02 arg2 [V02,T03] ( 3, 2.50) byref -> x19 single-def ; V03 loc0 [V03,T04] ( 4, 3 ) ref -> x0 class-hnd single-def <System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V07 cse0 [V07,T05] ( 2, 2 ) ref -> x0 "CSE - aggressive"
-; V08 cse1 [V08,T07] ( 3, 2.50) long -> x21 "CSE - aggressive" -; V09 cse2 [V09,T08] ( 2, 2 ) int -> x2 "CSE - aggressive" -; V10 cse3 [V10,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
+; V08 cse1 [V08,T07] ( 2, 2 ) int -> x2 "CSE - aggressive" +; V09 cse2 [V09,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M61344_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x19, x2 ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x28] @@ -38,13 +36,12 @@ G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, bhs G_M61344_IG08 add x20, x0, #16 ; byrRegs +[x20]
- ubfiz x21, x1, #3, #32 - ldr x0, [x20, x21]
+ ldr x0, [x20, w1, UXTW #3]
cbz x0, G_M61344_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=28 bbWeight=1 PerfScore 12.00
G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x0, #0x18] - cmp w1, #0
+ ldr w2, [x0, #0x18] + cmp w2, #0
ble G_M61344_IG05 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]:Dequeue():System.Linq.Parallel.Pair`2[int,int]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,31 +54,29 @@ G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x1 mov w0, #1 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M61344_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref ; byrRegs -[x19] +[x20]
- str xzr, [x20, x21]
+ str xzr, [x20, w1, UXTW #3]
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M61344_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M61344_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 16, PerfScore 28.50, instruction count 35, allocated bytes for code 140 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 124, prolog size 12, PerfScore 24.50, instruction count 31, allocated bytes for code 124 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +87,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-8 (-9.09%) : 83984.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)

@@ -48,19 +48,17 @@ G_M26712_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cbz w0, G_M26712_IG05 ;; size=32 bbWeight=1 PerfScore 7.50 G_M26712_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M26712_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lsl x0, x1, #2 - add x1, x2, #176 - ldr w0, [x1, x0] - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ add x0, x2, #176 + ldr w0, [x0, x1, LSL #2] + ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26712_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -70,7 +68,7 @@ G_M26712_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 15.50, instruction count 22, allocated bytes for code 88 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 14.50, instruction count 20, allocated bytes for code 80 (MethodHash=1e2697a7) for method System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 134063.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+41.67%) : 140941.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1 + bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -49,7 +58,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 222713.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M39013_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.osx.arm64.checked.mch

-40 (-12.35%) : 4602.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)

@@ -12,47 +12,49 @@ ; V02 arg2 [V02,T04] ( 4, 3.50) int -> x4 single-def ; V03 loc0 [V03,T06] ( 5, 4.50) int -> x20 single-def ; V04 loc1 [V04,T05] ( 6, 5 ) int -> x21 single-def
-; V05 loc2 [V05,T19] ( 2, 2 ) int -> x3 single-def -; V06 loc3 [V06,T28] ( 2, 1.50) int -> x0 single-def -; V07 loc4 [V07,T25] ( 3, 1.50) int -> x2 single-def -; V08 loc5 [V08,T26] ( 3, 1.50) int -> x1 single-def
+; V05 loc2 [V05,T16] ( 2, 2 ) int -> x3 single-def +; V06 loc3 [V06,T29] ( 2, 1.50) int -> x0 single-def +; V07 loc4 [V07,T24] ( 3, 1.50) int -> x2 single-def +; V08 loc5 [V08,T25] ( 3, 1.50) int -> x1 single-def
;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc7 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc8 [V11,T27] ( 3, 1.50) int -> x0 single-def
+; V11 loc8 [V11,T26] ( 3, 1.50) int -> x0 single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ; V14 tmp2 [V14,T03] ( 3, 6 ) int -> x0 "fgMakeTemp is creating a new local variable" ; V15 tmp3 [V15,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V16 tmp4 [V16,T22] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V16 tmp4 [V16,T19] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V17 tmp5 [V17,T08] ( 3, 3 ) ref -> x2 single-def "arr expr"
-; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x0 single-def "arr expr" -; V19 tmp7 [V19,T10] ( 3, 3 ) ref -> x3 single-def "arr expr" -; V20 tmp8 [V20,T15] ( 3, 3 ) int -> x2 "index expr" -; V21 tmp9 [V21,T20] ( 2, 2 ) int -> x0 "argument with side effect" -; V22 tmp10 [V22,T21] ( 2, 2 ) int -> x3 "argument with side effect" -; V23 tmp11 [V23,T11] ( 3, 3 ) ref -> x2 single-def "arr expr" -; V24 tmp12 [V24,T12] ( 3, 3 ) ref -> x1 single-def "arr expr" -; V25 cse0 [V25,T17] ( 3, 2.50) long -> x23 "CSE - moderate" -; V26 cse1 [V26,T18] ( 4, 2 ) int -> x2 "CSE - moderate" -; V27 cse2 [V27,T13] ( 2, 2 ) ref -> x0 "CSE - aggressive" -; V28 cse3 [V28,T23] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V29 cse4 [V29,T24] ( 3, 1.50) ref -> x1 "CSE - moderate" -; V30 cse5 [V30,T07] ( 4, 3.50) int -> x22 "CSE - aggressive" -; V31 cse6 [V31,T16] ( 3, 3 ) int -> x2 "CSE - moderate" -; V32 cse7 [V32,T14] ( 3, 3 ) byref -> x0 "CSE - moderate"
+; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x3 single-def "arr expr" +;* V19 tmp7 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V20 tmp8 [V20,T13] ( 3, 3 ) int -> x2 "index expr" +; V21 tmp9 [V21,T17] ( 2, 2 ) int -> x5 "argument with side effect" +; V22 tmp10 [V22,T18] ( 2, 2 ) int -> x3 "argument with side effect" +; V23 tmp11 [V23,T10] ( 3, 3 ) ref -> x1 single-def "arr expr" +;* V24 tmp12 [V24,T31] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V25 cse0 [V25,T15] ( 4, 2 ) int -> x2 "CSE - moderate" +; V26 cse1 [V26,T11] ( 2, 2 ) ref -> x0 "CSE - aggressive" +; V27 cse2 [V27,T20] ( 2, 1 ) ref -> x3 "CSE - moderate" +; V28 cse3 [V28,T21] ( 2, 1 ) ref -> x1 "CSE - moderate" +; V29 cse4 [V29,T07] ( 5, 4 ) int -> x22 "CSE - aggressive" +; V30 cse5 [V30,T14] ( 3, 3 ) int -> x2 "CSE - moderate" +; V31 cse6 [V31,T12] ( 3, 3 ) byref -> x0 "CSE - moderate" +; V32 cse7 [V32,T27] ( 3, 1.50) int -> x0 "CSE - moderate" +; V33 cse8 [V33,T22] ( 3, 1.50) byref -> x3 "CSE - moderate" +; V34 cse9 [V34,T28] ( 3, 1.50) int -> x2 "CSE - moderate" +; V35 cse10 [V35,T23] ( 3, 1.50) byref -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w4, w2
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz orr w20, w4, w1, LSL #16 ldr w0, [x19, #0x20] @@ -73,20 +75,18 @@ G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add w22, w21, #1 cmp w22, w2 bhs G_M27628_IG06
- ubfiz x23, x22, #2, #32 - ldr w0, [x0, x23]
+ ldr w0, [x0, w22, UXTW #2]
; byrRegs -[x0] cmp w20, w3 bne G_M27628_IG04
- ;; size=80 bbWeight=1 PerfScore 38.00
+ ;; size=76 bbWeight=1 PerfScore 37.00
G_M27628_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x2, [x19, #0x08] @@ -102,28 +102,21 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w1, w2, #1 ldr x3, [x19, #0x10] ; gcrRegs +[x3]
- mov x0, x3 - ; gcrRegs +[x0]
lsl w2, w2, #1
- ldr w5, [x0, #0x08] - cmp w2, w5 - bhs G_M27628_IG06 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w2, UXTW #2] - ; byrRegs -[x0] - add w0, w0, w1 - add w2, w2, #1 - ldr w5, [x3, #0x08] - cmp w2, w5
+ ldr w0, [x3, #0x08] + cmp w2, w0
bhs G_M27628_IG06 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
+ ldrh w5, [x3, w2, UXTW #2] + add w5, w5, w1 + add w2, w2, #1 + cmp w2, w0 + bhs G_M27628_IG06
ldrh w3, [x3, w2, UXTW #2] ; byrRegs -[x3]
- mov w2, w0
+ mov w2, w5
mov x0, x19 ; gcrRegs +[x0] movz x5, #0xD1FFAB1E // code for Internal.Utilities.Text.Parsing.Implementation+AssocTable:ReadAssoc(int,int,int,int):int:this @@ -134,31 +127,23 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ldr x1, [x19, #0x18] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - ldr w3, [x2, #0x08] - cmp w21, w3 - bhs G_M27628_IG06 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - str w20, [x2, w21, UXTW #2]
ldr w2, [x1, #0x08]
- ; byrRegs -[x2] - cmp w22, w2
+ cmp w21, w2
bhs G_M27628_IG06 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- str w0, [x1, x23] - ;; size=164 bbWeight=0.50 PerfScore 27.50
+ str w20, [x1, w21, UXTW #2] + cmp w22, w2 + bhs G_M27628_IG06 + str w0, [x1, w22, UXTW #2] + ;; size=140 bbWeight=0.50 PerfScore 23.50
G_M27628_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x19] ; byrRegs -[x1] @@ -169,7 +154,7 @@ G_M27628_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 20, PerfScore 77.00, instruction count 81, allocated bytes for code 324 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
+; Total bytes of code 284, prolog size 16, PerfScore 69.00, instruction count 71, allocated bytes for code 284 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -180,7 +165,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -191,9 +176,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-20 (-9.80%) : 13830.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)

@@ -9,7 +9,7 @@ ; ; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper> ; V01 arg1 [V01,T03] ( 5, 3.50) ref -> x1 class-hnd single-def <Microsoft.ML.DataViewRow>
-; V02 arg2 [V02,T00] ( 8, 6 ) int -> x2 single-def
+; V02 arg2 [V02,T00] ( 9, 6.50) int -> x2 single-def
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Func`2[int,ubyte]> ; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -17,15 +17,13 @@ ; V07 tmp2 [V07,T05] ( 3, 4.50) ref -> x3 class-hnd "spilling QMark2" <<unknown class>> ; V08 tmp3 [V08,T02] ( 3, 6 ) ref -> x3 single-def "arr expr" ; V09 tmp4 [V09,T07] ( 3, 3 ) ref -> x3 single-def "arr expr"
-; V10 cse0 [V10,T08] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz ; gcrRegs +[x0-x1] ; byrRegs +[x4] @@ -39,13 +37,12 @@ G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, b add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ubfiz x19, x2, #3, #32 - ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr x3, [x3, #0x18] cbz x3, G_M420_IG04
- ;; size=40 bbWeight=1 PerfScore 17.00
+ ;; size=36 bbWeight=1 PerfScore 16.00
G_M420_IG03: ; bbWeight=0.25, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0000 {}, byref, isz ldr x3, [x3] ; gcrRegs -[x3] @@ -62,11 +59,10 @@ G_M420_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz ldr x3, [x0, #0x38] ; gcrRegs +[x3] @@ -77,7 +73,7 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldrb w3, [x3, #0x18] @@ -89,11 +85,10 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=52 bbWeight=0.50 PerfScore 11.25 G_M420_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 @@ -101,11 +96,10 @@ G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] bl CORINFO_HELP_RNGCHKFAIL @@ -113,18 +107,18 @@ G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 12, PerfScore 42.75, instruction count 51, allocated bytes for code 204 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 37.75, instruction count 46, allocated bytes for code 184 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -138,10 +132,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-9.43%) : 6589.dasm - System.Collections.Generic.GenericArraySortHelper2[ushort,int]:InsertionSort(System.Span1[ushort],System.Span`1[int]) (FullOpts)

@@ -12,8 +12,8 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V02 loc0 [V02,T09] ( 5, 17 ) int -> x4 ; V03 loc1 [V03,T08] ( 3, 24 ) ushort -> x8 ld-addr-op
-; V04 loc2 [V04,T12] ( 2, 8 ) int -> x7 -; V05 loc3 [V05,T00] ( 10,112 ) int -> x4
+; V04 loc2 [V04,T13] ( 2, 8 ) int -> x7 +; V05 loc3 [V05,T10] ( 4, 16 ) int -> x4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -21,12 +21,13 @@ ; V10 tmp4 [V10,T05] ( 5, 30 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T06] ( 5, 25 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V12 tmp6 [V12,T07] ( 5, 25 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V13 cse0 [V13,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" -; V14 cse1 [V14,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" -; V15 cse2 [V15,T11] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V16 cse3 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" -; V17 cse4 [V17,T10] ( 4, 16 ) int -> x6 "CSE - aggressive" -; V18 cse5 [V18,T13] ( 3, 6 ) int -> x5 "CSE - aggressive"
+; V13 tmp7 [V13,T00] ( 10,112 ) long -> x4 "Widened primary induction variable" +; V14 cse0 [V14,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" +; V15 cse1 [V15,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" +; V16 cse2 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" +; V17 cse3 [V17,T12] ( 3, 12 ) long -> x7 "CSE - aggressive" +; V18 cse4 [V18,T11] ( 4, 16 ) int -> x6 "CSE - aggressive" +; V19 cse5 [V19,T14] ( 3, 6 ) int -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,40 +45,35 @@ G_M33083_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b G_M33083_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w6, w4, #1 mov w7, w6
- lsl x8, x7, #1 - ldrh w8, [x0, x8]
+ ldrh w8, [x0, x7, LSL #2]
cmp w6, w3 bhs G_M33083_IG09
- lsl x7, x7, #2 - ldr w7, [x2, x7]
+ ldr w7, [x2, x7, LSL #2] + mov w4, w4
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M33083_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w10, w4, #1 cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x13, x11, #1 - strh w9, [x0, x13]
+ strh w9, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x10, x11, #2 - add x11, x2, x10 - ; byrRegs +[x11]
cmp w4, w3 bhs G_M33083_IG09
- ldr w9, [x2, w4, UXTW #2] - str w9, [x11]
+ ldr w10, [x2, x4, LSL #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ mov w4, w4 + ;; size=52 bbWeight=8 PerfScore 92.00
G_M33083_IG05: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ; byrRegs -[x11]
tbnz w4, #31, G_M33083_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 G_M33083_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w4, w1 bhs G_M33083_IG09
- ldrh w9, [x0, w4, UXTW #2]
+ ldrh w9, [x0, x4, LSL #2]
cmp w9, w8 bgt G_M33083_IG04 ;; size=20 bbWeight=16 PerfScore 96.00 @@ -86,16 +82,14 @@ G_M33083_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x4, x11, #1 - strh w8, [x0, x4]
+ strh w8, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x4, x11, #2 - str w7, [x2, x4]
+ str w7, [x2, x11, LSL #2]
sxtw w4, w6 cmp w4, w5 blt G_M33083_IG03
- ;; size=52 bbWeight=4 PerfScore 40.00
+ ;; size=44 bbWeight=4 PerfScore 32.00
G_M33083_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 @@ -107,7 +101,7 @@ G_M33083_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 8, PerfScore 328.00, instruction count 53, allocated bytes for code 212 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
+; Total bytes of code 192, prolog size 8, PerfScore 298.00, instruction count 48, allocated bytes for code 192 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+29.41%) : 14252.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,33 +9,37 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M41908_IG08 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #127 bgt G_M41908_IG06 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, #1 @@ -51,8 +55,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 40.00, instruction count 22, allocated bytes for code 88 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -63,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+31.25%) : 12980.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2 -; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16 +;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref +; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,18 +25,21 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v16.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8690_IG06 + ldr s17, [x0, x2, LSL #2]
fsub s17, s17, s17 fadd s16, s17, s16 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=36 bbWeight=4 PerfScore 52.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] fcmp s16, #0.0 @@ -45,8 +49,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 60.50, instruction count 21, allocated bytes for code 84 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 1046.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- 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.osx.arm64.checked.mch 1,867 181 1,557 129 -2,164 +15,744
benchmarks.run_pgo.osx.arm64.checked.mch 4,348 1,474 2,567 307 -14,540 +35,944
benchmarks.run_tiered.osx.arm64.checked.mch 1,066 504 510 52 -5,332 +6,628
coreclr_tests.run.osx.arm64.checked.mch 21,777 1,826 19,152 799 -16,036 +171,208
libraries.crossgen2.osx.arm64.checked.mch 5,696 742 4,511 443 -8,148 +48,620
libraries.pmi.osx.arm64.checked.mch 8,090 931 6,608 551 -9,708 +71,176
libraries_tests.run.osx.arm64.Release.mch 23,062 5,069 16,978 1,015 -45,912 +224,744
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 9,516 1,271 7,385 860 -12,896 +69,984
realworld.run.osx.arm64.checked.mch 1,594 221 1,259 114 -2,744 +13,272
77,016 12,219 60,527 4,270 -117,480 +657,320

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,854 4 24,850 6 (0.02%) 6 (0.02%)
benchmarks.run_pgo.osx.arm64.checked.mch 83,763 48,088 35,675 54 (0.06%) 54 (0.06%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,121 37,350 10,771 3 (0.01%) 3 (0.01%)
coreclr_tests.run.osx.arm64.checked.mch 585,792 356,765 229,027 94 (0.02%) 96 (0.02%)
libraries.crossgen2.osx.arm64.checked.mch 234,102 15 234,087 0 (0.00%) 3 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,333 18 316,315 15 (0.00%) 15 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 643,301 468,829 174,472 584 (0.09%) 584 (0.09%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 302,287 21,597 280,690 13 (0.00%) 14 (0.00%)
realworld.run.osx.arm64.checked.mch 31,539 3 31,536 3 (0.01%) 3 (0.01%)
2,270,092 932,669 1,337,423 772 (0.03%) 778 (0.03%)

jit-analyze output

benchmarks.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11173700 (overridden on cmd)
Total bytes of diff: 11187280 (overridden on cmd)
Total bytes of delta: 13580 (0.12 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 16241.dasm (5.49 % of base)
         160 : 15154.dasm (8.51 % of base)
         112 : 24628.dasm (7.24 % of base)
         108 : 6281.dasm (2.40 % of base)
          84 : 13349.dasm (1.11 % of base)
          84 : 8163.dasm (3.07 % of base)
          84 : 24248.dasm (0.78 % of base)
          84 : 10974.dasm (0.77 % of base)
          84 : 23064.dasm (1.06 % of base)
          80 : 10749.dasm (5.56 % of base)
          80 : 21579.dasm (7.91 % of base)
          80 : 5311.dasm (1.26 % of base)
          68 : 16409.dasm (3.71 % of base)
          68 : 17155.dasm (3.97 % of base)
          64 : 1622.dasm (6.15 % of base)
          64 : 5279.dasm (3.14 % of base)
          64 : 24607.dasm (28.57 % of base)
          60 : 22395.dasm (3.23 % of base)
          60 : 5615.dasm (6.02 % of base)
          60 : 18793.dasm (2.13 % of base)

Top file improvements (bytes):
        -136 : 23044.dasm (-1.25 % of base)
        -136 : 7347.dasm (-3.74 % of base)
         -88 : 17123.dasm (-0.98 % of base)
         -68 : 10813.dasm (-0.21 % of base)
         -64 : 20525.dasm (-19.51 % of base)
         -56 : 16868.dasm (-1.79 % of base)
         -56 : 18021.dasm (-1.33 % of base)
         -48 : 15153.dasm (-4.18 % of base)
         -44 : 21392.dasm (-0.12 % of base)
         -44 : 2802.dasm (-3.51 % of base)
         -44 : 22474.dasm (-2.74 % of base)
         -40 : 2617.dasm (-2.03 % of base)
         -36 : 21244.dasm (-1.69 % of base)
         -36 : 627.dasm (-3.42 % of base)
         -32 : 318.dasm (-1.91 % of base)
         -32 : 877.dasm (-2.76 % of base)
         -28 : 5651.dasm (-1.13 % of base)
         -28 : 1710.dasm (-0.83 % of base)
         -28 : 24440.dasm (-1.59 % of base)
         -24 : 22387.dasm (-4.76 % of base)

89 total files with Code Size differences (35 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         196 (5.49 % of base) : 16241.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 15154.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         112 (7.24 % of base) : 24628.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         108 (2.40 % of base) : 6281.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
          84 (1.11 % of base) : 13349.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
          84 (0.78 % of base) : 24248.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
          84 (1.06 % of base) : 23064.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
          84 (0.77 % of base) : 10974.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
          84 (3.07 % of base) : 8163.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
          80 (5.56 % of base) : 10749.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
          80 (1.26 % of base) : 5311.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          80 (7.91 % of base) : 21579.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          68 (3.71 % of base) : 16409.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          68 (3.97 % of base) : 17155.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          64 (28.57 % of base) : 24607.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          64 (6.15 % of base) : 1622.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (FullOpts)
          64 (3.14 % of base) : 5279.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (3.23 % of base) : 22395.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
          60 (2.13 % of base) : 18793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (6.02 % of base) : 5615.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 23044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -136 (-3.74 % of base) : 7347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-0.98 % of base) : 17123.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -68 (-0.21 % of base) : 10813.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -64 (-19.51 % of base) : 20525.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-1.79 % of base) : 16868.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 18021.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -48 (-4.18 % of base) : 15153.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -44 (-0.12 % of base) : 21392.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
         -44 (-2.74 % of base) : 22474.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
         -44 (-3.51 % of base) : 2802.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -40 (-2.03 % of base) : 2617.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -36 (-1.69 % of base) : 21244.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
         -36 (-3.42 % of base) : 627.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-1.91 % of base) : 318.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -32 (-2.76 % of base) : 877.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
         -28 (-1.13 % of base) : 5651.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (FullOpts)
         -28 (-1.59 % of base) : 24440.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (FullOpts)
         -28 (-0.83 % of base) : 1710.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -24 (-4.76 % of base) : 22387.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)

Top method regressions (percentages):
          24 (40.00 % of base) : 21561.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 23031.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 16143.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
          20 (38.46 % of base) : 1055.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 12587.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (35.29 % of base) : 12009.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          20 (33.33 % of base) : 22185.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 12351.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 23212.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (31.25 % of base) : 22744.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
          64 (28.57 % of base) : 24607.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          20 (27.78 % of base) : 22582.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 19683.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 22280.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          20 (26.32 % of base) : 22450.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
          20 (25.00 % of base) : 21312.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 17145.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
          20 (25.00 % of base) : 24238.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 24124.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
          20 (21.74 % of base) : 23657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 20525.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -12 (-6.00 % of base) : 9349.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
          -4 (-5.56 % of base) : 24410.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -8 (-5.00 % of base) : 15150.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
         -16 (-4.94 % of base) : 17320.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
          -8 (-4.88 % of base) : 24311.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -24 (-4.76 % of base) : 22387.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
          -4 (-4.76 % of base) : 20487.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -4 (-4.55 % of base) : 15503.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -16 (-4.44 % of base) : 15171.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -48 (-4.18 % of base) : 15153.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -12 (-4.17 % of base) : 16774.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -12 (-4.05 % of base) : 16455.dasm - NeuralJagged:do_out_forward() (FullOpts)
          -4 (-4.00 % of base) : 11830.dasm - System.Xml.XmlBaseReader+NamespaceManager:Register(System.Xml.XmlBaseReader+Namespace):this (FullOpts)
        -136 (-3.74 % of base) : 7347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -12 (-3.61 % of base) : 16454.dasm - NeuralJagged:do_mid_forward(int) (FullOpts)
         -12 (-3.57 % of base) : 7388.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
         -44 (-3.51 % of base) : 2802.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -36 (-3.42 % of base) : 627.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -16 (-3.31 % of base) : 20621.dasm - System.Globalization.DateTimeFormatInfo:InsertAtCurrentHashNode(System.Globalization.DateTimeFormatInfo+TokenHashValue[],System.String,ushort,int,int,int,int,int):this (FullOpts)


benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34346112 (overridden on cmd)
Total bytes of diff: 34367516 (overridden on cmd)
Total bytes of delta: 21404 (0.06 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         184 : 42109.dasm (5.18 % of base)
         156 : 38106.dasm (7.63 % of base)
         148 : 82602.dasm (9.49 % of base)
         128 : 39223.dasm (5.42 % of base)
         128 : 38098.dasm (5.61 % of base)
         116 : 39233.dasm (5.02 % of base)
         104 : 42108.dasm (5.80 % of base)
         104 : 42105.dasm (5.80 % of base)
          84 : 29055.dasm (3.70 % of base)
          72 : 42104.dasm (5.34 % of base)
          72 : 42107.dasm (5.34 % of base)
          68 : 63514.dasm (1.88 % of base)
          64 : 11587.dasm (3.09 % of base)
          60 : 29059.dasm (3.09 % of base)
          56 : 34523.dasm (2.69 % of base)
          52 : 72093.dasm (1.37 % of base)
          52 : 43603.dasm (2.88 % of base)
          52 : 72086.dasm (1.37 % of base)
          52 : 75363.dasm (1.54 % of base)
          52 : 59039.dasm (8.72 % of base)

Top file improvements (bytes):
        -160 : 80380.dasm (-8.49 % of base)
        -144 : 80379.dasm (-6.10 % of base)
        -128 : 72094.dasm (-1.18 % of base)
        -120 : 59418.dasm (-2.00 % of base)
        -112 : 65607.dasm (-3.87 % of base)
        -112 : 81474.dasm (-3.98 % of base)
        -112 : 81808.dasm (-3.16 % of base)
        -108 : 58842.dasm (-3.21 % of base)
        -108 : 77234.dasm (-3.21 % of base)
        -108 : 83389.dasm (-3.06 % of base)
        -108 : 44975.dasm (-3.21 % of base)
        -108 : 60064.dasm (-3.21 % of base)
        -104 : 45603.dasm (-3.21 % of base)
         -96 : 70057.dasm (-5.42 % of base)
         -92 : 25229.dasm (-0.28 % of base)
         -88 : 72087.dasm (-0.77 % of base)
         -84 : 69792.dasm (-1.91 % of base)
         -84 : 71057.dasm (-1.91 % of base)
         -84 : 72095.dasm (-0.74 % of base)
         -80 : 58886.dasm (-2.40 % of base)

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

Top method regressions (bytes):
         184 (5.18 % of base) : 42109.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         156 (7.63 % of base) : 38106.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (9.49 % of base) : 82602.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
         128 (5.61 % of base) : 38098.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 39223.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         116 (5.02 % of base) : 39233.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         104 (5.80 % of base) : 42108.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         104 (5.80 % of base) : 42105.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          84 (3.70 % of base) : 29055.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
          72 (5.34 % of base) : 42104.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          72 (5.34 % of base) : 42107.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          68 (1.88 % of base) : 63514.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
          64 (3.09 % of base) : 11587.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
          60 (3.09 % of base) : 29059.dasm - EMFloat:MultiplyInternalFPF(byref,byref,byref) (Tier1)
          56 (2.69 % of base) : 34523.dasm - EMFloatClass:MultiplyInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
          52 (1.37 % of base) : 72093.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          52 (1.37 % of base) : 72086.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          52 (1.54 % of base) : 75363.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
          52 (2.88 % of base) : 43603.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          52 (8.72 % of base) : 59039.dasm - System.Net.SslProtocolsValidation:ValidateContiguous(int,int[]):System.ValueTuple`2[int,int] (Tier0-FullOpts)

Top method improvements (bytes):
        -160 (-8.49 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -144 (-6.10 % of base) : 80379.dasm - NumericSortJagged:Run():double:this (Tier1)
        -128 (-1.18 % of base) : 72094.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -120 (-2.00 % of base) : 59418.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -112 (-3.16 % of base) : 81808.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -112 (-3.87 % of base) : 65607.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.98 % of base) : 81474.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
        -108 (-3.21 % of base) : 58842.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 77234.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.06 % of base) : 83389.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 44975.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 60064.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -104 (-3.21 % of base) : 45603.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -96 (-5.42 % of base) : 70057.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -92 (-0.28 % of base) : 25229.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -88 (-0.77 % of base) : 72087.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -84 (-0.74 % of base) : 72095.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -84 (-1.91 % of base) : 69792.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -84 (-1.91 % of base) : 71057.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -80 (-2.40 % of base) : 58886.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)

Top method regressions (percentages):
          28 (33.33 % of base) : 63160.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          28 (33.33 % of base) : 56652.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          24 (30.00 % of base) : 18110.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          24 (30.00 % of base) : 75429.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (20.83 % of base) : 64305.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (17.24 % of base) : 60524.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (17.24 % of base) : 17723.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (15.38 % of base) : 61597.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
          20 (14.71 % of base) : 56914.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
          16 (14.29 % of base) : 76055.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 76056.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 80719.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 81944.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 35108.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 36344.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 78959.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 58944.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 71616.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 71627.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 74287.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 31502.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
        -160 (-8.49 % of base) : 80380.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -32 (-7.69 % of base) : 3704.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 31501.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -24 (-6.67 % of base) : 7762.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -24 (-6.59 % of base) : 69153.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -16 (-6.56 % of base) : 16110.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Instrumented Tier0)
         -16 (-6.56 % of base) : 16107.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
        -144 (-6.10 % of base) : 80379.dasm - NumericSortJagged:Run():double:this (Tier1)
         -40 (-5.71 % of base) : 31503.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Instrumented Tier0)
         -24 (-5.50 % of base) : 16112.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Instrumented Tier0)
         -28 (-5.43 % of base) : 3703.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -96 (-5.42 % of base) : 70057.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -28 (-5.22 % of base) : 31976.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
         -28 (-5.22 % of base) : 31972.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
          -8 (-5.13 % of base) : 60767.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 58920.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 76850.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 28185.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 78200.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)


benchmarks.run_tiered.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15512636 (overridden on cmd)
Total bytes of diff: 15513932 (overridden on cmd)
Total bytes of delta: 1296 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 31776.dasm (5.49 % of base)
         160 : 29467.dasm (8.51 % of base)
         140 : 31775.dasm (4.54 % of base)
         136 : 30796.dasm (6.25 % of base)
         124 : 29465.dasm (5.85 % of base)
         112 : 47928.dasm (7.24 % of base)
          84 : 26090.dasm (3.07 % of base)
          68 : 46264.dasm (3.97 % of base)
          68 : 46277.dasm (4.27 % of base)
          64 : 11039.dasm (3.14 % of base)
          60 : 21944.dasm (6.02 % of base)
          52 : 25635.dasm (3.05 % of base)
          52 : 39705.dasm (8.72 % of base)
          48 : 30798.dasm (5.61 % of base)
          48 : 5875.dasm (2.33 % of base)
          48 : 47925.dasm (5.15 % of base)
          44 : 32061.dasm (2.44 % of base)
          44 : 46528.dasm (2.81 % of base)
          36 : 46266.dasm (9.89 % of base)
          36 : 39308.dasm (4.95 % of base)

Top file improvements (bytes):
        -136 : 17666.dasm (-3.56 % of base)
        -136 : 45044.dasm (-1.25 % of base)
        -112 : 43029.dasm (-4.83 % of base)
        -112 : 47458.dasm (-3.98 % of base)
         -88 : 39846.dasm (-0.98 % of base)
         -84 : 32754.dasm (-2.88 % of base)
         -76 : 44688.dasm (-4.32 % of base)
         -68 : 14783.dasm (-0.78 % of base)
         -68 : 21350.dasm (-0.21 % of base)
         -60 : 29463.dasm (-4.98 % of base)
         -56 : 39844.dasm (-1.73 % of base)
         -56 : 32757.dasm (-1.79 % of base)
         -56 : 39080.dasm (-1.36 % of base)
         -56 : 42618.dasm (-3.74 % of base)
         -52 : 17295.dasm (-4.26 % of base)
         -52 : 43570.dasm (-3.23 % of base)
         -52 : 44348.dasm (-2.56 % of base)
         -52 : 47478.dasm (-3.28 % of base)
         -48 : 29466.dasm (-4.18 % of base)
         -48 : 433.dasm (-1.35 % of base)

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

Top method regressions (bytes):
         196 (5.49 % of base) : 31776.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         160 (8.51 % of base) : 29467.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         140 (4.54 % of base) : 31775.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         136 (6.25 % of base) : 30796.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (5.85 % of base) : 29465.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         112 (7.24 % of base) : 47928.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          84 (3.07 % of base) : 26090.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
          68 (3.97 % of base) : 46264.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          68 (4.27 % of base) : 46277.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          64 (3.14 % of base) : 11039.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
          60 (6.02 % of base) : 21944.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (Tier1-OSR)
          52 (8.72 % of base) : 39705.dasm - System.Net.SslProtocolsValidation:ValidateContiguous(int,int[]):System.ValueTuple`2[int,int] (Tier0-FullOpts)
          52 (3.05 % of base) : 25635.dasm - System.Numerics.BigInteger:.ctor(System.ReadOnlySpan`1[ubyte],ubyte,ubyte):this (Tier1)
          48 (5.61 % of base) : 30798.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
          48 (5.15 % of base) : 47925.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
          48 (2.33 % of base) : 5875.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
          44 (2.44 % of base) : 32061.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          44 (2.81 % of base) : 46528.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier1)
          36 (1.03 % of base) : 43028.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          36 (9.89 % of base) : 46266.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 45044.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -136 (-3.56 % of base) : 17666.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
        -112 (-4.83 % of base) : 43029.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Tier0)
        -112 (-3.98 % of base) : 47458.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
         -88 (-0.98 % of base) : 39846.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
         -84 (-2.88 % of base) : 32754.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
         -76 (-4.32 % of base) : 44688.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -68 (-0.21 % of base) : 21350.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-0.78 % of base) : 14783.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0)
         -60 (-4.98 % of base) : 29463.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-1.73 % of base) : 39844.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -56 (-3.74 % of base) : 42618.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.79 % of base) : 32757.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -56 (-1.36 % of base) : 39080.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-3.23 % of base) : 43570.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-2.56 % of base) : 44348.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int (Tier0)
         -52 (-3.28 % of base) : 47478.dasm - System.SpanHelpers:LastIndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-4.26 % of base) : 17295.dasm - System.Text.Json.JsonWriterHelper:EscapeNextChars(ushort,System.Span`1[ushort],byref) (Tier0)
         -48 (-4.18 % of base) : 29466.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1)
         -48 (-1.35 % of base) : 433.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier0)

Top method regressions (percentages):
          20 (21.74 % of base) : 38994.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (20.83 % of base) : 38939.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (17.24 % of base) : 6072.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (14.29 % of base) : 24235.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 14151.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1)
          20 (13.89 % of base) : 42421.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (Tier1)
          20 (13.51 % of base) : 40062.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          12 (12.50 % of base) : 39041.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
          16 (12.12 % of base) : 14150.dasm - System.Random+Net5CompatSeedImpl:NextBytes(ubyte[]):this (Tier1)
          12 (11.11 % of base) : 4195.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
          28 (10.77 % of base) : 47286.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
          12 (10.71 % of base) : 46272.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
          16 (10.00 % of base) : 30214.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
          12 (10.00 % of base) : 27699.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)
          16 (10.00 % of base) : 41756.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(ushort[],int,int):int (Tier1)
          36 (10.00 % of base) : 46285.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          36 (9.89 % of base) : 46266.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          16 (9.76 % of base) : 46646.dasm - SciMark2.FFT:inverse(double[]) (Tier1-OSR)
          16 (9.52 % of base) : 25112.dasm - IfStatements.IfStatements:AndOr():this (Tier1-OSR)
          16 (9.52 % of base) : 48092.dasm - IfStatements.IfStatements:OrOr():this (Tier1-OSR)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 26996.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -32 (-7.69 % of base) : 18521.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 26995.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -24 (-6.67 % of base) : 12489.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -16 (-6.56 % of base) : 16174.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
         -40 (-6.49 % of base) : 26997.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Tier0)
         -12 (-6.00 % of base) : 16179.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier1)
         -28 (-5.98 % of base) : 27324.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier0)
         -24 (-5.56 % of base) : 1939.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
         -28 (-5.43 % of base) : 18520.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
          -8 (-5.13 % of base) : 23207.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
         -36 (-5.06 % of base) : 44516.dasm - System.Numerics.BigIntegerCalculator:SubtractCore(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier0)
          -8 (-5.00 % of base) : 29471.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)
         -44 (-5.00 % of base) : 48100.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0)
         -60 (-4.98 % of base) : 29463.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -24 (-4.96 % of base) : 43548.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier0)
         -16 (-4.94 % of base) : 41765.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
         -32 (-4.91 % of base) : 18522.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon]) (Tier0)
          -8 (-4.88 % of base) : 47225.dasm - NumericSortJagged:NumSift(int[],int,int) (Tier1)
        -112 (-4.83 % of base) : 43029.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Tier0)


coreclr_tests.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 486269368 (overridden on cmd)
Total bytes of diff: 486424540 (overridden on cmd)
Total bytes of delta: 155172 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         268 : 456539.dasm (71.28 % of base)
         268 : 452869.dasm (71.28 % of base)
         232 : 449030.dasm (54.72 % of base)
         216 : 481137.dasm (4.92 % of base)
         196 : 492754.dasm (5.49 % of base)
         160 : 493601.dasm (8.51 % of base)
         160 : 381474.dasm (1.39 % of base)
         156 : 248947.dasm (7.63 % of base)
         148 : 249056.dasm (5.94 % of base)
         128 : 248983.dasm (5.42 % of base)
         128 : 248988.dasm (5.52 % of base)
         128 : 248943.dasm (5.61 % of base)
         124 : 379882.dasm (1.00 % of base)
         112 : 492984.dasm (7.24 % of base)
         100 : 248946.dasm (4.45 % of base)
          96 : 249051.dasm (4.56 % of base)
          96 : 381662.dasm (0.66 % of base)
          92 : 249055.dasm (4.36 % of base)
          92 : 379172.dasm (0.65 % of base)
          88 : 517164.dasm (2.89 % of base)

Top file improvements (bytes):
        -156 : 248666.dasm (-7.60 % of base)
        -156 : 248917.dasm (-4.76 % of base)
        -148 : 248670.dasm (-6.16 % of base)
        -136 : 492710.dasm (-1.25 % of base)
        -120 : 522734.dasm (-2.92 % of base)
        -120 : 517166.dasm (-2.92 % of base)
        -104 : 249219.dasm (-3.21 % of base)
        -100 : 480697.dasm (-3.37 % of base)
        -100 : 401957.dasm (-6.04 % of base)
         -88 : 492653.dasm (-0.98 % of base)
         -80 : 582394.dasm (-5.35 % of base)
         -80 : 248677.dasm (-1.61 % of base)
         -68 : 248968.dasm (-2.89 % of base)
         -60 : 582202.dasm (-7.94 % of base)
         -60 : 172651.dasm (-3.11 % of base)
         -56 : 493671.dasm (-1.79 % of base)
         -56 : 488237.dasm (-1.33 % of base)
         -56 : 292112.dasm (-5.22 % of base)
         -56 : 292117.dasm (-5.22 % of base)
         -52 : 570414.dasm (-1.43 % of base)

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

Top method regressions (bytes):
         268 (71.28 % of base) : 456539.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 452869.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 449030.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
         216 (4.92 % of base) : 481137.dasm - VectorTest:TestEntryPoint():int (FullOpts)
         196 (5.49 % of base) : 492754.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 493601.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         160 (1.39 % of base) : 381474.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
         156 (7.63 % of base) : 248947.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (5.94 % of base) : 249056.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1)
         128 (5.61 % of base) : 248943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 248983.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         128 (5.52 % of base) : 248988.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (1.00 % of base) : 379882.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         112 (7.24 % of base) : 492984.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         100 (4.45 % of base) : 248946.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
          96 (4.56 % of base) : 249051.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
          96 (0.66 % of base) : 381662.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          92 (4.36 % of base) : 249055.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
          92 (0.65 % of base) : 379172.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          88 (2.89 % of base) : 517164.dasm - structarr:gaussj(MatrixStruct,int,MatrixStruct,int) (FullOpts)

Top method improvements (bytes):
        -156 (-4.76 % of base) : 248917.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -156 (-7.60 % of base) : 248666.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -148 (-6.16 % of base) : 248670.dasm - NumericSortJagged:Run():double:this (Tier1-OSR)
        -136 (-1.25 % of base) : 492710.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -120 (-2.92 % of base) : 522734.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -120 (-2.92 % of base) : 517166.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -104 (-3.21 % of base) : 249219.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -100 (-6.04 % of base) : 401957.dasm - StrAccess1:Run(System.String):int (FullOpts)
        -100 (-3.37 % of base) : 480697.dasm - Test:TestEntryPoint():int (FullOpts)
         -88 (-0.98 % of base) : 492653.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -80 (-5.35 % of base) : 582394.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -80 (-1.61 % of base) : 248677.dasm - NumericSortJagged:Run():double:this (Tier1)
         -68 (-2.89 % of base) : 248968.dasm - AssignJagged:Run():double:this (Tier1)
         -60 (-7.94 % of base) : 582202.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:PickPivotAndPartition(System.Span`1[uint],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-3.11 % of base) : 172651.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Instrumented Tier1)
         -56 (-5.22 % of base) : 292112.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this (Tier1)
         -56 (-5.22 % of base) : 292117.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this (Tier1)
         -56 (-1.79 % of base) : 493671.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 488237.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-1.43 % of base) : 570414.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (FullOpts)

Top method regressions (percentages):
         268 (71.28 % of base) : 456539.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 452869.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 449030.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
          20 (45.45 % of base) : 493328.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
          24 (40.00 % of base) : 492488.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 492507.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 530061.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
          20 (38.46 % of base) : 530062.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
          20 (33.33 % of base) : 505633.dasm - CreateSpanTest:Main():int (FullOpts)
          20 (33.33 % of base) : 492491.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 492494.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 492510.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          24 (30.00 % of base) : 344649.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (27.78 % of base) : 492500.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 490040.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 492497.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          24 (27.27 % of base) : 378288.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 381394.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          48 (23.53 % of base) : 491270.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
          20 (21.74 % of base) : 487975.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)

Top method improvements (percentages):
          -4 (-11.11 % of base) : 400945.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)
          -8 (-11.11 % of base) : 517407.dasm - Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
          -8 (-11.11 % of base) : 517486.dasm - Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
         -16 (-10.00 % of base) : 381460.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-10.00 % of base) : 380890.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.Reflection.Metadata.EntityHandle,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
          -4 (-10.00 % of base) : 290917.dasm - Test_unsafe_0.TestApp:test_56(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 279943.dasm - Test_unsafe_0.TestApp:test_77(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 522862.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 517460.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 517462.dasm - Test_unsafe_4.TestApp:test_389(ulong,long):long (FullOpts)
          -4 (-9.09 % of base) : 517376.dasm - Test_unsafe_0.TestApp:test_140(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 517413.dasm - Test_unsafe_2.TestApp:test_23(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 517421.dasm - Test_unsafe_2.TestApp:test_296(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 280061.dasm - Test_unsafe_2.TestApp:test_58(ulong,long):long (Tier0)
          -4 (-9.09 % of base) : 517431.dasm - Test_unsafe_3.TestApp:test_101(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 517470.dasm - Test_unsafe_5.TestApp:test_257(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 517494.dasm - Test_unsafe_6.TestApp:test_370(ulong,long):long (FullOpts)
          -8 (-9.09 % of base) : 512341.dasm - TestApp:test_2_12(long):long (FullOpts)
          -4 (-9.09 % of base) : 300906.dasm - X:E(byref,int):float (Tier0)
         -36 (-8.82 % of base) : 371065.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:Swap(System.Span`1[uint],System.Span`1[System.__Canon],int,int) (Tier0)


libraries.crossgen2.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55715716 (overridden on cmd)
Total bytes of diff: 55756188 (overridden on cmd)
Total bytes of delta: 40472 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         436 : 140498.dasm (1.60 % of base)
         144 : 141469.dasm (3.34 % of base)
         124 : 221913.dasm (15.98 % of base)
         112 : 141185.dasm (3.50 % of base)
          96 : 103191.dasm (2.08 % of base)
          96 : 206856.dasm (9.64 % of base)
          96 : 229013.dasm (9.64 % of base)
          88 : 32456.dasm (13.66 % of base)
          88 : 177096.dasm (13.66 % of base)
          88 : 194776.dasm (2.93 % of base)
          84 : 20001.dasm (5.17 % of base)
          84 : 218637.dasm (5.36 % of base)
          84 : 218638.dasm (5.32 % of base)
          76 : 85036.dasm (3.00 % of base)
          72 : 44697.dasm (1.47 % of base)
          72 : 82856.dasm (2.10 % of base)
          72 : 131945.dasm (2.53 % of base)
          72 : 23277.dasm (9.23 % of base)
          72 : 150140.dasm (6.64 % of base)
          72 : 168865.dasm (9.23 % of base)

Top file improvements (bytes):
        -108 : 194563.dasm (-2.56 % of base)
        -100 : 143930.dasm (-4.05 % of base)
        -100 : 144337.dasm (-2.65 % of base)
        -100 : 16990.dasm (-2.77 % of base)
         -92 : 18382.dasm (-79.31 % of base)
         -92 : 18619.dasm (-79.31 % of base)
         -92 : 18735.dasm (-79.31 % of base)
         -88 : 149856.dasm (-0.93 % of base)
         -80 : 148400.dasm (-1.57 % of base)
         -80 : 150468.dasm (-1.12 % of base)
         -76 : 79913.dasm (-4.02 % of base)
         -64 : 71170.dasm (-1.20 % of base)
         -64 : 140298.dasm (-2.41 % of base)
         -64 : 150806.dasm (-1.59 % of base)
         -64 : 193845.dasm (-8.60 % of base)
         -64 : 21635.dasm (-16.67 % of base)
         -60 : 35733.dasm (-4.03 % of base)
         -60 : 180278.dasm (-4.03 % of base)
         -60 : 191473.dasm (-4.03 % of base)
         -60 : 150848.dasm (-1.53 % of base)

89 total files with Code Size differences (35 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         436 (1.60 % of base) : 140498.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         144 (3.34 % of base) : 141469.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         124 (15.98 % of base) : 221913.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         112 (3.50 % of base) : 141185.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
          96 (2.08 % of base) : 103191.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
          96 (9.64 % of base) : 206856.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          96 (9.64 % of base) : 229013.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          88 (13.66 % of base) : 32456.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (13.66 % of base) : 177096.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (2.93 % of base) : 194776.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
          84 (5.36 % of base) : 218637.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.32 % of base) : 218638.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.17 % of base) : 20001.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          76 (3.00 % of base) : 85036.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          72 (1.47 % of base) : 44697.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          72 (2.10 % of base) : 82856.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
          72 (2.53 % of base) : 131945.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          72 (9.23 % of base) : 23277.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          72 (9.23 % of base) : 168865.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          72 (6.64 % of base) : 150140.dasm - System.Data.ProviderBase.SchemaMapping:ApplyToDataRow(System.Data.DataRow):this (FullOpts)

Top method improvements (bytes):
        -108 (-2.56 % of base) : 194563.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
        -100 (-4.05 % of base) : 143930.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -100 (-2.65 % of base) : 144337.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.77 % of base) : 16990.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -92 (-79.31 % of base) : 18619.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 18382.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 18735.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -88 (-0.93 % of base) : 149856.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -80 (-1.57 % of base) : 148400.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
         -80 (-1.12 % of base) : 150468.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-4.02 % of base) : 79913.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:partitionIntoTwoUsingKeys[System.__Canon,System.__Canon](System.__Canon[],System.ArraySegment`1[System.__Canon]):System.Tuple`2[System.ArraySegment`1[System.__Canon],System.ArraySegment`1[System.__Canon]] (FullOpts)
         -64 (-1.20 % of base) : 71170.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)
         -64 (-2.41 % of base) : 140298.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
         -64 (-16.67 % of base) : 21635.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -64 (-1.59 % of base) : 150806.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-8.60 % of base) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -60 (-4.03 % of base) : 35733.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-4.03 % of base) : 180278.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-4.03 % of base) : 191473.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-1.53 % of base) : 150848.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)

Top method regressions (percentages):
          32 (57.14 % of base) : 224528.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 23340.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 168923.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 196006.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 194146.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (50.00 % of base) : 198963.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          32 (47.06 % of base) : 24499.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 170071.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 81297.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          32 (44.44 % of base) : 202245.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          36 (42.86 % of base) : 23430.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 169009.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 204361.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          52 (38.24 % of base) : 186598.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          32 (34.78 % of base) : 231799.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
          36 (34.62 % of base) : 25599.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          36 (34.62 % of base) : 171050.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          32 (33.33 % of base) : 23327.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          32 (33.33 % of base) : 168912.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          32 (32.00 % of base) : 221893.dasm - System.Diagnostics.ActivityTraceId:IsLowerCaseHexAndNotAllZeros(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -92 (-79.31 % of base) : 18619.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 18382.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 18735.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -64 (-16.67 % of base) : 21635.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -32 (-13.33 % of base) : 160653.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
         -64 (-8.60 % of base) : 193845.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -16 (-8.33 % of base) : 27489.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -16 (-8.33 % of base) : 172802.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -52 (-8.18 % of base) : 15593.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-7.80 % of base) : 15592.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
          -8 (-7.69 % of base) : 130791.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-7.69 % of base) : 130792.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-7.69 % of base) : 130634.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.69 % of base) : 130659.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
          -4 (-7.69 % of base) : 16216.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
         -52 (-7.43 % of base) : 195693.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -52 (-7.14 % of base) : 195692.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -52 (-7.14 % of base) : 193844.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
         -16 (-6.45 % of base) : 144328.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:HasBound(int):ubyte:this (FullOpts)
         -32 (-6.35 % of base) : 20567.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)


libraries.pmi.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80194908 (overridden on cmd)
Total bytes of diff: 80256376 (overridden on cmd)
Total bytes of delta: 61468 (0.08 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        1404 : 20881.dasm (81.25 % of base)
        1404 : 21294.dasm (81.25 % of base)
        1404 : 21300.dasm (81.25 % of base)
         776 : 20218.dasm (97.00 % of base)
         776 : 20635.dasm (97.00 % of base)
         776 : 20641.dasm (97.00 % of base)
         436 : 189302.dasm (1.63 % of base)
         404 : 19539.dasm (100.00 % of base)
         404 : 19972.dasm (100.00 % of base)
         404 : 19978.dasm (100.00 % of base)
         200 : 21520.dasm (98.04 % of base)
         200 : 21930.dasm (98.04 % of base)
         200 : 21936.dasm (98.04 % of base)
         156 : 133776.dasm (2.80 % of base)
         132 : 188117.dasm (3.75 % of base)
         128 : 21931.dasm (76.19 % of base)
         124 : 296584.dasm (9.97 % of base)
         124 : 119252.dasm (3.53 % of base)
         116 : 189205.dasm (2.82 % of base)
         112 : 189316.dasm (1.86 % of base)

Top file improvements (bytes):
        -152 : 189309.dasm (-5.40 % of base)
        -136 : 26590.dasm (-3.61 % of base)
        -104 : 110817.dasm (-1.86 % of base)
         -84 : 132426.dasm (-2.40 % of base)
         -84 : 213720.dasm (-1.18 % of base)
         -80 : 166802.dasm (-5.12 % of base)
         -76 : 211519.dasm (-0.79 % of base)
         -76 : 188575.dasm (-2.84 % of base)
         -64 : 61257.dasm (-1.02 % of base)
         -64 : 213664.dasm (-1.59 % of base)
         -64 : 1955.dasm (-19.51 % of base)
         -60 : 136950.dasm (-1.24 % of base)
         -60 : 213725.dasm (-1.53 % of base)
         -56 : 57456.dasm (-1.28 % of base)
         -56 : 26594.dasm (-3.05 % of base)
         -56 : 213659.dasm (-0.76 % of base)
         -52 : 93382.dasm (-1.44 % of base)
         -52 : 61154.dasm (-2.00 % of base)
         -52 : 103624.dasm (-3.71 % of base)
         -52 : 213663.dasm (-1.00 % of base)

81 total files with Code Size differences (40 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
        1404 (81.25 % of base) : 20881.dasm - System.Runtime.Intrinsics.Vector512:Divide[short](System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
        1404 (81.25 % of base) : 21294.dasm - System.Runtime.Intrinsics.Vector512`1[short]:op_Division(System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
        1404 (81.25 % of base) : 21300.dasm - System.Runtime.Intrinsics.Vector512`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Divide(System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
         776 (97.00 % of base) : 20218.dasm - System.Runtime.Intrinsics.Vector256:Divide[short](System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         776 (97.00 % of base) : 20635.dasm - System.Runtime.Intrinsics.Vector256`1[short]:op_Division(System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         776 (97.00 % of base) : 20641.dasm - System.Runtime.Intrinsics.Vector256`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.Divide(System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         436 (1.63 % of base) : 189302.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         404 (100.00 % of base) : 19539.dasm - System.Runtime.Intrinsics.Vector128:Divide[short](System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         404 (100.00 % of base) : 19972.dasm - System.Runtime.Intrinsics.Vector128`1[short]:op_Division(System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         404 (100.00 % of base) : 19978.dasm - System.Runtime.Intrinsics.Vector128`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector128<T>,T>.Divide(System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         200 (98.04 % of base) : 21520.dasm - System.Runtime.Intrinsics.Vector64:Divide[short](System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         200 (98.04 % of base) : 21930.dasm - System.Runtime.Intrinsics.Vector64`1[short]:op_Division(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         200 (98.04 % of base) : 21936.dasm - System.Runtime.Intrinsics.Vector64`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector64<T>,T>.Divide(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         156 (2.80 % of base) : 133776.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         132 (3.75 % of base) : 188117.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
         128 (76.19 % of base) : 21931.dasm - System.Runtime.Intrinsics.Vector64`1[short]:op_Multiply(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         124 (3.53 % of base) : 119252.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
         124 (9.97 % of base) : 296584.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         116 (2.82 % of base) : 189205.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
         112 (1.86 % of base) : 189316.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)

Top method improvements (bytes):
        -152 (-5.40 % of base) : 189309.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -136 (-3.61 % of base) : 26590.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
        -104 (-1.86 % of base) : 110817.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
         -84 (-2.40 % of base) : 132426.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -84 (-1.18 % of base) : 213720.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-5.12 % of base) : 166802.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -76 (-2.84 % of base) : 188575.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -76 (-0.79 % of base) : 211519.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -64 (-1.02 % of base) : 61257.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
         -64 (-19.51 % of base) : 1955.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -64 (-1.59 % of base) : 213664.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-1.24 % of base) : 136950.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -60 (-1.53 % of base) : 213725.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.28 % of base) : 57456.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -56 (-0.76 % of base) : 213659.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -56 (-3.05 % of base) : 26594.dasm - System.Reflection.MethodBaseInvoker:InvokeConstructorWithoutAlloc(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -52 (-1.44 % of base) : 93382.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (FullOpts)
         -52 (-2.00 % of base) : 61154.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:SpillArrayElementAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -52 (-3.71 % of base) : 103624.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:partitionIntoTwoUsingKeys[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.ArraySegment`1[System.Nullable`1[int]]):System.Tuple`2[System.ArraySegment`1[System.Nullable`1[int]],System.ArraySegment`1[System.Nullable`1[int]]] (FullOpts)
         -52 (-1.00 % of base) : 213663.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)

Top method regressions (percentages):
         404 (100.00 % of base) : 19539.dasm - System.Runtime.Intrinsics.Vector128:Divide[short](System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         404 (100.00 % of base) : 19972.dasm - System.Runtime.Intrinsics.Vector128`1[short]:op_Division(System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         404 (100.00 % of base) : 19978.dasm - System.Runtime.Intrinsics.Vector128`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector128<T>,T>.Divide(System.Runtime.Intrinsics.Vector128`1[short],short):System.Runtime.Intrinsics.Vector128`1[short] (FullOpts)
         200 (98.04 % of base) : 21520.dasm - System.Runtime.Intrinsics.Vector64:Divide[short](System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         200 (98.04 % of base) : 21930.dasm - System.Runtime.Intrinsics.Vector64`1[short]:op_Division(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         200 (98.04 % of base) : 21936.dasm - System.Runtime.Intrinsics.Vector64`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector64<T>,T>.Divide(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         776 (97.00 % of base) : 20218.dasm - System.Runtime.Intrinsics.Vector256:Divide[short](System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         776 (97.00 % of base) : 20635.dasm - System.Runtime.Intrinsics.Vector256`1[short]:op_Division(System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
         776 (97.00 % of base) : 20641.dasm - System.Runtime.Intrinsics.Vector256`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector256<T>,T>.Divide(System.Runtime.Intrinsics.Vector256`1[short],short):System.Runtime.Intrinsics.Vector256`1[short] (FullOpts)
        1404 (81.25 % of base) : 20881.dasm - System.Runtime.Intrinsics.Vector512:Divide[short](System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
        1404 (81.25 % of base) : 21294.dasm - System.Runtime.Intrinsics.Vector512`1[short]:op_Division(System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
        1404 (81.25 % of base) : 21300.dasm - System.Runtime.Intrinsics.Vector512`1[short]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Divide(System.Runtime.Intrinsics.Vector512`1[short],short):System.Runtime.Intrinsics.Vector512`1[short] (FullOpts)
         128 (76.19 % of base) : 21931.dasm - System.Runtime.Intrinsics.Vector64`1[short]:op_Multiply(System.Runtime.Intrinsics.Vector64`1[short],short):System.Runtime.Intrinsics.Vector64`1[short] (FullOpts)
         108 (65.85 % of base) : 12259.dasm - System.Numerics.Vector:Dot[int](System.Numerics.Vector`1[int],System.Numerics.Vector`1[int]):int (FullOpts)
         100 (64.10 % of base) : 12431.dasm - System.Numerics.Vector:WidenUpper(System.Numerics.Vector`1[short]):System.Numerics.Vector`1[int] (FullOpts)
         100 (64.10 % of base) : 12435.dasm - System.Numerics.Vector:WidenUpper(System.Numerics.Vector`1[ushort]):System.Numerics.Vector`1[uint] (FullOpts)
          52 (41.94 % of base) : 222084.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (35.71 % of base) : 310288.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 34604.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (33.33 % of base) : 300588.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 1955.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -36 (-16.07 % of base) : 198135.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -32 (-14.29 % of base) : 205501.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
          -8 (-9.09 % of base) : 303759.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
         -44 (-8.80 % of base) : 5220.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
          -8 (-8.70 % of base) : 263367.dasm - System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)
          -8 (-8.70 % of base) : 263368.dasm - System.Collections.Generic.SegmentedList`1[double]:set_Item(long,double):this (FullOpts)
          -8 (-8.70 % of base) : 263357.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-8.70 % of base) : 263358.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-8.70 % of base) : 263387.dasm - System.Collections.Generic.SegmentedList`1[long]:get_Item(long):long:this (FullOpts)
          -8 (-8.70 % of base) : 263388.dasm - System.Collections.Generic.SegmentedList`1[long]:set_Item(long,long):this (FullOpts)
          -8 (-8.70 % of base) : 263347.dasm - System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)
          -8 (-8.70 % of base) : 263348.dasm - System.Collections.Generic.SegmentedList`1[short]:set_Item(long,short):this (FullOpts)
          -8 (-8.70 % of base) : 263277.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.96 % of base) : 263303.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
         -44 (-7.69 % of base) : 5221.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-7.19 % of base) : 300046.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
          -4 (-7.14 % of base) : 12955.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
         -32 (-6.78 % of base) : 18198.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -44 (-6.67 % of base) : 256067.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)


libraries_tests.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 323385308 (overridden on cmd)
Total bytes of diff: 323564140 (overridden on cmd)
Total bytes of delta: 178832 (0.06 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         320 : 88301.dasm (2.69 % of base)
         276 : 92841.dasm (1.94 % of base)
         224 : 72843.dasm (8.83 % of base)
         224 : 371235.dasm (2.43 % of base)
         208 : 600668.dasm (1.24 % of base)
         200 : 614056.dasm (3.28 % of base)
         200 : 155782.dasm (1.68 % of base)
         180 : 370822.dasm (2.10 % of base)
         180 : 370518.dasm (2.10 % of base)
         176 : 370120.dasm (2.05 % of base)
         172 : 365320.dasm (1.97 % of base)
         172 : 477989.dasm (1.32 % of base)
         168 : 318080.dasm (12.03 % of base)
         168 : 364189.dasm (1.93 % of base)
         164 : 364810.dasm (1.89 % of base)
         160 : 363094.dasm (2.03 % of base)
         160 : 542086.dasm (1.31 % of base)
         156 : 72849.dasm (6.85 % of base)
         156 : 363593.dasm (1.98 % of base)
         156 : 369728.dasm (1.98 % of base)

Top file improvements (bytes):
        -540 : 613674.dasm (-0.27 % of base)
        -160 : 179011.dasm (-1.24 % of base)
        -148 : 50590.dasm (-2.69 % of base)
        -140 : 591862.dasm (-1.12 % of base)
        -132 : 483363.dasm (-1.02 % of base)
        -128 : 82908.dasm (-2.68 % of base)
        -112 : 320514.dasm (-3.87 % of base)
        -112 : 332648.dasm (-3.87 % of base)
        -112 : 396176.dasm (-3.07 % of base)
        -112 : 297991.dasm (-1.99 % of base)
        -112 : 320492.dasm (-3.87 % of base)
        -112 : 371950.dasm (-3.98 % of base)
        -112 : 377242.dasm (-3.87 % of base)
        -108 : 158122.dasm (-2.54 % of base)
        -104 : 631865.dasm (-0.80 % of base)
         -84 : 299182.dasm (-0.86 % of base)
         -84 : 161909.dasm (-3.58 % of base)
         -84 : 330209.dasm (-0.65 % of base)
         -80 : 592537.dasm (-0.80 % of base)
         -80 : 371165.dasm (-0.76 % of base)

100 total files with Code Size differences (56 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         320 (2.69 % of base) : 88301.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         276 (1.94 % of base) : 92841.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
         224 (8.83 % of base) : 72843.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (Tier0-FullOpts)
         224 (2.43 % of base) : 371235.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MultiplyAdd_ThreeTensors>b__235_0(int):this (Tier1)
         208 (1.24 % of base) : 600668.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
         200 (3.28 % of base) : 614056.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         200 (1.68 % of base) : 155782.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         180 (2.10 % of base) : 370518.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MaxMagnitude_TwoTensors_SpecialValues>b__200_0(int):this (Tier1)
         180 (2.10 % of base) : 370822.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MinMagnitude_TwoTensors_SpecialValues>b__222_0(int):this (Tier1)
         176 (2.05 % of base) : 370120.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Max_TwoTensors_SpecialValues>b__189_0(int):this (Tier1)
         172 (1.32 % of base) : 477989.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         172 (1.97 % of base) : 365320.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[double]:<MaxMagnitude_TwoTensors_SpecialValues>b__200_0(int):this (Tier1)
         168 (1.93 % of base) : 364189.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MaxMagnitude_TwoTensors_SpecialValues>b__200_0(int):this (Tier1)
         168 (12.03 % of base) : 318080.dasm - System.SpanTests.SpanTests:TestMatchLastIndexOfAny_Byte_TwoByte() (Tier1-OSR)
         164 (1.89 % of base) : 364810.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Max_TwoTensors_SpecialValues>b__189_0(int):this (Tier1)
         160 (2.03 % of base) : 363094.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<MinMagnitude_TwoTensors_SpecialValues>b__222_0(int):this (Tier1)
         160 (1.31 % of base) : 542086.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
         156 (6.85 % of base) : 72849.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (Tier0-FullOpts)
         156 (1.98 % of base) : 363593.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Min_TwoTensors_SpecialValues>b__211_0(int):this (Tier1)
         156 (1.98 % of base) : 369728.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[float]:<Min_TwoTensors_SpecialValues>b__211_0(int):this (Tier1)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 613674.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5257_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -160 (-1.24 % of base) : 179011.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -148 (-2.69 % of base) : 50590.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
        -140 (-1.12 % of base) : 591862.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -132 (-1.02 % of base) : 483363.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -128 (-2.68 % of base) : 82908.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
        -112 (-3.87 % of base) : 320514.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 332648.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 320492.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 377242.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-1.99 % of base) : 297991.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -112 (-3.98 % of base) : 371950.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
        -112 (-3.07 % of base) : 396176.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (Tier1)
        -108 (-2.54 % of base) : 158122.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
        -104 (-0.80 % of base) : 631865.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -84 (-3.58 % of base) : 161909.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)
         -84 (-0.65 % of base) : 330209.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         -84 (-0.86 % of base) : 299182.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
         -80 (-0.76 % of base) : 371165.dasm - System.Numerics.Tensors.Tests.GenericFloatingPointNumberTensorPrimitivesTests`1+<>c__DisplayClass59_0[System.Runtime.InteropServices.NFloat]:<SpanSpanSpanDestination_ThrowsForMismatchedLengths>b__0(int):this (Tier1)
         -80 (-0.80 % of base) : 592537.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)

Top method regressions (percentages):
          52 (41.94 % of base) : 392226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
          20 (33.33 % of base) : 88112.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 599219.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 51389.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          24 (30.00 % of base) : 395505.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (29.41 % of base) : 603331.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (27.78 % of base) : 610964.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          24 (27.27 % of base) : 89466.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 611297.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 542577.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 569009.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 613754.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          20 (25.00 % of base) : 500740.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
          32 (23.53 % of base) : 409790.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
          20 (21.74 % of base) : 82238.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 155676.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 596681.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 50845.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (20.83 % of base) : 479527.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (Tier1)
          20 (20.83 % of base) : 489363.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (Tier1)

Top method improvements (percentages):
         -64 (-15.24 % of base) : 234333.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Instrumented Tier1)
         -12 (-13.04 % of base) : 364312.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 370448.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 364305.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 369757.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 370860.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 370857.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 363367.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 365645.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,int,System.Numerics.Tensors.TensorPrimitives+ConvertCheckedFallbackOperator`2[float,int]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 370935.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 370934.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 370047.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 363444.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 370706.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 362778.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+ExpM1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 370937.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+ExpM1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 362830.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 370954.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Log2P1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 362810.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 370952.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 162548024 (overridden on cmd)
Total bytes of diff: 162605112 (overridden on cmd)
Total bytes of delta: 57088 (0.04 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         224 : 18892.dasm (9.00 % of base)
         156 : 18898.dasm (6.85 % of base)
         136 : 173620.dasm (1.10 % of base)
         136 : 251959.dasm (1.16 % of base)
         136 : 18859.dasm (6.84 % of base)
         132 : 173618.dasm (1.26 % of base)
         128 : 173621.dasm (1.25 % of base)
         128 : 59053.dasm (2.09 % of base)
         128 : 59054.dasm (0.44 % of base)
         128 : 173622.dasm (1.25 % of base)
         124 : 95920.dasm (11.57 % of base)
         120 : 227688.dasm (3.23 % of base)
          96 : 53860.dasm (1.52 % of base)
          96 : 73011.dasm (4.55 % of base)
          96 : 50053.dasm (1.67 % of base)
          88 : 228293.dasm (1.35 % of base)
          88 : 52049.dasm (3.16 % of base)
          88 : 168766.dasm (3.43 % of base)
          88 : 44215.dasm (1.53 % of base)
          84 : 290724.dasm (3.37 % of base)

Top file improvements (bytes):
        -776 : 172236.dasm (-4.33 % of base)
        -540 : 286659.dasm (-0.27 % of base)
        -112 : 7187.dasm (-1.91 % of base)
        -112 : 93215.dasm (-0.89 % of base)
         -92 : 182981.dasm (-1.66 % of base)
         -92 : 180173.dasm (-1.48 % of base)
         -88 : 90896.dasm (-0.93 % of base)
         -84 : 88979.dasm (-1.18 % of base)
         -80 : 10875.dasm (-1.02 % of base)
         -80 : 180471.dasm (-3.53 % of base)
         -76 : 157471.dasm (-3.18 % of base)
         -76 : 24716.dasm (-2.49 % of base)
         -76 : 268673.dasm (-1.61 % of base)
         -76 : 117235.dasm (-1.57 % of base)
         -76 : 59570.dasm (-2.84 % of base)
         -72 : 207576.dasm (-1.67 % of base)
         -68 : 298022.dasm (-1.59 % of base)
         -64 : 90270.dasm (-1.59 % of base)
         -60 : 44146.dasm (-2.05 % of base)
         -60 : 49957.dasm (-1.80 % of base)

97 total files with Code Size differences (40 improved, 57 regressed), 20 unchanged.

Top method regressions (bytes):
         224 (9.00 % of base) : 18892.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
         156 (6.85 % of base) : 18898.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
         136 (6.84 % of base) : 18859.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
         136 (1.16 % of base) : 251959.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
         136 (1.10 % of base) : 173620.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
         132 (1.26 % of base) : 173618.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
         128 (0.44 % of base) : 59054.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         128 (2.09 % of base) : 59053.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         128 (1.25 % of base) : 173621.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
         128 (1.25 % of base) : 173622.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)
         124 (11.57 % of base) : 95920.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         120 (3.23 % of base) : 227688.dasm - System.Text.Encodings.Tests.EncoderMiscTests:GetBytesTest() (FullOpts)
          96 (1.52 % of base) : 53860.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          96 (1.67 % of base) : 50053.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          96 (4.55 % of base) : 73011.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
          88 (1.53 % of base) : 44215.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          88 (3.16 % of base) : 52049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          88 (1.35 % of base) : 228293.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf16_Battery(System.String[],System.String[]):this (FullOpts)
          88 (3.43 % of base) : 168766.dasm - System.Xml.XmlWriterTests.XmlWriterDisposeTests:DisposeFlushesAndDisposesOutputStream() (FullOpts)
          84 (3.37 % of base) : 290724.dasm - System.Text.RegularExpressions.Symbolic.BDDRangeConverter:ToRangesFromOrdinal(System.Text.RegularExpressions.Symbolic.BDD):System.ValueTuple`2[uint,uint][]:this (FullOpts)

Top method improvements (bytes):
        -776 (-4.33 % of base) : 172236.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        -540 (-0.27 % of base) : 286659.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5308_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -112 (-1.91 % of base) : 7187.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
        -112 (-0.89 % of base) : 93215.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
         -92 (-1.48 % of base) : 180173.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
         -92 (-1.66 % of base) : 182981.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
         -88 (-0.93 % of base) : 90896.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -84 (-1.18 % of base) : 88979.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-1.02 % of base) : 10875.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -80 (-3.53 % of base) : 180471.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
         -76 (-2.49 % of base) : 24716.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -76 (-2.84 % of base) : 59570.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -76 (-1.57 % of base) : 117235.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<SetsLastModifiedTimeOnExtractedDirectories>d__5:MoveNext():this (FullOpts)
         -76 (-3.18 % of base) : 157471.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -76 (-1.61 % of base) : 268673.dasm - System.Text.RegularExpressions.Tests.RegexMatchTests:<Match_Advanced>g__VerifyMatch|21_0(System.Text.RegularExpressions.Match,byref) (FullOpts)
         -72 (-1.67 % of base) : 207576.dasm - System.Tests.ArraySegment_Tests:GetSetItem_InRange(System.ArraySegment`1[int]) (FullOpts)
         -68 (-1.59 % of base) : 298022.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -64 (-1.59 % of base) : 90270.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-2.05 % of base) : 44146.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -60 (-1.80 % of base) : 49957.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,uint):this (FullOpts)

Top method regressions (percentages):
          20 (45.45 % of base) : 222713.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
          52 (41.94 % of base) : 128185.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (41.67 % of base) : 140941.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
          20 (38.46 % of base) : 134063.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 115759.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 176900.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 193497.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (33.33 % of base) : 195328.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (29.41 % of base) : 4878.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 193856.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          20 (29.41 % of base) : 264472.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 46425.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (26.67 % of base) : 89349.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (26.67 % of base) : 239811.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
          20 (25.00 % of base) : 228015.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (23.81 % of base) : 127660.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
          16 (23.53 % of base) : 134017.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
          20 (21.74 % of base) : 19444.dasm - Analyzer.Utilities.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 41956.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 48508.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -36 (-16.07 % of base) : 173935.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -16 (-11.43 % of base) : 129539.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
          -8 (-9.09 % of base) : 83984.dasm - System.Drawing.KnownColorTable:KnownColorToArgb(int):uint (FullOpts)
         -16 (-7.27 % of base) : 9849.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:InsertionSort(System.Span`1[uint],System.Span`1[System.__Canon]) (FullOpts)
         -12 (-6.25 % of base) : 25035.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
          -4 (-6.25 % of base) : 157215.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[short,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[short],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[short]](System.ReadOnlySpan`1[short]):short (FullOpts)
          -4 (-6.25 % of base) : 157181.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+AbsoluteOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 155180.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 156561.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 157197.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
         -24 (-5.88 % of base) : 295231.dasm - System.Threading.Tasks.Tests.ParallelForTest:InvokeZetaWorkload(int):this (FullOpts)
         -36 (-5.77 % of base) : 177470.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -12 (-5.66 % of base) : 157926.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
          -4 (-5.56 % of base) : 135543.dasm - System.Linq.SingleLinkedNode`1[int]:Fill(System.Span`1[int]):this (FullOpts)
          -4 (-5.56 % of base) : 133254.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -4 (-5.56 % of base) : 16666.dasm - System.Net.Http.HPack.Huffman:Encode(int):System.ValueTuple`2[uint,int] (FullOpts)
          -8 (-5.56 % of base) : 183917.dasm - System.Tests.ConvertTestBase`1+<>c__DisplayClass4_0`1[ushort,System.__Canon]:<VerifyFromStringWithBaseThrows>b__0():System.Object:this (FullOpts)
          -8 (-5.56 % of base) : 263716.dasm - System.Text.RegularExpressions.Match:MatchIndex(int):int:this (FullOpts)
          -8 (-5.56 % of base) : 263717.dasm - System.Text.RegularExpressions.Match:MatchLength(int):int:this (FullOpts)
         -36 (-5.45 % of base) : 143012.dasm - System.SpanTests.ReadOnlySpanTests:TestMultipleMatchCount_String() (FullOpts)


realworld.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15058824 (overridden on cmd)
Total bytes of diff: 15069352 (overridden on cmd)
Total bytes of delta: 10528 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         204 : 1186.dasm (5.59 % of base)
         180 : 13005.dasm (3.15 % of base)
         116 : 1612.dasm (8.63 % of base)
          80 : 29085.dasm (1.22 % of base)
          80 : 12909.dasm (4.05 % of base)
          72 : 15856.dasm (6.23 % of base)
          72 : 31233.dasm (7.96 % of base)
          68 : 17800.dasm (1.20 % of base)
          64 : 28409.dasm (3.22 % of base)
          60 : 12117.dasm (1.59 % of base)
          60 : 1816.dasm (6.02 % of base)
          60 : 18837.dasm (2.13 % of base)
          60 : 13028.dasm (1.86 % of base)
          60 : 13938.dasm (1.69 % of base)
          56 : 12509.dasm (1.17 % of base)
          56 : 2989.dasm (0.53 % of base)
          56 : 17638.dasm (1.98 % of base)
          52 : 1178.dasm (1.93 % of base)
          52 : 13892.dasm (3.23 % of base)
          52 : 23857.dasm (6.63 % of base)

Top file improvements (bytes):
        -136 : 12746.dasm (-3.65 % of base)
         -88 : 18989.dasm (-1.12 % of base)
         -68 : 13615.dasm (-1.22 % of base)
         -68 : 5696.dasm (-7.39 % of base)
         -64 : 17645.dasm (-1.87 % of base)
         -60 : 3375.dasm (-7.94 % of base)
         -60 : 6591.dasm (-8.47 % of base)
         -60 : 2268.dasm (-4.57 % of base)
         -56 : 17196.dasm (-1.34 % of base)
         -52 : 1620.dasm (-6.74 % of base)
         -48 : 26323.dasm (-1.17 % of base)
         -44 : 13841.dasm (-1.42 % of base)
         -44 : 1666.dasm (-5.76 % of base)
         -40 : 4602.dasm (-12.35 % of base)
         -36 : 11645.dasm (-0.67 % of base)
         -36 : 27077.dasm (-1.53 % of base)
         -36 : 611.dasm (-3.42 % of base)
         -32 : 865.dasm (-2.76 % of base)
         -32 : 318.dasm (-1.91 % of base)
         -32 : 5698.dasm (-8.00 % of base)

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

Top method regressions (bytes):
         204 (5.59 % of base) : 1186.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         180 (3.15 % of base) : 13005.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         116 (8.63 % of base) : 1612.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
          80 (4.05 % of base) : 12909.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
          80 (1.22 % of base) : 29085.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          72 (6.23 % of base) : 15856.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          72 (7.96 % of base) : 31233.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          68 (1.20 % of base) : 17800.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          64 (3.22 % of base) : 28409.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (2.13 % of base) : 18837.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (1.69 % of base) : 13938.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
          60 (1.86 % of base) : 13028.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
          60 (1.59 % of base) : 12117.dasm - SixLabors.ImageSharp.Advanced.ParallelRowIterator+RowIntervalOperationWrapper`2[SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor`1+AffineOperation`1[SixLabors.ImageSharp.PixelFormats.Rgba32,SixLabors.ImageSharp.Processing.Processors.Transforms.BicubicResampler],System.Numerics.Vector4]:Invoke(int):this (FullOpts)
          60 (6.02 % of base) : 1816.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          56 (0.53 % of base) : 2989.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
          56 (1.98 % of base) : 17638.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
          56 (1.17 % of base) : 12509.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
          52 (1.93 % of base) : 1178.dasm - DemoBenchmarks.ConvexCollisionTesterBenchmarks:Setup():this (FullOpts)
          52 (6.63 % of base) : 23857.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          52 (3.23 % of base) : 13892.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)

Top method improvements (bytes):
        -136 (-3.65 % of base) : 12746.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-1.12 % of base) : 18989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -68 (-1.22 % of base) : 13615.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
         -68 (-7.39 % of base) : 5696.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -64 (-1.87 % of base) : 17645.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
         -60 (-7.94 % of base) : 3375.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-8.47 % of base) : 6591.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -60 (-4.57 % of base) : 2268.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -56 (-1.34 % of base) : 17196.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-6.74 % of base) : 1620.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -48 (-1.17 % of base) : 26323.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -44 (-5.76 % of base) : 1666.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -44 (-1.42 % of base) : 13841.dasm - System.Threading.Tasks.Parallel:Invoke(System.Threading.Tasks.ParallelOptions,System.Action[]) (FullOpts)
         -40 (-12.35 % of base) : 4602.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -36 (-1.53 % of base) : 27077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
         -36 (-0.67 % of base) : 11645.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
         -36 (-3.42 % of base) : 611.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-8.00 % of base) : 5698.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -32 (-1.91 % of base) : 318.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -32 (-2.76 % of base) : 865.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)

Top method regressions (percentages):
          20 (38.46 % of base) : 1046.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (31.25 % of base) : 12980.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
          20 (29.41 % of base) : 14252.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 26648.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (23.81 % of base) : 12803.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
          24 (23.08 % of base) : 14354.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          20 (21.74 % of base) : 14413.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 11207.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
          20 (20.83 % of base) : 16455.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          20 (20.83 % of base) : 555.dasm - System.Diagnostics.FileVersionInfo:ParseUInt16UntilNonDigit(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          32 (19.05 % of base) : 14080.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          20 (17.86 % of base) : 1214.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          20 (17.86 % of base) : 1132.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          20 (16.67 % of base) : 13358.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
          16 (15.38 % of base) : 13654.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
          28 (14.58 % of base) : 5935.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
          20 (13.89 % of base) : 17158.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
          24 (12.50 % of base) : 14979.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
          12 (12.50 % of base) : 16457.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          16 (12.12 % of base) : 2795.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericHashByteArray(ubyte[]):int (FullOpts)

Top method improvements (percentages):
         -40 (-12.35 % of base) : 4602.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -20 (-9.80 % of base) : 13830.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
         -20 (-9.43 % of base) : 6589.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -60 (-8.47 % of base) : 6591.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -32 (-8.00 % of base) : 5698.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -60 (-7.94 % of base) : 3375.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -68 (-7.39 % of base) : 5696.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -16 (-7.27 % of base) : 3377.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -52 (-6.74 % of base) : 1620.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -12 (-6.25 % of base) : 14095.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (FullOpts)
         -16 (-6.15 % of base) : 30974.dasm - System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction:Create(int,ubyte):System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction (FullOpts)
         -44 (-5.76 % of base) : 1666.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -16 (-5.33 % of base) : 1086.dasm - BepuPhysics.CollisionDetection.SweepTaskRegistry:Register(BepuPhysics.CollisionDetection.SweepTask):int:this (FullOpts)
         -20 (-5.26 % of base) : 13320.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
         -16 (-4.94 % of base) : 14581.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -60 (-4.57 % of base) : 2268.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -16 (-4.21 % of base) : 10599.dasm - System.Collections.Generic.ArraySortHelper`2[System.ValueTuple`2[int,int],int]:SwapIfGreaterWithValues(System.Span`1[System.ValueTuple`2[int,int]],System.Span`1[int],System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,int]],int,int) (FullOpts)
         -20 (-3.88 % of base) : 1859.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
        -136 (-3.65 % of base) : 12746.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -24 (-3.49 % of base) : 12673.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)



windows arm64

Diffs are based on 2,339,802 contexts (938,449 MinOpts, 1,401,353 FullOpts).

MISSED contexts: base: 1,309 (0.06%), diff: 1,315 (0.06%)

Overall (+659,716 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,957,488 +13,160
benchmarks.run_pgo.windows.arm64.checked.mch 45,442,912 +82,132
benchmarks.run_tiered.windows.arm64.checked.mch 15,586,420 +1,528
coreclr_tests.run.windows.arm64.checked.mch 495,080,320 +159,760
libraries.crossgen2.windows.arm64.checked.mch 59,059,452 +43,292
libraries.pmi.windows.arm64.checked.mch 79,827,256 +49,804
libraries_tests.run.windows.arm64.Release.mch 329,452,088 +233,324
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,557,220 +59,636
realworld.run.windows.arm64.checked.mch 15,902,524 +11,028
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 +6,052

MinOpts (-21,684 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -4,920
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -3,600
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -2,184
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -10,388
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 13,153,748 -592

FullOpts (+681,400 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,956,952 +13,160
benchmarks.run_pgo.windows.arm64.checked.mch 29,431,516 +87,052
benchmarks.run_tiered.windows.arm64.checked.mch 4,409,232 +5,128
coreclr_tests.run.windows.arm64.checked.mch 156,391,216 +161,944
libraries.crossgen2.windows.arm64.checked.mch 59,057,816 +43,292
libraries.pmi.windows.arm64.checked.mch 79,707,272 +49,804
libraries_tests.run.windows.arm64.Release.mch 126,018,492 +243,712
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,403,472 +60,228
realworld.run.windows.arm64.checked.mch 15,338,544 +11,028
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 +6,052

Example diffs

benchmarks.run.windows.arm64.checked.mch

-12 (-6.00%) : 6337.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:SwapIfGreater(System.Span1[System.Canon],System.Comparison`1[System.Canon],int,int) (FullOpts)

@@ -11,17 +11,16 @@ ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]> ; V02 arg1 [V02,T03] ( 4, 4 ) ref -> x22 class-hnd single-def <System.Comparison`1[System.__Canon]>
-; V03 arg2 [V03,T01] ( 5, 5 ) int -> x20 single-def -; V04 arg3 [V04,T02] ( 5, 5 ) int -> x21 single-def -; V05 loc0 [V05,T08] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
+; V03 arg2 [V03,T00] ( 7, 6 ) int -> x19 single-def +; V04 arg3 [V04,T01] ( 7, 6 ) int -> x20 single-def +; V05 loc0 [V05,T07] ( 2, 1 ) ref -> x0 class-hnd single-def <System.__Canon>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp3 [V09,T00] ( 7, 5 ) byref -> x19 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp3 [V09,T02] ( 7, 5 ) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T04] ( 3, 3 ) int -> x23 single-def "field V01._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V12 cse0 [V12,T06] ( 4, 3 ) long -> x20 "CSE - aggressive" -; V13 cse1 [V13,T07] ( 4, 3 ) long -> x21 "CSE - aggressive"
+; V12 cse0 [V12,T06] ( 3, 1.50) ref -> x1 "CSE - moderate"
; ; Lcl frame size = 8 @@ -31,41 +30,39 @@ G_M47099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x28] str x23, [sp, #0x38] mov fp, sp
- mov x19, x1 - ; byrRegs +[x19]
+ mov x21, x1 + ; byrRegs +[x21]
mov w23, w2 mov x22, x3 ; gcrRegs +[x22]
- mov w20, w4 - mov w21, w5
+ mov w19, w4 + mov w20, w5
;; size=40 bbWeight=1 PerfScore 7.00
-G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz - cmp w20, w21
+G_M47099_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w20
bne G_M47099_IG04 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref - movz x0, #8 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
+G_M47099_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
+ mov x0, x1 + ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ;; size=44 bbWeight=0.50 PerfScore 4.25 -G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19}, byref, isz
+ ; gcrRegs -[x0] + ;; size=36 bbWeight=0.50 PerfScore 3.75 +G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz + cmp w19, w23 + bhs G_M47099_IG07 + ldr x1, [x21, w19, UXTW #3] + ; gcrRegs +[x1]
cmp w20, w23 bhs G_M47099_IG07
- ubfiz x20, x20, #3, #32 - ldr x1, [x19, x20] - ; gcrRegs +[x1] - cmp w21, w23 - bhs G_M47099_IG07 - ubfiz x21, x21, #3, #32 - ldr x2, [x19, x21]
+ ldr x2, [x21, w20, UXTW #3]
; gcrRegs +[x2] ldr x0, [x22, #0x08] ; gcrRegs +[x0] @@ -74,25 +71,26 @@ G_M47099_IG04: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=80000 {x19 ; gcrRegs -[x0-x2 x22] cmp w0, #0 ble G_M47099_IG06
- ;; size=52 bbWeight=1 PerfScore 19.50 -G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x0, [x19, x20]
+ ;; size=44 bbWeight=1 PerfScore 17.50 +G_M47099_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ldr x0, [x21, w19, UXTW #3]
; gcrRegs +[x0]
- add x14, x19, x20
+ ubfiz x14, x19, #3, #32 + add x14, x21, x14
; byrRegs +[x14]
- ldr x15, [x19, x21]
+ ldr x15, [x21, w20, UXTW #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- add x14, x19, x21
+ add x14, x21, x20, LSL #3
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x19] - ;; size=28 bbWeight=0.50 PerfScore 4.75
+ ; byrRegs -[x14 x21] + ;; size=32 bbWeight=0.50 PerfScore 5.50
G_M47099_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -105,7 +103,7 @@ G_M47099_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 20, PerfScore 43.00, instruction count 50, allocated bytes for code 200 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
+; Total bytes of code 188, prolog size 20, PerfScore 41.25, instruction count 47, allocated bytes for code 188 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
; ============================================================ Unwind Info: @@ -116,7 +114,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-5.71%) : 2684.dasm - System.Linq.Enumerable+SelectArrayIterator2[ubyte,ushort]:Fill(System.ReadOnlySpan1[ubyte],System.Span1[ushort],System.Func2[ubyte,ushort]) (FullOpts)

@@ -10,23 +10,22 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]> ; V02 arg2 [V02,T01] ( 4, 10 ) ref -> x19 class-hnd single-def <System.Func`2[ubyte,ushort]>
-; V03 loc0 [V03,T00] ( 6, 21 ) int -> x24
+;* V03 loc0 [V03,T06] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "non-inline candidate call"
-; V06 tmp2 [V06,T04] ( 2, 5 ) byref -> x21 single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V07 tmp3 [V07,T06] ( 2, 5 ) int -> x23 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V08 tmp4 [V08,T05] ( 2, 5 ) byref -> x22 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T03] ( 3, 6 ) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V10 cse0 [V10,T02] ( 3, 12 ) long -> x1 "CSE - aggressive"
+; V06 tmp2 [V06,T03] ( 2, 5 ) byref -> x21 single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V07 tmp3 [V07,T05] ( 2, 5 ) int -> x23 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V08 tmp4 [V08,T04] ( 2, 5 ) byref -> x22 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T02] ( 4, 10 ) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp6 [V10,T00] ( 8, 29 ) long -> x24 "Widened primary induction variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M43756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20] + stp x23, x24, [sp, #0x30]
mov fp, sp mov x21, x0 ; byrRegs +[x21] @@ -36,57 +35,55 @@ G_M43756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w20, w3 mov x19, x4 ; gcrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 8.00
+ ;; size=40 bbWeight=1 PerfScore 7.00
G_M43756_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- mov w24, wzr
cmp w20, #0 ble G_M43756_IG04
+ mov x24, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M43756_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- mov w1, w24 - lsl x0, x1, #1 - add x25, x22, x0 - ; byrRegs +[x25]
+ cmp w24, w20 + bhs G_M43756_IG05
cmp w24, w23 bhs G_M43756_IG05
- ldrb w1, [x21, x1]
+ ldrb w1, [x21, x24]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr x2, [x19, #0x18] blr x2 ; gcrRegs -[x0]
- strh w0, [x25] - add w24, w24, #1
+ strh w0, [x22, x24, LSL #2] + add w0, w24, #1 + mov w24, w0
cmp w24, w20 blt G_M43756_IG03 ;; size=52 bbWeight=4 PerfScore 66.00 G_M43756_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ; byrRegs -[x21-x22 x25] - ldr x25, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x50
+ ; byrRegs -[x21-x22] + ldp x23, x24, [sp, #0x30] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M43756_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 24, PerfScore 83.00, instruction count 35, allocated bytes for code 140 (MethodHash=ec295513) for method System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (FullOpts)
+; Total bytes of code 132, prolog size 20, PerfScore 80.00, instruction count 33, allocated bytes for code 132 (MethodHash=ec295513) for method System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -94,13 +91,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end - E4 end
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end

-4 (-5.56%) : 15600.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (FullOpts)

@@ -10,12 +10,13 @@ ; ; V00 this [V00,T04] ( 4, 4 ) ref -> x0 this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
-; V02 loc0 [V02,T01] ( 5, 17 ) int -> x3 -; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x4 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref +; V03 loc1 [V03,T00] ( 5, 17 ) ref -> x3 class-hnd <System.Linq.SingleLinkedNode`1[int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V07 tmp3 [V07,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 5, 17 ) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -26,27 +27,25 @@ G_M40341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M40341_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x1]
- sxtw w3, w2 - mov x4, x0 - ; gcrRegs +[x4]
+ mov x3, x0 + ; gcrRegs +[x3]
cbz x0, G_M40341_IG04
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M40341_IG03: ; bbWeight=4, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
+ mov w0, w2
; gcrRegs -[x0]
- sub w3, w3, #1 - cmp w3, w2
+ ;; size=12 bbWeight=1 PerfScore 2.00 +G_M40341_IG03: ; bbWeight=4, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref, isz + sub w0, w0, #1 + mov w0, w0 + cmp w0, w2
bhs G_M40341_IG05
- ubfiz x0, x3, #2, #32 - add x0, x1, x0 - ; byrRegs +[x0] - ldr w5, [x4, #0x10] - str w5, [x0] - ldr x4, [x4, #0x08] - cbnz x4, G_M40341_IG03 - ;; size=36 bbWeight=4 PerfScore 46.00
+ ldr w4, [x3, #0x10] + str w4, [x1, x0, LSL #2] + ldr x3, [x3, #0x08] + cbnz x3, G_M40341_IG03 + ;; size=32 bbWeight=4 PerfScore 42.00
G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x4] - ; byrRegs -[x0-x1]
+ ; gcrRegs -[x3] + ; byrRegs -[x1]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 @@ -56,7 +55,7 @@ G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 51.50, instruction count 18, allocated bytes for code 72 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 47.50, instruction count 17, allocated bytes for code 68 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
; ============================================================ Unwind Info: @@ -67,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 1839.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 21045.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 22535.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.windows.arm64.checked.mch

-40 (-10.10%) : 30389.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-8.62%) : 29464.dasm - System.Collections.Generic.ArraySortHelper1[int]:Swap(System.Span1[int],int,int) (Instrumented Tier0)

@@ -39,8 +39,7 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V01 arg1] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V03 loc0] ldr w0, [fp, #0x1C] // [V01 arg1] @@ -51,20 +50,17 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V01 arg1] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V02 arg2] - ldr w2, [fp, #0x28] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M40265_IG04 - ldr x1, [fp, #0x20] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V02 arg2]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M40265_IG04 + ldr x2, [fp, #0x20] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V02 arg2] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V00 arg0+0x08] @@ -74,10 +70,9 @@ G_M40265_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V03 loc0]
- str w2, [x0, x1] - ;; size=192 bbWeight=1 PerfScore 66.00
+ str w2, [x0, x1, LSL #2] + ;; size=172 bbWeight=1 PerfScore 61.50
G_M40265_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr @@ -88,7 +83,7 @@ G_M40265_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 73.50, instruction count 58, allocated bytes for code 232 (MethodHash=cb4762b6) for method System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
+; Total bytes of code 212, prolog size 8, PerfScore 69.00, instruction count 53, allocated bytes for code 212 (MethodHash=cb4762b6) for method System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -99,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-7.69%) : 7497.dasm - System.Collections.Generic.GenericArraySortHelper2[System.__Canon,System.__Canon]:Swap(System.Span1[System.Canon],System.Span`1[System.Canon],int,int) (Tier0)

@@ -47,8 +47,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x18] // [V05 loc0] @@ -61,8 +60,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -73,8 +71,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -87,8 +84,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x18] // [V05 loc0] ; gcrRegs +[x15] @@ -103,8 +99,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x10] // [V06 loc1] @@ -117,8 +112,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -129,8 +123,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -143,15 +136,14 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x10] // [V06 loc1] ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x0 x14]
- ;; size=356 bbWeight=1 PerfScore 122.50
+ ;; size=324 bbWeight=1 PerfScore 116.50
G_M6091_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -161,7 +153,7 @@ G_M6091_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 16, PerfScore 135.00, instruction count 104, allocated bytes for code 416 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
+; Total bytes of code 384, prolog size 16, PerfScore 129.00, instruction count 96, allocated bytes for code 384 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -172,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+30.00%) : 33944.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> x0 class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> x1
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> x2
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# 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 exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -34,20 +35,24 @@ G_M16110_IG03: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 2.00 G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0]
- mov w2, wzr
+ mov x2, xzr
b G_M16110_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr w3, [x0, #0x08] + cmp w2, w3 + bhs G_M16110_IG08
add x3, x0, #16 ; byrRegs +[x3]
- ldr x3, [x3, w2, UXTW #3]
+ ldr x3, [x3, x2, LSL #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr w3, [x3, #0x3C] ; gcrRegs -[x3] add w1, w3, w1 add w2, w2, #1
- ;; size=20 bbWeight=0 PerfScore 0.00
+ mov w2, w2 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ldr w3, [x0, #0x08] cmp w3, w2 @@ -59,8 +64,13 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 80, prolog size 8, PerfScore 5.50, instruction count 20, allocated bytes for code 80 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 104, prolog size 8, PerfScore 5.50, instruction count 26, allocated bytes for code 104 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info: @@ -71,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+33.33%) : 62625.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -11,14 +11,14 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T02] ( 4, 5.88) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 12.57) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.98) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 6.77) long -> xip0 "CSE - aggressive" -; V06 cse1 [V06,T05] ( 3, 4.89) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 13.56) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T01] ( 4, 5.89) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0 - ble G_M50542_IG05 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M50542_IG03: ; bbWeight=2.89, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08] + cmp w15, #0 + ble G_M50542_IG06 + ;; size=16 bbWeight=1 PerfScore 7.50 +G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32 - add xip0, xip0, #16 - ldr x0, [x14, xip0] - ; gcrRegs +[x0] - cbz x0, G_M50542_IG06 - ;; size=16 bbWeight=2.89 PerfScore 15.88
+ mov x12, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50
G_M50542_IG04: ; bbWeight=2.89, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] - add w15, w15, #1 - cmp w12, w15 - bgt G_M50542_IG03 - ;; size=12 bbWeight=2.89 PerfScore 5.79 -G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lsl xip0, x12, #3 + add xip0, xip0, #16 + ldr xip0, [x14, xip0] + ; gcrRegs +[xip0] + cbz xip0, G_M50542_IG07 + ;; size=16 bbWeight=2.89 PerfScore 15.88 +G_M50542_IG05: ; bbWeight=2.89, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + add w12, w12, #1 + mov w12, w12 + cmp w15, w12 + bgt G_M50542_IG04 + ;; size=16 bbWeight=2.89 PerfScore 7.24 +G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15 + bhs G_M50542_IG09 + ubfiz x15, x12, #3, #32 + add x15, x15, #16 + add x14, x14, x15
; gcrRegs -[x14] ; byrRegs +[x14] mov x15, x1 @@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.99 -G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.97 +G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.99 PerfScore 1.99
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 35.15, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 39.58, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+33.33%) : 68368.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -8,17 +8,17 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20228 ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> -; V01 arg1 [V01,T05] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 3, 2.99) ref -> x1 class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T02] ( 4, 6.22) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 13.93) int -> x15
+; V03 loc1 [V03,T05] ( 3, 2.98) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 3, 7.45) long -> xip0 "CSE - aggressive" -; V06 cse1 [V06,T03] ( 3, 5.23) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 14.91) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T01] ( 4, 6.23) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -26,33 +26,40 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0 - ble G_M50542_IG05 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M50542_IG03: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
+ ldr w15, [x14, #0x08] + cmp w15, #0 + ble G_M50542_IG06 + ;; size=16 bbWeight=1 PerfScore 7.50 +G_M50542_IG03: ; bbWeight=0.99, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32 - add xip0, xip0, #16 - ldr x0, [x14, xip0] - ; gcrRegs +[x0] - cbz x0, G_M50542_IG06 - ;; size=16 bbWeight=3.23 PerfScore 17.75
+ mov x12, xzr + ;; size=4 bbWeight=0.99 PerfScore 0.50
G_M50542_IG04: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] - add w15, w15, #1 - cmp w12, w15 - bgt G_M50542_IG03 - ;; size=12 bbWeight=3.23 PerfScore 6.47 -G_M50542_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lsl xip0, x12, #3 + add xip0, xip0, #16 + ldr xip0, [x14, xip0] + ; gcrRegs +[xip0] + cbz xip0, G_M50542_IG07 + ;; size=16 bbWeight=3.23 PerfScore 17.75 +G_M50542_IG05: ; bbWeight=3.23, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + add w12, w12, #1 + mov w12, w12 + cmp w15, w12 + bgt G_M50542_IG04 + ;; size=16 bbWeight=3.23 PerfScore 8.09 +G_M50542_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x14] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.01 PerfScore 0.01
-G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG07: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- add x14, x14, xip0
+ cmp w12, w15 + bhs G_M50542_IG09 + ubfiz x15, x12, #3, #32 + add x15, x15, #16 + add x14, x14, x15
; gcrRegs -[x14] ; byrRegs +[x14] mov x15, x1 @@ -60,13 +67,18 @@ G_M50542_IG06: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=12 bbWeight=0.99 PerfScore 1.99 -G_M50542_IG07: ; bbWeight=0.99, epilog, nogc, extend
+ ;; size=28 bbWeight=0.99 PerfScore 4.96 +G_M50542_IG08: ; bbWeight=0.99, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.99 PerfScore 1.99
+G_M50542_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 37.70, instruction count 21, allocated bytes for code 84 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 42.29, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.windows.arm64.checked.mch

-40 (-10.10%) : 22261.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:Swap(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -43,8 +43,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x14] // [V04 loc0] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -55,20 +54,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x38] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x30] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x30] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V00 arg0+0x08] @@ -78,9 +74,8 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x14] // [V04 loc0]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x1C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -90,8 +85,7 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x10] // [V05 loc1] ldr w0, [fp, #0x1C] // [V02 arg2] @@ -102,20 +96,17 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x1C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x18] // [V03 arg3] - ldr w2, [fp, #0x28] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M41131_IG04 - ldr x1, [fp, #0x20] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x18] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x28] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M41131_IG04 + ldr x2, [fp, #0x20] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x18] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x18] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x28] // [V01 arg1+0x08] @@ -125,10 +116,9 @@ G_M41131_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x18] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x10] // [V05 loc1]
- str w2, [x0, x1] - ;; size=348 bbWeight=1 PerfScore 121.50
+ str w2, [x0, x1, LSL #2] + ;; size=308 bbWeight=1 PerfScore 112.50
G_M41131_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr @@ -139,7 +129,7 @@ G_M41131_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 8, PerfScore 131.00, instruction count 99, allocated bytes for code 396 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 356, prolog size 8, PerfScore 122.00, instruction count 89, allocated bytes for code 356 (MethodHash=7b7a5f54) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -150,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 99 (0x00063) Actual length = 396 (0x00018c)
+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-7.69%) : 8757.dasm - System.Collections.Generic.GenericArraySortHelper2[System.__Canon,System.__Canon]:Swap(System.Span1[System.Canon],System.Span`1[System.Canon],int,int) (Tier0)

@@ -47,8 +47,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x18] // [V05 loc0] @@ -61,8 +60,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -73,8 +71,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -87,8 +84,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x18] // [V05 loc0] ; gcrRegs +[x15] @@ -103,8 +99,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
; gcrRegs +[x0] ; byrRegs -[x0] str x0, [fp, #0x10] // [V06 loc1] @@ -117,8 +112,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x24] // [V03 arg2] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr w0, [fp, #0x20] // [V04 arg3] ; byrRegs -[x0] @@ -129,8 +123,7 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - ldr x15, [x0, x1]
+ ldr x15, [x0, x1, LSL #3]
; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] @@ -143,15 +136,14 @@ G_M6091_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x20] // [V04 arg3] mov w1, w1
- lsl x1, x1, #3 - add x14, x0, x1
+ add x14, x0, x1, LSL #3
; byrRegs +[x14] ldr x15, [fp, #0x10] // [V06 loc1] ; gcrRegs +[x15] bl CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x0 x14]
- ;; size=356 bbWeight=1 PerfScore 122.50
+ ;; size=324 bbWeight=1 PerfScore 116.50
G_M6091_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr @@ -161,7 +153,7 @@ G_M6091_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 416, prolog size 16, PerfScore 135.00, instruction count 104, allocated bytes for code 416 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
+; Total bytes of code 384, prolog size 16, PerfScore 129.00, instruction count 96, allocated bytes for code 384 (MethodHash=9d07e834) for method System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -172,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 104 (0x00068) Actual length = 416 (0x0001a0)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-7.38%) : 22260.dasm - System.Collections.Generic.GenericArraySortHelper2[int,int]:SwapIfGreaterWithValues(System.Span1[int],System.Span`1[int],int,int) (Tier0)

@@ -85,20 +85,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x48] // [V00 arg0+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x40] // [V00 arg0] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x48] // [V00 arg0+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x40] // [V00 arg0] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x48] // [V00 arg0+0x08] @@ -108,9 +105,8 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x1C] // [V05 loc1]
- str w2, [x0, x1]
+ str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x2C] // [V02 arg2] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -120,8 +116,7 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - ldr w0, [x0, x1]
+ ldr w0, [x0, x1, LSL #2]
; byrRegs -[x0] str w0, [fp, #0x18] // [V06 loc2] ldr w0, [fp, #0x2C] // [V02 arg2] @@ -132,20 +127,17 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 arg2] mov w1, w1
- lsl x1, x1, #2 - add x0, x0, x1 - ldr w1, [fp, #0x28] // [V03 arg3] - ldr w2, [fp, #0x38] // [V01 arg1+0x08] - cmp w1, w2 - bhs G_M19468_IG04 - ldr x1, [fp, #0x30] // [V01 arg1] - ; byrRegs +[x1]
ldr w2, [fp, #0x28] // [V03 arg3]
- mov w2, w2 - lsl x2, x2, #2 - ldr w1, [x1, x2] - ; byrRegs -[x1] - str w1, [x0]
+ ldr w3, [fp, #0x38] // [V01 arg1+0x08] + cmp w2, w3 + bhs G_M19468_IG04 + ldr x2, [fp, #0x30] // [V01 arg1] + ; byrRegs +[x2] + ldr w3, [fp, #0x28] // [V03 arg3] + mov w3, w3 + ldr w2, [x2, x3, LSL #2] + ; byrRegs -[x2] + str w2, [x0, x1, LSL #2]
ldr w0, [fp, #0x28] // [V03 arg3] ; byrRegs -[x0] ldr w1, [fp, #0x38] // [V01 arg1+0x08] @@ -155,10 +147,9 @@ G_M19468_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[x0] ldr w1, [fp, #0x28] // [V03 arg3] mov w1, w1
- lsl x1, x1, #2
ldr w2, [fp, #0x18] // [V06 loc2]
- str w2, [x0, x1] - ;; size=436 bbWeight=1 PerfScore 151.00
+ str w2, [x0, x1, LSL #2] + ;; size=400 bbWeight=1 PerfScore 143.00
G_M19468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x50 @@ -169,7 +160,7 @@ G_M19468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 488, prolog size 12, PerfScore 161.50, instruction count 122, allocated bytes for code 488 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
+; Total bytes of code 452, prolog size 12, PerfScore 153.50, instruction count 113, allocated bytes for code 452 (MethodHash=9184b3f3) for method System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
; ============================================================ Unwind Info: @@ -180,7 +171,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 122 (0x0007a) Actual length = 488 (0x0001e8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+20.83%) : 37507.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)

@@ -9,14 +9,15 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> ; V01 arg1 [V01,T06] ( 3, 3 ) byref -> x2 single-def
-; V02 loc0 [V02,T02] ( 4, 10 ) int -> x3 -; V03 loc1 [V03,T03] ( 4, 10 ) ubyte -> x4 -; V04 loc2 [V04,T00] ( 5, 17 ) int -> x5 -; V05 loc3 [V05,T01] ( 3, 12 ) ubyte -> x7
+; V02 loc0 [V02,T03] ( 4, 10 ) int -> x3 +; V03 loc1 [V03,T04] ( 4, 10 ) ubyte -> x4 +;* V04 loc2 [V04,T08] ( 0, 0 ) int -> zero-ref +; V05 loc3 [V05,T02] ( 3, 12 ) ubyte -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T05] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T04] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP -; V09 cse0 [V09,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
+; V08 tmp2 [V08,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V09 tmp3 [V09,T00] ( 6, 21 ) long -> x5 "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 2, 5 ) int -> x6 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -29,22 +30,25 @@ G_M60849_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b movz w3, #0xD1FFAB1E movk w3, #0xD1FFAB1E LSL #16 mov w4, wzr
- mov w5, wzr
cmp w1, #0 ble G_M60849_IG04
+ mov x5, xzr
movz w6, #0xD1FFAB1E movk w6, #0xD1FFAB1E LSL #16 ;; size=32 bbWeight=1 PerfScore 4.50 G_M60849_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ldrb w7, [x0, w5, UXTW #2]
+ cmp w5, w1 + bhs G_M60849_IG06 + ldrb w7, [x0, x5]
orr w4, w4, w7 uxtb w4, w4 eor w3, w3, w7 mul w3, w3, w6 add w5, w5, #1
+ mov w5, w5
cmp w5, w1 blt G_M60849_IG03
- ;; size=32 bbWeight=4 PerfScore 34.00
+ ;; size=44 bbWeight=4 PerfScore 42.00
G_M60849_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref ; byrRegs -[x0] tst w4, #128 @@ -56,8 +60,14 @@ G_M60849_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M60849_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; byrRegs -[x2] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 44.50, instruction count 24, allocated bytes for code 96 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 52.50, instruction count 29, allocated bytes for code 116 (MethodHash=f528124e) for method Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
; ============================================================ Unwind Info: @@ -68,7 +78,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+21.74%) : 37552.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -10,13 +10,14 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> x1 class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> x14 class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> x15
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> x12
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> x12 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> x12 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> x15 "CSE - aggressive"
; ; Lcl frame size = 0
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -24,30 +25,33 @@ G_M50542_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b ; gcrRegs +[x0-x1] ldr x14, [x0, #0x10] ; gcrRegs +[x14]
- mov w15, wzr - ldr w12, [x14, #0x08] - cmp w12, #0
+ ldr w15, [x14, #0x08] + cmp w15, #0
ble G_M50542_IG04
+ mov x12, xzr
;; size=20 bbWeight=1 PerfScore 8.00 G_M50542_IG03: ; bbWeight=4, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- ubfiz xip0, x15, #3, #32
+ lsl xip0, x12, #3
add xip0, xip0, #16 ldr xip0, [x14, xip0] ; gcrRegs +[xip0] cbz xip0, G_M50542_IG05
- add w15, w15, #1 - cmp w12, w15
+ add w12, w12, #1 + mov w12, w12 + cmp w15, w12
bgt G_M50542_IG03
- ;; size=28 bbWeight=4 PerfScore 30.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x1 x14 xip0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {x1 x14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1 x14]
- ubfiz x15, x15, #3, #32
+ cmp w12, w15 + bhs G_M50542_IG07 + ubfiz x15, x12, #3, #32
add x15, x15, #16 add x14, x14, x15 ; gcrRegs -[x14] @@ -57,13 +61,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x1 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=0.50 PerfScore 1.75
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 43.25, instruction count 23, allocated bytes for code 92 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 112, prolog size 8, PerfScore 46.00, instruction count 28, allocated bytes for code 112 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -74,7 +83,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+26.32%) : 8312.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

@@ -10,13 +10,14 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP +; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -38,18 +39,21 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00 G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8555_IG10 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #32 bne G_M8555_IG08 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] b G_M8555_IG03 @@ -61,8 +65,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 40.50, instruction count 24, allocated bytes for code 96 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.windows.arm64.checked.mch

-4 (-11.11%) : 21342.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)

@@ -21,15 +21,14 @@ G_M2112_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- lsl x0, x0, #1 - ldrh w0, [x1, x0] - ;; size=20 bbWeight=1 PerfScore 5.50
+ ldrh w0, [x1, x0, LSL #2] + ;; size=16 bbWeight=1 PerfScore 4.50
G_M2112_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
+; Total bytes of code 32, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 32 (MethodHash=d667f7bf) for method HandlesInAddrModes:Problem(long):ushort (FullOpts)
; ============================================================ Unwind Info: @@ -40,7 +39,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-11.11%) : 241522.dasm - Testunsafe6.TestApp:test_216(ulong,long[],long):long (FullOpts)

@@ -27,16 +27,14 @@ G_M16071_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #100 cmp x0, #100 cinc w0, w1, ne sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M16071_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -46,7 +44,7 @@ G_M16071_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=ef98c138) for method Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-11.11%) : 241443.dasm - Testunsafe1.TestApp:test_372(ulong,long[],long):long (FullOpts)

@@ -29,16 +29,14 @@ G_M4387_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- lsl x2, x2, #3 - ldr x1, [x1, x2]
+ ldr x1, [x1, x2, LSL #3]
; byrRegs -[x1]
- lsl x1, x1, #3 - ldr x0, [x0, x1]
+ ldr x0, [x0, x1, LSL #3]
mov w1, #99 cmp x0, #100 cinc w0, w1, eq sxtw x0, w0
- ;; size=48 bbWeight=1 PerfScore 15.00
+ ;; size=40 bbWeight=1 PerfScore 13.00
G_M4387_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -48,7 +46,7 @@ G_M4387_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.50, instruction count 16, allocated bytes for code 64 (MethodHash=6e8ceedc) for method Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 205113.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M31628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M31628_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M31628_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M31628_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+40.00%) : 205094.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x2 -; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T04] ( 2, 5 ) int -> x2 single-def +; V02 loc1 [V02,T01] ( 4, 10 ) ubyte -> x3 +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T02] ( 4, 7 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x4 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -23,29 +24,38 @@ G_M44428_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
+ sxtw w2, w1
mov w3, wzr cmp w1, #0 ble G_M44428_IG04
- ;; size=16 bbWeight=1 PerfScore 2.50
+ mov x4, xzr + ;; size=20 bbWeight=1 PerfScore 3.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2] - eor w2, w4, w2 - uxtb w2, w2 - add w3, w3, #1 - cmp w3, w1
+ cmp w4, w2 + bhs G_M44428_IG06 + ldrb w5, [x0, x4] + eor w3, w5, w3 + uxtb w3, w3 + add w4, w4, #1 + mov w4, w4 + cmp w4, w1
blt G_M44428_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ ;; size=36 bbWeight=4 PerfScore 32.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0]
- mov w0, w2
+ mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50 G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 30.50, instruction count 15, allocated bytes for code 60 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 39.00, instruction count 21, allocated bytes for code 84 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 205967.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M31126_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M31126_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M31126_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M31126_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M31126_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M31126_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M31126_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M31126_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=c32d8669) for method Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.windows.arm64.checked.mch

-32 (-13.33%) : 188547.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -9,30 +9,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 3, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 3, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -61,18 +61,11 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref adrp x22, [HIGH RELOC #0xD1FFAB1E] add x22, x22, [LOW RELOC #0xD1FFAB1E]
- mov w23, #13 - b G_M10117_IG10 - ;; size=16 bbWeight=1 PerfScore 2.50 -G_M10117_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG08
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -88,34 +81,29 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=44 bbWeight=2 PerfScore 22.00 +G_M10117_IG07: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=68 bbWeight=2 PerfScore 28.00 -G_M10117_IG08: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG12 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG10 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG07
+ ble G_M10117_IG06
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG10: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG06 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG08: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG07 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG09: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address @@ -126,7 +114,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 24, PerfScore 80.50, instruction count 60, allocated bytes for code 240 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 208, prolog size 24, PerfScore 73.00, instruction count 52, allocated bytes for code 208 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -137,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -145,10 +133,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-16 (-8.33%) : 130306.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-16 (-8.33%) : 159307.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)

@@ -9,26 +9,24 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 8, 21 ) int -> x19
+; V00 arg0 [V00,T04] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String> +; V01 loc0 [V01,T00] ( 9, 23 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V05 cse0 [V05,T01] ( 3, 10 ) long -> x23 "CSE - aggressive" -; V06 cse1 [V06,T04] ( 4, 7 ) int -> x20 "CSE - aggressive" -; V07 cse2 [V07,T02] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" -; V08 cse3 [V08,T03] ( 4, 8 ) int -> x0 "CSE - aggressive" -; V09 cse4 [V09,T06] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 7 ) int -> x20 "CSE - aggressive" +; V06 cse1 [V06,T01] ( 4, 8.50) byref -> x21 hoist "CSE - aggressive" +; V07 cse2 [V07,T02] ( 4, 8 ) int -> x0 "CSE - aggressive" +; V08 cse3 [V08,T05] ( 2, 4.50) long -> x22 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M52290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] cbz x0, G_M52290_IG07 @@ -45,18 +43,17 @@ G_M52290_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ;; size=28 bbWeight=0.50 PerfScore 3.25 G_M52290_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz ; gcrRegs -[x0]
- ubfiz x23, x19, #1, #32 - ldrh w0, [x21, x23]
+ ldrh w0, [x21, w19, UXTW #2]
mov x11, x22 ldr x1, [x11] blr x1 tbnz w0, #4, G_M52290_IG06
- ;; size=24 bbWeight=4 PerfScore 38.00
+ ;; size=20 bbWeight=4 PerfScore 34.00
G_M52290_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz add w0, w19, #1 cmp w20, w0 ble G_M52290_IG09
- ldrh w1, [x21, x23]
+ ldrh w1, [x21, w19, UXTW #2]
movn w2, #0xD1FFAB1E add w1, w1, w2 cmp w1, #0xD1FFAB1E @@ -78,24 +75,22 @@ G_M52290_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movn w0, #0 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M52290_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52290_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 192, prolog size 20, PerfScore 88.25, instruction count 48, allocated bytes for code 192 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
+; Total bytes of code 176, prolog size 16, PerfScore 81.25, instruction count 44, allocated bytes for code 176 (MethodHash=320c33bd) for method Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +101,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +112,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

+32 (+53.33%) : 211564.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -9,11 +9,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -25,17 +26,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -44,8 +48,16 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_windows #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 39.00, instruction count 23, allocated bytes for code 92 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+53.33%) : 218388.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -9,11 +9,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -25,17 +26,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -44,8 +48,16 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_windows #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 39.00, instruction count 23, allocated bytes for code 92 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -56,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+57.14%) : 228491.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -11,13 +11,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -28,17 +29,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -47,8 +51,16 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_windows #0 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 36.50, instruction count 22, allocated bytes for code 88 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.windows.arm64.checked.mch

-36 (-16.07%) : 195137.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-14.29%) : 202486.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -8,30 +8,30 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> x19 class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> d0 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> x1 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> d0 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> x1 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> x20
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> x21 class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [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,T09] ( 2, 2 ) ref -> x21
+; V08 tmp1 [V08,T08] ( 2, 2 ) ref -> x21
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> x23 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> x3 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> x3 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> x22 single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> x22 single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> x23 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20] - stp x23, x24, [sp, #0x30]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -50,18 +50,11 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x22, #0xD1FFAB1E movk x22, #0xD1FFAB1E LSL #16 movk x22, #0xD1FFAB1E LSL #32
- mov w23, #13 - b G_M10117_IG07 - ;; size=56 bbWeight=1 PerfScore 9.00 -G_M10117_IG03: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22] - ubfiz x23, x24, #2, #32
+ mov x23, #13
b G_M10117_IG05
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov x0, x23 - mov w23, w24 - mov x24, x0
+ ;; size=56 bbWeight=1 PerfScore 9.00 +G_M10117_IG03: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref + ; byrRegs +[x22]
sub w20, w20, w3 and w3, w23, #1 add w3, w3, #1 @@ -78,34 +71,29 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 blr x4 ; gcrRegs -[x1] ; gcr arg pop 0
- mov w0, w23
+ ;; size=48 bbWeight=2 PerfScore 23.00 +G_M10117_IG04: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
- mov x23, x24 - mov w24, w0 - ;; size=72 bbWeight=2 PerfScore 29.00 -G_M10117_IG05: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - cmp w24, #13 - bhs G_M10117_IG09 - ldr w3, [x22, x23]
+ cmp w23, #13 + bhs G_M10117_IG07 + ldr w3, [x22, x23, LSL #2]
cmp w3, w20
- ble G_M10117_IG04
+ ble G_M10117_IG03
;; size=20 bbWeight=4 PerfScore 24.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - mov w23, w24 - ;; size=4 bbWeight=2 PerfScore 1.00 -G_M10117_IG07: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz - sub w3, w23, #1 - sxtw w24, w3 - cbnz w23, G_M10117_IG03 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x30] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M10117_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref, isz + sxtw w3, w23 + sub w0, w23, #1 + mov w23, w0 + cbnz w3, G_M10117_IG04 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M10117_IG06: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M10117_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19 x21] ; byrRegs -[x22] bl CORINFO_HELP_RNGCHKFAIL @@ -113,7 +101,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 24, PerfScore 77.00, instruction count 56, allocated bytes for code 224 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 192, prolog size 24, PerfScore 69.50, instruction count 48, allocated bytes for code 192 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -124,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -132,10 +120,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! E4 end
- E4 end

-8 (-8.70%) : 228513.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)

@@ -34,8 +34,7 @@ G_M64187_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- lsl x4, x4, #3 - ldr x3, [x3, x4]
+ ldr x3, [x3, x4, LSL #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldrsw x0, [x0, #0x28] @@ -46,9 +45,8 @@ G_M64187_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre bhs G_M64187_IG04 add x1, x3, #16 ; byrRegs +[x1]
- lsl x0, x0, #2 - str w2, [x1, x0] - ;; size=68 bbWeight=1 PerfScore 26.00
+ str w2, [x1, x0, LSL #2] + ;; size=60 bbWeight=1 PerfScore 24.00
G_M64187_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr @@ -60,7 +58,7 @@ G_M64187_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 8, PerfScore 29.50, instruction count 23, allocated bytes for code 92 (MethodHash=da790544) for method System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 27.50, instruction count 21, allocated bytes for code 84 (MethodHash=da790544) for method System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
; ============================================================ Unwind Info: @@ -71,7 +69,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 288510.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -8,11 +8,12 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x3
+; V01 loc0 [V01,T02] ( 4, 10 ) int -> x2 +;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,17 +25,20 @@ G_M5504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; byrRegs +[x0] movz w2, #0xD1FFAB1E movk w2, #0xD1FFAB1E LSL #16
- mov w3, wzr
cmp w1, #0 ble G_M5504_IG04
+ mov x3, xzr
;; size=20 bbWeight=1 PerfScore 3.00 G_M5504_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M5504_IG06 + ldrb w4, [x0, x3]
eor w2, w4, w2, LSL #8 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M5504_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ;; size=32 bbWeight=4 PerfScore 32.00
G_M5504_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -43,8 +47,13 @@ G_M5504_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M5504_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 31.00, instruction count 15, allocated bytes for code 60 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 39.00, instruction count 20, allocated bytes for code 80 (MethodHash=b0bfea7f) for method System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -55,7 +64,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 122431.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 11 ) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 17 ) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 6 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 10 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 5 ) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -23,27 +24,35 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG04
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16 ;; size=20 bbWeight=1 PerfScore 3.00 G_M1770_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG05 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG03
- ;; size=24 bbWeight=4 PerfScore 30.00
+ ;; size=36 bbWeight=4 PerfScore 38.00
G_M1770_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 36.50, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 44.50, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================ Unwind Info: @@ -54,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+35.71%) : 267076.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -10,13 +10,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 loc0 [V01,T01] ( 4, 10 ) int -> x2 ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x3
+;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V07 tmp2 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T03] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T00] ( 6, 21 ) long -> x3 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -27,17 +28,20 @@ G_M59336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] mov w2, wzr
- mov w3, wzr
cmp w1, #0 ble G_M59336_IG04
+ mov x3, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrb w4, [x0, w3, UXTW #2]
+ cmp w3, w1 + bhs G_M59336_IG06 + ldrb w4, [x0, x3]
add w2, w4, w2 add w3, w3, #1
+ mov w3, w3
cmp w3, w1 blt G_M59336_IG03
- ;; size=20 bbWeight=4 PerfScore 22.00
+ ;; size=32 bbWeight=4 PerfScore 30.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, w2 @@ -46,8 +50,13 @@ G_M59336_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 8, PerfScore 28.50, instruction count 14, allocated bytes for code 56 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 36.50, instruction count 19, allocated bytes for code 76 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.windows.arm64.Release.mch

-12 (-13.04%) : 382889.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)

@@ -9,54 +9,49 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3,125.45) byref -> x20 single-def -; V01 arg1 [V01,T04] ( 3,125.45) byref -> x21 single-def -; V02 arg2 [V02,T02] ( 4,126.45) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,494.81) long -> x22
+; V00 arg0 [V00,T02] ( 3,125.45) byref -> x20 single-def +; V01 arg1 [V01,T03] ( 3,125.45) byref -> x21 single-def +; V02 arg2 [V02,T01] ( 4,126.45) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,618.26) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
-; V06 cse0 [V06,T01] ( 3,370.36) long -> x23 "CSE - aggressive" -; V07 rat0 [V07,T05] ( 2,493.81) float -> d1 "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M10773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M10773_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M10773_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M10773_IG03: ; bbWeight=123.45, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #2 - ldr s1, [x20, x23]
+ ldr s1, [x20, x22, LSL #2]
fmov s0, #10.0000 bl <unknown method> ; gcr arg pop 0
- str s0, [x21, x23]
+ str s0, [x21, x22, LSL #2]
add x22, x22, #1 cmp x22, x19 blo G_M10773_IG03
- ;; size=32 bbWeight=123.45 PerfScore 1049.35
+ ;; size=28 bbWeight=123.45 PerfScore 925.90
G_M10773_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1062.85, instruction count 23, allocated bytes for code 92 (MethodHash=0691d5ea) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 936.40, instruction count 20, allocated bytes for code 80 (MethodHash=0691d5ea) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -67,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -75,9 +70,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-12 (-13.04%) : 383953.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)

@@ -9,58 +9,54 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3,132.22) byref -> x20 single-def -; V01 arg1 [V01,T04] ( 3,132.22) byref -> x21 single-def -; V02 arg2 [V02,T02] ( 4,133.22) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,521.89) long -> x22
+; V00 arg0 [V00,T02] ( 3,132.22) byref -> x20 single-def +; V01 arg1 [V01,T03] ( 3,132.22) byref -> x21 single-def +; V02 arg2 [V02,T01] ( 4,133.22) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,652.11) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref HFA(double) "Inlining Arg" <System.Runtime.InteropServices.NFloat> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref HFA(double) ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.NFloat> ;* V07 tmp3 [V07 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
-; V09 tmp5 [V09,T05] ( 2,260.44) double -> d1 "field V05._value (fldOffset=0x0)" P-INDEP -; V10 tmp6 [V10,T06] ( 2,260.44) double -> d0 "field V06._value (fldOffset=0x0)" P-INDEP -; V11 cse0 [V11,T01] ( 3,390.67) long -> x23 "CSE - aggressive"
+; V09 tmp5 [V09,T04] ( 2,260.44) double -> d1 "field V05._value (fldOffset=0x0)" P-INDEP +; V10 tmp6 [V10,T05] ( 2,260.44) double -> d0 "field V06._value (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M8778_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M8778_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M8778_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M8778_IG03: ; bbWeight=130.22, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #3 - ldr d1, [x20, x23]
+ ldr d1, [x20, x22, LSL #3]
fmov d0, #2.0000 bl <unknown method> ; gcr arg pop 0
- str d0, [x21, x23]
+ str d0, [x21, x22, LSL #3]
add x22, x22, #1 cmp x22, x19 blo G_M8778_IG03
- ;; size=32 bbWeight=130.22 PerfScore 1106.88
+ ;; size=28 bbWeight=130.22 PerfScore 976.66
G_M8778_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1120.38, instruction count 23, allocated bytes for code 92 (MethodHash=eb60ddb5) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 987.16, instruction count 20, allocated bytes for code 80 (MethodHash=eb60ddb5) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -71,7 +67,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -79,9 +75,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-12 (-13.04%) : 384069.dasm - System.Numerics.Tensors.TensorPrimitives:g_SoftwareFallback|2240[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)

@@ -9,54 +9,49 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3,128.74) byref -> x20 single-def -; V01 arg1 [V01,T04] ( 3,128.74) byref -> x21 single-def -; V02 arg2 [V02,T02] ( 4,129.74) long -> x19 single-def -; V03 loc0 [V03,T00] ( 5,507.95) long -> x22
+; V00 arg0 [V00,T02] ( 3,128.74) byref -> x20 single-def +; V01 arg1 [V01,T03] ( 3,128.74) byref -> x21 single-def +; V02 arg2 [V02,T01] ( 4,129.74) long -> x19 single-def +; V03 loc0 [V03,T00] ( 6,634.69) long -> x22
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
-; V06 cse0 [V06,T01] ( 3,380.21) long -> x23 "CSE - aggressive" -; V07 rat0 [V07,T05] ( 2,506.95) double -> d1 "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M25219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x20, x0 ; byrRegs +[x20] mov x21, x1 ; byrRegs +[x21] mov x19, x2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M25219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz mov x22, xzr cbz x19, G_M25219_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25219_IG03: ; bbWeight=126.74, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
- lsl x23, x22, #3 - ldr d1, [x20, x23]
+ ldr d1, [x20, x22, LSL #3]
fmov d0, #2.0000 bl <unknown method> ; gcr arg pop 0
- str d0, [x21, x23]
+ str d0, [x21, x22, LSL #3]
add x22, x22, #1 cmp x22, x19 blo G_M25219_IG03
- ;; size=32 bbWeight=126.74 PerfScore 1077.27
+ ;; size=28 bbWeight=126.74 PerfScore 950.53
G_M25219_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x20-x21]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 32, PerfScore 1090.77, instruction count 23, allocated bytes for code 92 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
+; Total bytes of code 80, prolog size 28, PerfScore 961.03, instruction count 20, allocated bytes for code 80 (MethodHash=00cf9d7c) for method System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
; ============================================================ Unwind Info: @@ -67,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -75,9 +70,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

+20 (+33.33%) : 595447.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 33.70) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 62.40) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 16.35) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 17.35) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 16.29) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 32.70) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 77.69) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 16.29) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.94 PerfScore 0.94
+ ;; size=12 bbWeight=0.94 PerfScore 1.41
G_M1770_IG04: ; bbWeight=15.35, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=15.35 PerfScore 115.13
+ ;; size=36 bbWeight=15.35 PerfScore 145.83
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 121.57, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 152.24, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 52224.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 26.06) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 47.12) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 12.53) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 13.53) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 12.45) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 25.06) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 58.57) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 12.45) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.92 PerfScore 0.92
+ ;; size=12 bbWeight=0.92 PerfScore 1.38
G_M1770_IG04: ; bbWeight=11.53, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=11.53 PerfScore 86.48
+ ;; size=36 bbWeight=11.53 PerfScore 109.54
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 92.90, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 115.92, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+33.33%) : 86548.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)

@@ -10,11 +10,12 @@ ; ; V00 arg0 [V00,T01] ( 5, 24.33) int -> x0 ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T00] ( 5, 43.66) int -> x3
+;* V02 loc0 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 11.67) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T02] ( 3, 12.67) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V06 cse0 [V06,T04] ( 2, 11.58) int -> x4 hoist "CSE - aggressive"
+; V05 tmp2 [V05,T02] ( 4, 23.33) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V06 tmp3 [V06,T00] ( 6, 54.24) long -> x3 "Widened primary induction variable" +; V07 cse0 [V07,T04] ( 2, 11.58) int -> x4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,29 +25,37 @@ G_M1770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M1770_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz ; byrRegs +[x1]
- mov w3, wzr
cmp w2, #0 ble G_M1770_IG05
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M1770_IG03: ; bbWeight=0.91, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x3, xzr
movz w4, #0xD1FFAB1E movk w4, #0xD1FFAB1E LSL #16
- ;; size=8 bbWeight=0.91 PerfScore 0.91
+ ;; size=12 bbWeight=0.91 PerfScore 1.37
G_M1770_IG04: ; bbWeight=10.67, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldrh w5, [x1, w3, UXTW #2]
+ cmp w3, w2 + bhs G_M1770_IG06 + ldrh w5, [x1, x3, LSL #2]
eor w0, w5, w0 mul w0, w0, w4 add w3, w3, #1
+ mov w3, w3
cmp w3, w2 blt G_M1770_IG04
- ;; size=24 bbWeight=10.67 PerfScore 79.99
+ ;; size=36 bbWeight=10.67 PerfScore 101.33
G_M1770_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M1770_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 8, PerfScore 86.41, instruction count 15, allocated bytes for code 60 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 107.70, instruction count 20, allocated bytes for code 80 (MethodHash=ec72f915) for method Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-36 (-16.07%) : 183308.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)

@@ -8,28 +8,30 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> -; V01 arg1 [V01,T04] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> -; V03 loc0 [V03,T01] ( 9, 22.50) int -> x14 -; V04 loc1 [V04,T17] ( 2, 1 ) ref -> x4 class-hnd exact <<unknown class>>
+; V00 this [V00,T07] ( 5, 4.50) ref -> x0 this class-hnd single-def <System.Xml.XmlSubtreeReader> +; V01 arg1 [V01,T06] ( 3, 6 ) ref -> x1 class-hnd single-def <System.String> +; V02 arg2 [V02,T09] ( 3, 4 ) ref -> x2 class-hnd single-def <System.String> +; V03 loc0 [V03,T11] ( 4, 2 ) int -> x15 +; V04 loc1 [V04,T16] ( 2, 1 ) ref -> x2 class-hnd exact <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> -; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+;* V06 tmp1 [V06,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> +; V07 tmp2 [V07,T15] ( 2, 2 ) ref -> x12 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> x12 "arr expr" -;* V11 tmp6 [V11,T08] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V10 tmp5 [V10,T00] ( 3, 24 ) ref -> xip0 "arr expr" +;* V11 tmp6 [V11,T10] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V12 tmp7 [V12,T18] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> x12 "arr expr" -; V14 tmp9 [V14,T12] ( 3, 3 ) int -> xip0 "index expr" -; V15 tmp10 [V15,T11] ( 3, 3 ) ref -> x3 "arr expr" -; V16 tmp11 [V16,T15] ( 2, 2 ) int -> x14 "index expr" -; V17 cse0 [V17,T02] ( 4, 10.50) ref -> x4 "CSE - aggressive" -; V18 cse1 [V18,T13] ( 5, 2.50) int -> x1 "CSE - aggressive" -; V19 cse2 [V19,T03] ( 5, 6.50) ref -> x3 hoist "CSE - aggressive" -; V20 cse3 [V20,T06] ( 4, 6.50) int -> x15 "CSE - aggressive" -; V21 cse4 [V21,T16] ( 3, 1.50) long -> x2 "CSE - moderate"
+;* V13 tmp8 [V13,T19] ( 0, 0 ) ref -> zero-ref "arr expr" +; V14 tmp9 [V14,T12] ( 3, 3 ) int -> x14 "index expr" +;* V15 tmp10 [V15,T20] ( 0, 0 ) ref -> zero-ref "arr expr" +; V16 tmp11 [V16,T13] ( 3, 3 ) int -> x14 "index expr" +; V17 tmp12 [V17,T01] ( 7, 21.50) long -> x15 "Widened primary induction variable" +; V18 cse0 [V18,T03] ( 3, 10 ) ref -> xip0 "CSE - aggressive" +; V19 cse1 [V19,T14] ( 5, 2.50) int -> x1 "CSE - aggressive" +; V20 cse2 [V20,T04] ( 2, 5 ) ref -> x12 hoist "CSE - aggressive" +; V21 cse3 [V21,T08] ( 4, 6.50) int -> x14 "CSE - aggressive" +; V22 cse4 [V22,T05] ( 4, 9 ) int -> x3 "CSE - aggressive" +; V23 cse5 [V23,T02] ( 6, 10 ) byref -> x4 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -39,95 +41,77 @@ G_M23254_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M23254_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x2]
- mov w14, wzr - ldr w15, [x0, #0x58] - cmp w15, #0
+ ldr w14, [x0, #0x58] + cmp w14, #0
ble G_M23254_IG06
- ldr x3, [x0, #0x20] - ; gcrRegs +[x3]
+ mov x15, xzr + ldr x12, [x0, #0x20] + ; gcrRegs +[x12]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M23254_IG03: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - mov x12, x3 - ; gcrRegs +[x12] - ldr wip0, [x12, #0x08] - cmp w14, wip0
+G_M23254_IG03: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + mov xip0, x12 + ; gcrRegs +[xip0] + ldr w3, [xip0, #0x08] + cmp w15, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ldr x4, [x12, w14, UXTW #3] - ; gcrRegs +[x4] - ldr x12, [x4, #0x10] - ; gcrRegs +[x12] - ; byrRegs -[x12] - cmp x12, x1
+ add x4, xip0, #16 + ; byrRegs +[x4] + ldr xip0, [x4, x15, LSL #3] + ldr x5, [xip0, #0x10] + ; gcrRegs +[x5] + cmp x5, x1
bne G_M23254_IG05 ;; size=36 bbWeight=4 PerfScore 52.00
-G_M23254_IG04: ; bbWeight=2, gcrefRegs=001F {x0 x1 x2 x3 x4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x12] - ldr x12, [x4, #0x08] - ; gcrRegs +[x12] - cmp x12, x2
+G_M23254_IG04: ; bbWeight=2, gcrefRegs=11007 {x0 x1 x2 x12 xip0}, byrefRegs=0010 {x4}, byref, isz + ; gcrRegs -[x5] + ldr xip0, [xip0, #0x08] + cmp xip0, x2
beq G_M23254_IG07 ;; size=12 bbWeight=2 PerfScore 9.00
-G_M23254_IG05: ; bbWeight=4, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x4 x12] - add w14, w14, #1 - cmp w14, w15
+G_M23254_IG05: ; bbWeight=4, gcrefRegs=1007 {x0 x1 x2 x12}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[xip0] + ; byrRegs -[x4] + add w15, w15, #1 + mov w15, w15 + cmp w15, w14
blt G_M23254_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M23254_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0-x3]
+ ; gcrRegs -[x0-x2 x12]
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0019 {x0 x3 x4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x3-x4] - sub w1, w15, #1 - cmp w14, w1
+G_M23254_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, gcvars, byref, isz + ; gcrRegs +[x0] + ; byrRegs +[x4] + sub w1, w14, #1 + cmp w15, w1
bge G_M23254_IG08
- mov x15, x3 - ; gcrRegs +[x15] - mov x12, x3 - ; gcrRegs +[x12] - sxtw wip0, w1 - ldr w2, [x12, #0x08] - cmp wip0, w2
+ ldr x2, [x4, w15, UXTW #3] + ; gcrRegs +[x2] + sxtw w14, w1 + cmp w14, w3
bhs G_M23254_IG10
- add x12, x12, #16 - ; gcrRegs -[x12] - ; byrRegs +[x12] - ubfiz x2, xip0, #3, #32 - ldr x12, [x12, x2]
+ ldr x12, [x4, w14, UXTW #3]
; gcrRegs +[x12]
- ; byrRegs -[x12] - ldr wip0, [x15, #0x08] - cmp w14, wip0 - bhs G_M23254_IG10 - add x15, x15, #16 - ; gcrRegs -[x15] - ; byrRegs +[x15] - add x14, x15, x14, LSL #3
+ add x14, x4, x15, LSL #3
; byrRegs +[x14] mov x15, x12 ; gcrRegs +[x15]
- ; byrRegs -[x15] - bl CORINFO_HELP_ASSIGN_REF
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x12 x15] ; byrRegs -[x14] sxtw w14, w1
- ldr w15, [x3, #0x08] - cmp w14, w15
+ cmp w14, w3
bhs G_M23254_IG10
- add x14, x3, #16
+ add x14, x4, x14, LSL #3
; byrRegs +[x14]
- add x14, x14, x2 - mov x15, x4
+ mov x15, x2
; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[x3-x4 x15] - ; byrRegs -[x14] - ;; size=108 bbWeight=0.50 PerfScore 13.75
+ bl CORINFO_HELP_CHECKED_ASSIGN_REF + ; gcrRegs -[x2 x15] + ; byrRegs -[x4 x14] + ;; size=68 bbWeight=0.50 PerfScore 8.50
G_M23254_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref str w1, [x0, #0x58] ;; size=4 bbWeight=0.50 PerfScore 0.50 @@ -142,7 +126,7 @@ G_M23254_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 8, PerfScore 94.75, instruction count 56, allocated bytes for code 224 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
+; Total bytes of code 188, prolog size 8, PerfScore 91.50, instruction count 47, allocated bytes for code 188 (MethodHash=dfe8a529) for method System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
; ============================================================ Unwind Info: @@ -153,7 +137,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-11.43%) : 135795.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)

@@ -9,27 +9,25 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]>
-; V01 arg1 [V01,T00] ( 4, 4 ) int -> x1 single-def
+; V01 arg1 [V01,T00] ( 5, 4.50) int -> x1 single-def
; V02 arg2 [V02,T03] ( 3, 2.50) byref -> x19 single-def ; V03 loc0 [V03,T04] ( 4, 3 ) ref -> x0 class-hnd single-def <System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V06 tmp2 [V06,T09] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V06 tmp2 [V06,T08] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V07 cse0 [V07,T05] ( 2, 2 ) ref -> x0 "CSE - aggressive"
-; V08 cse1 [V08,T07] ( 3, 2.50) long -> x21 "CSE - aggressive" -; V09 cse2 [V09,T08] ( 2, 2 ) int -> x2 "CSE - aggressive" -; V10 cse3 [V10,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
+; V08 cse1 [V08,T07] ( 2, 2 ) int -> x2 "CSE - aggressive" +; V09 cse2 [V09,T06] ( 3, 2.50) byref -> x20 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M61344_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x19, x2 ; byrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x0] ldr x0, [x0, #0x28] @@ -38,13 +36,12 @@ G_M61344_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, bhs G_M61344_IG08 add x20, x0, #16 ; byrRegs +[x20]
- ubfiz x21, x1, #3, #32 - ldr x0, [x20, x21]
+ ldr x0, [x20, w1, UXTW #3]
cbz x0, G_M61344_IG06
- ;; size=32 bbWeight=1 PerfScore 13.00
+ ;; size=28 bbWeight=1 PerfScore 12.00
G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x19 x20}, byref, isz
- ldr w1, [x0, #0x18] - cmp w1, #0
+ ldr w2, [x0, #0x18] + cmp w2, #0
ble G_M61344_IG05 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.Queue`1[System.Linq.Parallel.Pair`2[int,int]]:Dequeue():System.Linq.Parallel.Pair`2[int,int]:this movk x1, #0xD1FFAB1E LSL #16 @@ -57,31 +54,29 @@ G_M61344_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=180000 {x1 mov w0, #1 ;; size=40 bbWeight=0.50 PerfScore 5.75 G_M61344_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, gcvars, byref ; byrRegs -[x19] +[x20]
- str xzr, [x20, x21]
+ str xzr, [x20, w1, UXTW #3]
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M61344_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M61344_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M61344_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 16, PerfScore 28.50, instruction count 35, allocated bytes for code 140 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 124, prolog size 12, PerfScore 24.50, instruction count 31, allocated bytes for code 124 (MethodHash=31dd105f) for method System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +87,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -103,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-28 (-6.93%) : 194874.dasm - System.Tests.ConvertToStringTests:FromString() (FullOpts)

@@ -8,27 +8,27 @@ ; 0 inlinees with PGO data; 18 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T33] ( 2, 5 ) ref -> x19 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T03] ( 5, 17 ) int -> x20 -; V02 loc2 [V02,T02] ( 8, 28 ) ref -> x1 class-hnd <System.String>
+; V00 loc0 [V00,T34] ( 2, 5 ) ref -> x19 class-hnd exact single-def <<unknown class>> +;* V01 loc1 [V01,T36] ( 0, 0 ) int -> zero-ref +; V02 loc2 [V02,T03] ( 5, 16 ) ref -> x1 class-hnd <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T15] ( 6, 12 ) ref -> x19 class-hnd exact single-def "dup spill" <<unknown class>> -; V05 tmp2 [V05,T06] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.String>
+; V04 tmp1 [V04,T14] ( 6, 12 ) ref -> x19 class-hnd exact single-def "dup spill" <<unknown class>> +; V05 tmp2 [V05,T05] ( 2, 16 ) ref -> x22 class-hnd exact "impAppendStmt" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V07 tmp4 [V07,T01] ( 4, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp9 [V12,T11] ( 2, 16 ) int -> x0 "Inlining Arg" -; V13 tmp10 [V13,T07] ( 2, 16 ) byref -> x2 "Inlining Arg"
+; V12 tmp9 [V12,T10] ( 2, 16 ) int -> x0 "Inlining Arg" +; V13 tmp10 [V13,T06] ( 2, 16 ) byref -> x1 "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V18 tmp15 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp16 [V19,T12] ( 2, 16 ) int -> x1 "Inlining Arg" -; V20 tmp17 [V20,T08] ( 2, 16 ) byref -> x0 "Inlining Arg"
+; V19 tmp16 [V19,T11] ( 2, 16 ) int -> x3 "Inlining Arg" +; V20 tmp17 [V20,T07] ( 2, 16 ) byref -> x2 "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V23 tmp20 [V23,T00] ( 5, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> @@ -36,59 +36,60 @@ ;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V26 tmp23 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V27 tmp24 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V28 tmp25 [V28,T13] ( 2, 16 ) int -> x0 "Inlining Arg" -; V29 tmp26 [V29,T09] ( 2, 16 ) byref -> x2 "Inlining Arg"
+; V28 tmp25 [V28,T12] ( 2, 16 ) int -> x0 "Inlining Arg" +; V29 tmp26 [V29,T08] ( 2, 16 ) byref -> x2 "Inlining Arg"
;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V34 tmp31 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp32 [V35,T14] ( 2, 16 ) int -> x1 "Inlining Arg" -; V36 tmp33 [V36,T10] ( 2, 16 ) byref -> x0 "Inlining Arg"
+; V35 tmp32 [V35,T13] ( 2, 16 ) int -> x1 "Inlining Arg" +; V36 tmp33 [V36,T09] ( 2, 16 ) byref -> x0 "Inlining Arg"
;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V38 tmp35 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp36 [V39,T17] ( 2, 8 ) byref -> x2 "field V08._reference (fldOffset=0x0)" P-INDEP -; V40 tmp37 [V40,T25] ( 2, 8 ) int -> x3 "field V08._length (fldOffset=0x8)" P-INDEP
+; V39 tmp36 [V39,T18] ( 2, 8 ) byref -> x1 "field V08._reference (fldOffset=0x0)" P-INDEP +; V40 tmp37 [V40,T26] ( 2, 8 ) int -> x4 "field V08._length (fldOffset=0x8)" P-INDEP
;* V41 tmp38 [V41 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V43 tmp40 [V43,T18] ( 2, 8 ) byref -> x2 "field V10._reference (fldOffset=0x0)" P-INDEP -; V44 tmp41 [V44,T26] ( 2, 8 ) int -> x0 "field V10._length (fldOffset=0x8)" P-INDEP
+; V43 tmp40 [V43,T19] ( 2, 8 ) byref -> x1 "field V10._reference (fldOffset=0x0)" P-INDEP +; V44 tmp41 [V44,T27] ( 2, 8 ) int -> x0 "field V10._length (fldOffset=0x8)" P-INDEP
;* V45 tmp42 [V45 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V47 tmp44 [V47,T19] ( 2, 8 ) byref -> x4 "field V16._reference (fldOffset=0x0)" P-INDEP -; V48 tmp45 [V48,T27] ( 2, 8 ) int -> x5 "field V16._length (fldOffset=0x8)" P-INDEP -; V49 tmp46 [V49,T20] ( 2, 8 ) byref -> x0 "field V17._reference (fldOffset=0x0)" P-INDEP -; V50 tmp47 [V50,T28] ( 2, 8 ) int -> x1 "field V17._length (fldOffset=0x8)" P-INDEP
+; V47 tmp44 [V47,T20] ( 2, 8 ) byref -> x2 "field V16._reference (fldOffset=0x0)" P-INDEP +; V48 tmp45 [V48,T28] ( 2, 8 ) int -> x3 "field V16._length (fldOffset=0x8)" P-INDEP +; V49 tmp46 [V49,T21] ( 2, 8 ) byref -> x2 "field V17._reference (fldOffset=0x0)" P-INDEP +; V50 tmp47 [V50,T29] ( 2, 8 ) int -> x3 "field V17._length (fldOffset=0x8)" P-INDEP
;* V51 tmp48 [V51 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP ;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
-; V53 tmp50 [V53,T21] ( 2, 8 ) byref -> x2 "field V24._reference (fldOffset=0x0)" P-INDEP -; V54 tmp51 [V54,T29] ( 2, 8 ) int -> x3 "field V24._length (fldOffset=0x8)" P-INDEP
+; V53 tmp50 [V53,T22] ( 2, 8 ) byref -> x2 "field V24._reference (fldOffset=0x0)" P-INDEP +; V54 tmp51 [V54,T30] ( 2, 8 ) int -> x3 "field V24._length (fldOffset=0x8)" P-INDEP
;* V55 tmp52 [V55 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V57 tmp54 [V57,T22] ( 2, 8 ) byref -> x2 "field V26._reference (fldOffset=0x0)" P-INDEP -; V58 tmp55 [V58,T30] ( 2, 8 ) int -> x0 "field V26._length (fldOffset=0x8)" P-INDEP
+; V57 tmp54 [V57,T23] ( 2, 8 ) byref -> x2 "field V26._reference (fldOffset=0x0)" P-INDEP +; V58 tmp55 [V58,T31] ( 2, 8 ) int -> x0 "field V26._length (fldOffset=0x8)" P-INDEP
;* V59 tmp56 [V59 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP ;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V61 tmp58 [V61,T23] ( 2, 8 ) byref -> x4 "field V32._reference (fldOffset=0x0)" P-INDEP -; V62 tmp59 [V62,T31] ( 2, 8 ) int -> x5 "field V32._length (fldOffset=0x8)" P-INDEP -; V63 tmp60 [V63,T24] ( 2, 8 ) byref -> x0 "field V33._reference (fldOffset=0x0)" P-INDEP -; V64 tmp61 [V64,T32] ( 2, 8 ) int -> x1 "field V33._length (fldOffset=0x8)" P-INDEP
+; V61 tmp58 [V61,T24] ( 2, 8 ) byref -> x4 "field V32._reference (fldOffset=0x0)" P-INDEP +; V62 tmp59 [V62,T32] ( 2, 8 ) int -> x5 "field V32._length (fldOffset=0x8)" P-INDEP +; V63 tmp60 [V63,T25] ( 2, 8 ) byref -> x0 "field V33._reference (fldOffset=0x0)" P-INDEP +; V64 tmp61 [V64,T33] ( 2, 8 ) int -> x1 "field V33._length (fldOffset=0x8)" P-INDEP
;* V65 tmp62 [V65 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP ;* V66 tmp63 [V66 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-; V67 cse0 [V67,T16] ( 3, 12 ) ref -> x0 "CSE - aggressive" -; V68 cse1 [V68,T05] ( 4, 16 ) long -> x22 "CSE - aggressive" -; V69 cse2 [V69,T34] ( 2, 2 ) ref -> x15 "CSE - aggressive" -; V70 cse3 [V70,T04] ( 4, 16 ) byref -> x21 "CSE - aggressive"
+; V67 tmp64 [V67,T02] ( 7, 25 ) long -> x20 "Widened primary induction variable" +; V68 cse0 [V68,T15] ( 2, 8 ) ref -> x0 "CSE - aggressive" +; V69 cse1 [V69,T35] ( 2, 2 ) ref -> x15 "CSE - aggressive" +; V70 cse2 [V70,T04] ( 4, 16 ) byref -> x21 "CSE - aggressive" +; V71 cse3 [V71,T16] ( 3, 12 ) byref -> x2 "CSE - aggressive" +; V72 cse4 [V72,T17] ( 3, 12 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M55358_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M55358_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -118,35 +119,27 @@ G_M55358_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 str x0, [x19, #0x28]
- mov w20, wzr
+ mov x20, xzr
;; size=96 bbWeight=1 PerfScore 14.50 G_M55358_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz add x21, x19, #16 ; byrRegs +[x21]
- ubfiz x22, x20, #3, #32 - ldr x0, [x21, x22]
+ ldr x0, [x21, x20, LSL #3]
; gcrRegs +[x0]
- mov x1, x0 - ; gcrRegs +[x1]
ldrsb wzr, [x0] add x2, x0, #12 ; byrRegs +[x2]
- ldr w0, [x0, #0x08]
+ mov x1, x2 + ; byrRegs +[x1] + ldr w3, [x0, #0x08] + sxtw w0, w3
; gcrRegs -[x0]
- sxtw w3, w0 - add x0, x1, #12
+ sxtw w4, w0 + mov x0, x1
; byrRegs +[x0]
- ldr w1, [x1, #0x08] - ; gcrRegs -[x1] - mov x4, x0 - ; byrRegs +[x4] - sxtw w5, w1 - mov x0, x2 - mov w1, w3 - mov x2, x4 - mov w3, w5
+ mov w1, w4 + ; byrRegs -[x1]
mov w4, wzr
- ; byrRegs -[x4]
mov w5, wzr mov w6, wzr mov w7, wzr @@ -156,17 +149,17 @@ G_M55358_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x8, [x8] blr x8 ; byrRegs -[x0 x2]
- ldr x23, [x21, x22] - ; gcrRegs +[x23]
+ ldr x22, [x21, x20, LSL #3] + ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E // code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] blr x0 ; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x22
; gcrRegs +[x1]
- ldr x0, [x21, x22]
+ ldr x0, [x21, x20, LSL #3]
ldrsb wzr, [x0] cbz x1, G_M55358_IG05 add x2, x0, #12 @@ -195,20 +188,20 @@ G_M55358_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x8, #0xD1FFAB1E LSL #32 ldr x8, [x8] blr x8
- ; gcrRegs -[x23]
+ ; gcrRegs -[x22]
; byrRegs -[x0 x2 x21]
- add w20, w20, #1
+ add w0, w20, #1 + mov w20, w0
cmp w20, #4 blt G_M55358_IG03
- ;; size=232 bbWeight=4 PerfScore 248.00
+ ;; size=212 bbWeight=4 PerfScore 226.00
G_M55358_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M55358_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[x0-x1] movn w2, #0 @@ -224,7 +217,7 @@ G_M55358_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 { brk_windows #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 404, prolog size 20, PerfScore 273.00, instruction count 101, allocated bytes for code 404 (MethodHash=002727c1) for method System.Tests.ConvertToStringTests:FromString() (FullOpts)
+; Total bytes of code 376, prolog size 16, PerfScore 248.00, instruction count 94, allocated bytes for code 376 (MethodHash=002727c1) for method System.Tests.ConvertToStringTests:FromString() (FullOpts)
; ============================================================ Unwind Info: @@ -235,7 +228,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 101 (0x00065) Actual length = 404 (0x000194)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -243,9 +236,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
...

+20 (+38.46%) : 139242.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+41.67%) : 149511.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 5, 17 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,24 +22,32 @@ G_M58764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M58764_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M58764_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, w1 + bhs G_M58764_IG05
mov w3, #204
- strb w3, [x0, w2, UXTW #2]
+ strb w3, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M58764_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00
+ ;; size=32 bbWeight=4 PerfScore 22.00
G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M58764_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 8, PerfScore 19.50, instruction count 12, allocated bytes for code 48 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 27.50, instruction count 17, allocated bytes for code 68 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -49,7 +58,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+45.45%) : 230495.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)

@@ -8,10 +8,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> x2
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V05 tmp3 [V05,T00] ( 7, 25 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -21,23 +22,31 @@ G_M39013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=8 bbWeight=1 PerfScore 1.50 G_M39013_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M39013_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M39013_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- strb w2, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M39013_IG05 + strb w2, [x0, x2]
add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M39013_IG03
- ;; size=16 bbWeight=4 PerfScore 12.00
+ ;; size=28 bbWeight=4 PerfScore 20.00
G_M39013_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M39013_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 17.50, instruction count 11, allocated bytes for code 44 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 25.50, instruction count 16, allocated bytes for code 64 (MethodHash=6c0d679a) for method System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
; ============================================================ Unwind Info: @@ -48,7 +57,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

realworld.run.windows.arm64.checked.mch

-40 (-12.35%) : 4514.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)

@@ -12,47 +12,49 @@ ; V02 arg2 [V02,T04] ( 4, 3.50) int -> x4 single-def ; V03 loc0 [V03,T06] ( 5, 4.50) int -> x20 single-def ; V04 loc1 [V04,T05] ( 6, 5 ) int -> x21 single-def
-; V05 loc2 [V05,T19] ( 2, 2 ) int -> x3 single-def -; V06 loc3 [V06,T28] ( 2, 1.50) int -> x0 single-def -; V07 loc4 [V07,T25] ( 3, 1.50) int -> x2 single-def -; V08 loc5 [V08,T26] ( 3, 1.50) int -> x1 single-def
+; V05 loc2 [V05,T16] ( 2, 2 ) int -> x3 single-def +; V06 loc3 [V06,T29] ( 2, 1.50) int -> x0 single-def +; V07 loc4 [V07,T24] ( 3, 1.50) int -> x2 single-def +; V08 loc5 [V08,T25] ( 3, 1.50) int -> x1 single-def
;* V09 loc6 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 loc7 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc8 [V11,T27] ( 3, 1.50) int -> x0 single-def
+; V11 loc8 [V11,T26] ( 3, 1.50) int -> x0 single-def
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ; V14 tmp2 [V14,T03] ( 3, 6 ) int -> x0 "fgMakeTemp is creating a new local variable" ; V15 tmp3 [V15,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-;* V16 tmp4 [V16,T22] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V16 tmp4 [V16,T19] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V17 tmp5 [V17,T08] ( 3, 3 ) ref -> x2 single-def "arr expr"
-; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x0 single-def "arr expr" -; V19 tmp7 [V19,T10] ( 3, 3 ) ref -> x3 single-def "arr expr" -; V20 tmp8 [V20,T15] ( 3, 3 ) int -> x2 "index expr" -; V21 tmp9 [V21,T20] ( 2, 2 ) int -> x0 "argument with side effect" -; V22 tmp10 [V22,T21] ( 2, 2 ) int -> x3 "argument with side effect" -; V23 tmp11 [V23,T11] ( 3, 3 ) ref -> x2 single-def "arr expr" -; V24 tmp12 [V24,T12] ( 3, 3 ) ref -> x1 single-def "arr expr" -; V25 cse0 [V25,T17] ( 3, 2.50) long -> x23 "CSE - moderate" -; V26 cse1 [V26,T18] ( 4, 2 ) int -> x2 "CSE - moderate" -; V27 cse2 [V27,T13] ( 2, 2 ) ref -> x0 "CSE - aggressive" -; V28 cse3 [V28,T23] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V29 cse4 [V29,T24] ( 3, 1.50) ref -> x1 "CSE - moderate" -; V30 cse5 [V30,T07] ( 4, 3.50) int -> x22 "CSE - aggressive" -; V31 cse6 [V31,T16] ( 3, 3 ) int -> x2 "CSE - moderate" -; V32 cse7 [V32,T14] ( 3, 3 ) byref -> x0 "CSE - moderate"
+; V18 tmp6 [V18,T09] ( 3, 3 ) ref -> x3 single-def "arr expr" +;* V19 tmp7 [V19,T30] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V20 tmp8 [V20,T13] ( 3, 3 ) int -> x2 "index expr" +; V21 tmp9 [V21,T17] ( 2, 2 ) int -> x5 "argument with side effect" +; V22 tmp10 [V22,T18] ( 2, 2 ) int -> x3 "argument with side effect" +; V23 tmp11 [V23,T10] ( 3, 3 ) ref -> x1 single-def "arr expr" +;* V24 tmp12 [V24,T31] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V25 cse0 [V25,T15] ( 4, 2 ) int -> x2 "CSE - moderate" +; V26 cse1 [V26,T11] ( 2, 2 ) ref -> x0 "CSE - aggressive" +; V27 cse2 [V27,T20] ( 2, 1 ) ref -> x3 "CSE - moderate" +; V28 cse3 [V28,T21] ( 2, 1 ) ref -> x1 "CSE - moderate" +; V29 cse4 [V29,T07] ( 5, 4 ) int -> x22 "CSE - aggressive" +; V30 cse5 [V30,T14] ( 3, 3 ) int -> x2 "CSE - moderate" +; V31 cse6 [V31,T12] ( 3, 3 ) byref -> x0 "CSE - moderate" +; V32 cse7 [V32,T27] ( 3, 1.50) int -> x0 "CSE - moderate" +; V33 cse8 [V33,T22] ( 3, 1.50) byref -> x3 "CSE - moderate" +; V34 cse9 [V34,T28] ( 3, 1.50) int -> x2 "CSE - moderate" +; V35 cse10 [V35,T23] ( 3, 1.50) byref -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27628_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] mov w4, w2
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz orr w20, w4, w1, LSL #16 ldr w0, [x19, #0x20] @@ -73,20 +75,18 @@ G_M27628_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add w22, w21, #1 cmp w22, w2 bhs G_M27628_IG06
- ubfiz x23, x22, #2, #32 - ldr w0, [x0, x23]
+ ldr w0, [x0, w22, UXTW #2]
; byrRegs -[x0] cmp w20, w3 bne G_M27628_IG04
- ;; size=80 bbWeight=1 PerfScore 38.00
+ ;; size=76 bbWeight=1 PerfScore 37.00
G_M27628_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[x19]
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ldr x2, [x19, #0x08] @@ -102,28 +102,21 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w1, w2, #1 ldr x3, [x19, #0x10] ; gcrRegs +[x3]
- mov x0, x3 - ; gcrRegs +[x0]
lsl w2, w2, #1
- ldr w5, [x0, #0x08] - cmp w2, w5 - bhs G_M27628_IG06 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldrh w0, [x0, w2, UXTW #2] - ; byrRegs -[x0] - add w0, w0, w1 - add w2, w2, #1 - ldr w5, [x3, #0x08] - cmp w2, w5
+ ldr w0, [x3, #0x08] + cmp w2, w0
bhs G_M27628_IG06 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
+ ldrh w5, [x3, w2, UXTW #2] + add w5, w5, w1 + add w2, w2, #1 + cmp w2, w0 + bhs G_M27628_IG06
ldrh w3, [x3, w2, UXTW #2] ; byrRegs -[x3]
- mov w2, w0
+ mov w2, w5
mov x0, x19 ; gcrRegs +[x0] movz x5, #0xD1FFAB1E // code for Internal.Utilities.Text.Parsing.Implementation+AssocTable:ReadAssoc(int,int,int,int):int:this @@ -134,31 +127,23 @@ G_M27628_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0] ldr x1, [x19, #0x18] ; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - ldr w3, [x2, #0x08] - cmp w21, w3 - bhs G_M27628_IG06 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - str w20, [x2, w21, UXTW #2]
ldr w2, [x1, #0x08]
- ; byrRegs -[x2] - cmp w22, w2
+ cmp w21, w2
bhs G_M27628_IG06 add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- str w0, [x1, x23] - ;; size=164 bbWeight=0.50 PerfScore 27.50
+ str w20, [x1, w21, UXTW #2] + cmp w22, w2 + bhs G_M27628_IG06 + str w0, [x1, w22, UXTW #2] + ;; size=140 bbWeight=0.50 PerfScore 23.50
G_M27628_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40
+ ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M27628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x19] ; byrRegs -[x1] @@ -169,7 +154,7 @@ G_M27628_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 20, PerfScore 77.00, instruction count 81, allocated bytes for code 324 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
+; Total bytes of code 284, prolog size 16, PerfScore 69.00, instruction count 71, allocated bytes for code 284 (MethodHash=891c9413) for method Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -180,7 +165,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -191,9 +176,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! + E4 end + E4 end
E4 end

-20 (-9.80%) : 14827.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)

@@ -9,7 +9,7 @@ ; ; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper> ; V01 arg1 [V01,T03] ( 5, 3.50) ref -> x1 class-hnd single-def <Microsoft.ML.DataViewRow>
-; V02 arg2 [V02,T00] ( 8, 6 ) int -> x2 single-def
+; V02 arg2 [V02,T00] ( 9, 6.50) int -> x2 single-def
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Func`2[int,ubyte]> ; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -17,15 +17,13 @@ ; V07 tmp2 [V07,T05] ( 3, 4.50) ref -> x3 class-hnd "spilling QMark2" <<unknown class>> ; V08 tmp3 [V08,T02] ( 3, 6 ) ref -> x3 single-def "arr expr" ; V09 tmp4 [V09,T07] ( 3, 3 ) ref -> x3 single-def "arr expr"
-; V10 cse0 [V10,T08] ( 3, 2.50) long -> x19 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, byref, isz ; gcrRegs +[x0-x1] ; byrRegs +[x4] @@ -39,13 +37,12 @@ G_M420_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0010 {x4}, b add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ubfiz x19, x2, #3, #32 - ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldr x3, [x3, #0x18] cbz x3, G_M420_IG04
- ;; size=40 bbWeight=1 PerfScore 17.00
+ ;; size=36 bbWeight=1 PerfScore 16.00
G_M420_IG03: ; bbWeight=0.25, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0000 {}, byref, isz ldr x3, [x3] ; gcrRegs -[x3] @@ -62,11 +59,10 @@ G_M420_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz ldr x3, [x0, #0x38] ; gcrRegs +[x3] @@ -77,7 +73,7 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 add x3, x3, #16 ; gcrRegs -[x3] ; byrRegs +[x3]
- ldr x3, [x3, x19]
+ ldr x3, [x3, w2, UXTW #3]
; gcrRegs +[x3] ; byrRegs -[x3] ldrb w3, [x3, #0x18] @@ -89,11 +85,10 @@ G_M420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=52 bbWeight=0.50 PerfScore 11.25 G_M420_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 @@ -101,11 +96,10 @@ G_M420_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 ldr x3, [x3] ;; size=16 bbWeight=0.50 PerfScore 2.25 G_M420_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x3 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1] bl CORINFO_HELP_RNGCHKFAIL @@ -113,18 +107,18 @@ G_M420_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 12, PerfScore 42.75, instruction count 51, allocated bytes for code 204 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
+; Total bytes of code 184, prolog size 8, PerfScore 37.75, instruction count 46, allocated bytes for code 184 (MethodHash=4d95fe5b) for method Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -138,10 +132,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-9.43%) : 5849.dasm - System.Collections.Generic.GenericArraySortHelper2[ushort,int]:InsertionSort(System.Span1[ushort],System.Span`1[int]) (FullOpts)

@@ -12,8 +12,8 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]> ; V02 loc0 [V02,T09] ( 5, 17 ) int -> x4 ; V03 loc1 [V03,T08] ( 3, 24 ) ushort -> x8 ld-addr-op
-; V04 loc2 [V04,T12] ( 2, 8 ) int -> x7 -; V05 loc3 [V05,T00] ( 10,112 ) int -> x4
+; V04 loc2 [V04,T13] ( 2, 8 ) int -> x7 +; V05 loc3 [V05,T10] ( 4, 16 ) int -> x4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -21,12 +21,13 @@ ; V10 tmp4 [V10,T05] ( 5, 30 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp5 [V11,T06] ( 5, 25 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V12 tmp6 [V12,T07] ( 5, 25 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V13 cse0 [V13,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" -; V14 cse1 [V14,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" -; V15 cse2 [V15,T11] ( 3, 12 ) long -> x7 "CSE - aggressive" -; V16 cse3 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" -; V17 cse4 [V17,T10] ( 4, 16 ) int -> x6 "CSE - aggressive" -; V18 cse5 [V18,T13] ( 3, 6 ) int -> x5 "CSE - aggressive"
+; V13 tmp7 [V13,T00] ( 10,112 ) long -> x4 "Widened primary induction variable" +; V14 cse0 [V14,T02] ( 3, 40 ) int -> x9 "CSE - aggressive" +; V15 cse1 [V15,T03] ( 6, 36 ) long -> x11 multi-def "CSE - aggressive" +; V16 cse2 [V16,T01] ( 8, 48 ) int -> x10 multi-def "CSE - aggressive" +; V17 cse3 [V17,T12] ( 3, 12 ) long -> x7 "CSE - aggressive" +; V18 cse4 [V18,T11] ( 4, 16 ) int -> x6 "CSE - aggressive" +; V19 cse5 [V19,T14] ( 3, 6 ) int -> x5 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -44,40 +45,35 @@ G_M33083_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b G_M33083_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w6, w4, #1 mov w7, w6
- lsl x8, x7, #1 - ldrh w8, [x0, x8]
+ ldrh w8, [x0, x7, LSL #2]
cmp w6, w3 bhs G_M33083_IG09
- lsl x7, x7, #2 - ldr w7, [x2, x7]
+ ldr w7, [x2, x7, LSL #2] + mov w4, w4
b G_M33083_IG05
- ;; size=36 bbWeight=4 PerfScore 46.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M33083_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz add w10, w4, #1 cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x13, x11, #1 - strh w9, [x0, x13]
+ strh w9, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x10, x11, #2 - add x11, x2, x10 - ; byrRegs +[x11]
cmp w4, w3 bhs G_M33083_IG09
- ldr w9, [x2, w4, UXTW #2] - str w9, [x11]
+ ldr w10, [x2, x4, LSL #2] + str w10, [x2, x11, LSL #2]
sub w4, w4, #1
- ;; size=60 bbWeight=8 PerfScore 108.00
+ mov w4, w4 + ;; size=52 bbWeight=8 PerfScore 92.00
G_M33083_IG05: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz
- ; byrRegs -[x11]
tbnz w4, #31, G_M33083_IG07 ;; size=4 bbWeight=32 PerfScore 32.00 G_M33083_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref, isz cmp w4, w1 bhs G_M33083_IG09
- ldrh w9, [x0, w4, UXTW #2]
+ ldrh w9, [x0, x4, LSL #2]
cmp w9, w8 bgt G_M33083_IG04 ;; size=20 bbWeight=16 PerfScore 96.00 @@ -86,16 +82,14 @@ G_M33083_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, b cmp w10, w1 bhs G_M33083_IG09 mov w11, w10
- lsl x4, x11, #1 - strh w8, [x0, x4]
+ strh w8, [x0, x11, LSL #2]
cmp w10, w3 bhs G_M33083_IG09
- lsl x4, x11, #2 - str w7, [x2, x4]
+ str w7, [x2, x11, LSL #2]
sxtw w4, w6 cmp w4, w5 blt G_M33083_IG03
- ;; size=52 bbWeight=4 PerfScore 40.00
+ ;; size=44 bbWeight=4 PerfScore 32.00
G_M33083_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0 x2] ldp fp, lr, [sp], #0x10 @@ -107,7 +101,7 @@ G_M33083_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 8, PerfScore 328.00, instruction count 53, allocated bytes for code 212 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
+; Total bytes of code 192, prolog size 8, PerfScore 298.00, instruction count 48, allocated bytes for code 192 (MethodHash=db7d7ec4) for method System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
; ============================================================ Unwind Info: @@ -118,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+29.41%) : 15263.dasm - Microsoft.CodeAnalysis.CommandLineParser:g_isAllAscii|170(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,33 +9,37 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V05 tmp2 [V05,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V06 tmp3 [V06,T02] ( 2, 5 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T01] ( 3, 6 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T01] ( 4, 10 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V08 tmp5 [V08,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0
-G_M41908_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 G_M41908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M41908_IG04
+ mov x2, xzr
;; size=12 bbWeight=1 PerfScore 2.00 G_M41908_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M41908_IG08 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #127 bgt G_M41908_IG06 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M41908_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M41908_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] mov w0, #1 @@ -51,8 +55,13 @@ G_M41908_IG07: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M41908_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 32.00, instruction count 17, allocated bytes for code 68 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 40.00, instruction count 22, allocated bytes for code 88 (MethodHash=61d05c4b) for method Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -63,7 +72,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+31.25%) : 12611.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)

@@ -8,12 +8,13 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[float]>
-; V01 loc0 [V01,T04] ( 4, 10 ) float -> d16 -; V02 loc1 [V02,T00] ( 5, 17 ) int -> x2 -; V03 loc2 [V03,T03] ( 3, 12 ) float -> d17
+; V01 loc0 [V01,T05] ( 4, 10 ) float -> d16 +;* V02 loc1 [V02,T03] ( 0, 0 ) int -> zero-ref +; V03 loc2 [V03,T04] ( 3, 12 ) float -> d17
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T02] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T01] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T01] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP +; V07 tmp3 [V07,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -24,18 +25,21 @@ G_M8690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M8690_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v16.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M8690_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M8690_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr s17, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8690_IG06 + ldr s17, [x0, x2, LSL #2]
fsub s17, s17, s17 fadd s16, s17, s16 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8690_IG03
- ;; size=24 bbWeight=4 PerfScore 44.00
+ ;; size=36 bbWeight=4 PerfScore 52.00
G_M8690_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] fcmp s16, #0.0 @@ -45,8 +49,13 @@ G_M8690_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M8690_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 8, PerfScore 52.50, instruction count 16, allocated bytes for code 64 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 60.50, instruction count 21, allocated bytes for code 84 (MethodHash=2f89de0d) for method Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -57,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+38.46%) : 914.dasm - System.Linq.Enumerable:Sumdouble,double:double (FullOpts)

@@ -9,9 +9,9 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[double]>
-; V01 loc0 [V01,T05] ( 4, 10 ) double -> d0
+; V01 loc0 [V01,T06] ( 4, 10 ) double -> d0
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[double]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> x2
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) double -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -20,7 +20,8 @@ ; V09 tmp4 [V09,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V10 tmp5 [V10,T04] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V11 tmp6 [V11,T02] ( 2, 5 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T01] ( 3, 6 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T01] ( 4, 10 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP +; V13 tmp8 [V13,T00] ( 6, 21 ) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -31,24 +32,32 @@ G_M25021_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25021_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] movi v0.16b, #0
- mov w2, wzr
cmp w1, #0 ble G_M25021_IG04
+ mov x2, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M25021_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldr d16, [x0, w2, UXTW #3]
+ cmp w2, w1 + bhs G_M25021_IG05 + ldr d16, [x0, x2, LSL #3]
fadd d0, d16, d0 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M25021_IG03
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=32 bbWeight=4 PerfScore 40.00
G_M25021_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M25021_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 38.00, instruction count 13, allocated bytes for code 52 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 46.00, instruction count 18, allocated bytes for code 72 (MethodHash=80729e42) for method System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
; ============================================================ Unwind Info: @@ -59,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

smoke_tests.nativeaot.windows.arm64.checked.mch

-44 (-9.82%) : 9988.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)

@@ -7,40 +7,39 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T13] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase[]> -; V01 arg1 [V01,T14] ( 4, 5 ) ref -> x20 class-hnd single-def <System.Type[]> -; V02 loc0 [V02,T17] ( 6, 6.50) ref -> x22 class-hnd exact single-def <System.Reflection.MethodBase[]> -; V03 loc1 [V03,T10] ( 8, 11 ) int -> x23 -; V04 loc2 [V04,T08] ( 5, 17 ) int -> x24
+; V00 arg0 [V00,T11] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase[]> +; V01 arg1 [V01,T12] ( 4, 5 ) ref -> x20 class-hnd single-def <System.Type[]> +; V02 loc0 [V02,T15] ( 6, 6.50) ref -> x22 class-hnd exact single-def <System.Reflection.MethodBase[]> +; V03 loc1 [V03,T09] ( 8, 11 ) int -> x23 +;* V04 loc2 [V04,T16] ( 0, 0 ) int -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V06 loc4 [V06,T02] ( 7, 84 ) int -> [fp+0x2C]
+; V06 loc4 [V06,T00] ( 8,100 ) int -> x28
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V10 tmp2 [V10,T12] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> -; V11 tmp3 [V11,T07] ( 2, 20 ) byref -> x27 "field V05._reference (fldOffset=0x0)" P-INDEP -; V12 tmp4 [V12,T05] ( 3, 24 ) int -> x28 "field V05._length (fldOffset=0x8)" P-INDEP
+; V10 tmp2 [V10,T10] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase> +; V11 tmp3 [V11,T06] ( 2, 20 ) byref -> x26 "field V05._reference (fldOffset=0x0)" P-INDEP +; V12 tmp4 [V12,T04] ( 3, 24 ) int -> x27 "field V05._length (fldOffset=0x8)" P-INDEP
;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-DEP ;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-DEP
-; V15 tmp7 [V15,T04] ( 3, 24 ) ref -> x0 "argument with side effect" -; V16 tmp8 [V16,T00] ( 3, 96 ) ref -> x0 "argument with side effect" -; V17 tmp9 [V17,T01] ( 3, 96 ) ref -> x0 "argument with side effect" -; V18 cse0 [V18,T03] ( 3, 48 ) long -> [fp+0x20] spill-single-def "CSE - aggressive" -; V19 cse1 [V19,T11] ( 3, 10 ) long -> x26 "CSE - aggressive" -; V20 cse2 [V20,T09] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" -; V21 cse3 [V21,T06] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" -; V22 cse4 [V22,T16] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" -; V23 cse5 [V23,T15] ( 4, 7 ) int -> x21 "CSE - aggressive"
+; V15 tmp7 [V15,T03] ( 3, 24 ) ref -> x0 "argument with side effect" +; V16 tmp8 [V16,T01] ( 3, 96 ) ref -> x0 "argument with side effect" +; V17 tmp9 [V17,T02] ( 3, 96 ) ref -> x0 "argument with side effect" +; V18 tmp10 [V18,T07] ( 6, 19 ) long -> x24 "Widened primary induction variable" +; V19 cse0 [V19,T08] ( 2, 17 ) byref -> x25 hoist "CSE - aggressive" +; V20 cse1 [V20,T05] ( 4, 22 ) int -> [fp+0x1C] spill-single-def "CSE - aggressive" +; V21 cse2 [V21,T14] ( 3, 7 ) byref -> x19 hoist "CSE - aggressive" +; V22 cse3 [V22,T13] ( 4, 7 ) int -> x21 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] @@ -48,7 +47,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] ;; size=36 bbWeight=1 PerfScore 7.50 G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M8664_IG19
+ cbz x19, G_M8664_IG16
ldr w21, [x19, #0x08] mov w1, w21 adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Reflection.MethodBase[] @@ -58,9 +57,9 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} mov x22, x0 ; gcrRegs +[x22] mov w23, wzr
- mov w24, wzr
cmp w21, #0
- ble G_M8664_IG09
+ ble G_M8664_IG08 + mov x24, xzr
add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19] @@ -69,66 +68,56 @@ G_M8664_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {} ;; size=52 bbWeight=1 PerfScore 10.50 G_M8664_IG03: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz ; gcrRegs -[x0]
- ubfiz x26, x24, #3, #32 - ldr x0, [x19, x26]
+ ldr x0, [x19, x24, LSL #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x70] blr x1 ; gcrRegs -[x0] ; byrRegs +[x0]
- mov x27, x0 - ; byrRegs +[x27] - mov w28, w1 - cbz w28, G_M8664_IG08 - ;; size=32 bbWeight=4 PerfScore 52.00 -G_M8664_IG04: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, byref, isz
+ mov x26, x0 + ; byrRegs +[x26] + mov w27, w1 + cbz w27, G_M8664_IG07 + ;; size=28 bbWeight=4 PerfScore 48.00 +G_M8664_IG04: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=6080000 {x19 x25 x26}, byref, isz
; byrRegs -[x0]
- mov w1, wzr - ldr w2, [x20, #0x08] - str w2, [fp, #0x1C] // [V21 cse3] - cmp w2, #0 - ble G_M8664_IG13
+ mov w28, wzr + ldr w1, [x20, #0x08] + str w1, [fp, #0x1C] // [V20 cse1] + cmp w1, #0 + ble G_M8664_IG06
;; size=20 bbWeight=2 PerfScore 12.00
-G_M8664_IG05: ; bbWeight=16, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, byref, isz - cmp w1, w28 - bhs G_M8664_IG18 - str w1, [fp, #0x2C] // [V06 loc4] - ubfiz x3, x1, #3, #32 - str x3, [fp, #0x20] // [V18 cse0] - ldr x0, [x27, x3]
+G_M8664_IG05: ; bbWeight=16, gcrefRegs=500000 {x20 x22}, byrefRegs=6080000 {x19 x25 x26}, byref, isz + cmp w28, w27 + bhs G_M8664_IG15 + ldr x0, [x26, w28, UXTW #3]
; gcrRegs +[x0]
- ldr x4, [x0] - ldr x4, [x4, #0x48] - blr x4 - ldr x1, [fp, #0x20] // [V18 cse0] - ldr x1, [x25, x1]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ldr x1, [x25, w28, UXTW #3]
; gcrRegs +[x1] ldr x2, [x0] ldr x2, [x2, #0xD1FFAB1E] blr x2 ; gcrRegs -[x0-x1]
- cbz w0, G_M8664_IG07 - ldr w14, [fp, #0x2C] // [V06 loc4] - add w14, w14, #1 - ldr w15, [fp, #0x1C] // [V21 cse3] - cmp w15, w14 - bgt G_M8664_IG12 - ;; size=80 bbWeight=16 PerfScore 536.00 -G_M8664_IG06: ; bbWeight=8, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref - ; byrRegs -[x27] - str w14, [fp, #0x2C] // [V06 loc4] - ;; size=4 bbWeight=8 PerfScore 8.00 -G_M8664_IG07: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz - ldr w15, [fp, #0x1C] // [V21 cse3] - ldr w14, [fp, #0x2C] // [V06 loc4] - cmp w15, w14 - bgt G_M8664_IG08 - ldr x15, [x19, x26]
+ cbz w0, G_M8664_IG06 + add w28, w28, #1 + ldr w14, [fp, #0x1C] // [V20 cse1] + cmp w14, w28 + bgt G_M8664_IG05 + ;; size=60 bbWeight=16 PerfScore 424.00 +G_M8664_IG06: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz + ; byrRegs -[x26] + ldr w14, [fp, #0x1C] // [V20 cse1] + cmp w14, w28 + bgt G_M8664_IG07 + ldr x15, [x19, x24, LSL #3]
; gcrRegs +[x15] ldr w14, [x22, #0x08] cmp w23, w14
- bhs G_M8664_IG18
+ bhs G_M8664_IG15
add x14, x22, #16 ; byrRegs +[x14] add x14, x14, x23, LSL #3 @@ -136,63 +125,52 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 ; gcrRegs -[x15] ; byrRegs -[x14] add w23, w23, #1
- ;; size=48 bbWeight=2 PerfScore 32.00 -G_M8664_IG08: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz - add w24, w24, #1
+ ;; size=44 bbWeight=2 PerfScore 28.00 +G_M8664_IG07: ; bbWeight=4, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref, isz + add w0, w24, #1 + mov w24, w0
cmp w21, w24 bgt G_M8664_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00 -G_M8664_IG09: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 10.00 +G_M8664_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ; byrRegs -[x19 x25]
- cbnz w23, G_M8664_IG14
+ cbnz w23, G_M8664_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x0, xzr ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M8664_IG11: ; bbWeight=0.50, epilog, nogc, extend - ldp x27, x28, [sp, #0x70] - ldp x25, x26, [sp, #0x60] - ldp x23, x24, [sp, #0x50] - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x80
+G_M8664_IG10: ; bbWeight=0.50, epilog, nogc, extend + ldp x27, x28, [sp, #0x60] + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x70
ret lr ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M8664_IG12: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=500000 {x20 x22}, byrefRegs=A080000 {x19 x25 x27}, gcvars, byref - ; gcrRegs -[x0] +[x20 x22] - ; byrRegs +[x19 x25 x27] - mov w1, w14 - b G_M8664_IG05 - ;; size=8 bbWeight=8 PerfScore 12.00 -G_M8664_IG13: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=2080000 {x19 x25}, byref - ; byrRegs -[x27] - str w1, [fp, #0x2C] // [V06 loc4] - b G_M8664_IG07 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M8664_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] - ; byrRegs -[x19 x25]
+G_M8664_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x22]
cmp w23, #1
- bne G_M8664_IG16
+ bne G_M8664_IG13
ldr w0, [x22, #0x08] ...

-44 (-9.32%) : 9971.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)

@@ -7,41 +7,41 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T16] ( 5, 5 ) ref -> x0 class-hnd single-def <System.Reflection.PropertyInfo[]> -; V01 arg1 [V01,T14] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Type> -; V02 arg2 [V02,T11] ( 8, 8.66) ref -> x19 class-hnd single-def <System.Type[]> -; V03 loc0 [V03,T17] ( 5, 6 ) ref -> x21 class-hnd exact <<unknown class>>
+; V00 arg0 [V00,T15] ( 5, 5 ) ref -> x0 class-hnd single-def <System.Reflection.PropertyInfo[]> +; V01 arg1 [V01,T13] ( 4, 6 ) ref -> x20 class-hnd single-def <System.Type> +; V02 arg2 [V02,T10] ( 8, 8.66) ref -> x19 class-hnd single-def <System.Type[]> +; V03 loc0 [V03,T16] ( 5, 6 ) ref -> x21 class-hnd exact <<unknown class>>
; V04 loc1 [V04,T04] ( 7, 29 ) int -> x22
-; V05 loc2 [V05,T07] ( 5, 17 ) int -> x23 -; V06 loc3 [V06,T12] ( 7, 10.20) ref -> x28 class-hnd <<unknown class>> -; V07 loc4 [V07,T01] ( 13, 72.48) int -> [fp+0x2C]
+;* V05 loc2 [V05,T19] ( 0, 0 ) int -> zero-ref +; V06 loc3 [V06,T11] ( 7, 10.20) ref -> x27 class-hnd <<unknown class>> +; V07 loc4 [V07,T01] ( 13, 72.48) int -> x28
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 3, 2 ) int -> x22
+; V10 tmp1 [V10,T18] ( 3, 2 ) int -> x22
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V14 tmp5 [V14,T05] ( 3, 24 ) ref -> x0 "argument with side effect" ; V15 tmp6 [V15,T00] ( 6, 96 ) ref -> x0 "argument with side effect" ; V16 tmp7 [V16,T02] ( 4, 64 ) ref -> x0 "argument with side effect"
-; V17 tmp8 [V17,T10] ( 3, 12 ) ref -> x0 "argument with side effect" -; V18 tmp9 [V18,T15] ( 2, 8 ) ref -> x1 "argument with side effect" -; V19 cse0 [V19,T03] ( 3, 47.52) long -> [fp+0x20] spill-single-def "CSE - aggressive" -; V20 cse1 [V20,T09] ( 4, 12 ) long -> x27 "CSE - aggressive" -; V21 cse2 [V21,T08] ( 3, 17 ) byref -> x26 hoist "CSE - aggressive" -; V22 cse3 [V22,T06] ( 4, 18.02) byref -> [fp+0x18] hoist multi-def "CSE - aggressive" -; V23 cse4 [V23,T13] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive" -; V24 cse5 [V24,T18] ( 3, 6 ) int -> x24 "CSE - moderate"
+; V17 tmp8 [V17,T09] ( 3, 12 ) ref -> x0 "argument with side effect" +; V18 tmp9 [V18,T14] ( 2, 8 ) ref -> x1 "argument with side effect" +; V19 tmp10 [V19,T06] ( 7, 21 ) long -> x24 "Widened primary induction variable" +; V20 cse0 [V20,T08] ( 3, 17 ) byref -> x26 hoist "CSE - aggressive" +; V21 cse1 [V21,T07] ( 4, 18.02) byref -> [fp+0x10] hoist multi-def "CSE - aggressive" +; V22 cse2 [V22,T12] ( 4, 9 ) byref -> x25 hoist "CSE - aggressive" +; V23 cse3 [V23,T17] ( 3, 6 ) int -> x23 "CSE - aggressive" +; V24 cse4 [V24,T03] ( 3, 47.52) long -> [fp+0x18] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M10656_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50] - stp x25, x26, [sp, #0x60] - stp x27, x28, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50] + stp x27, x28, [sp, #0x60]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] @@ -50,7 +50,7 @@ G_M10656_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=36 bbWeight=1 PerfScore 7.50 G_M10656_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0]
- cbz x0, G_M10656_IG21
+ cbz x0, G_M10656_IG19
mov x21, xzr ; gcrRegs +[x21] cbnz x19, G_M10656_IG04 @@ -63,10 +63,10 @@ G_M10656_IG04: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR ldr w22, [x19, #0x08] ;; size=4 bbWeight=0.50 PerfScore 1.50 G_M10656_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- mov w23, wzr - ldr w24, [x0, #0x08] - cmp w24, #0 - ble G_M10656_IG18
+ ldr w23, [x0, #0x08] + cmp w23, #0 + ble G_M10656_IG16 + mov x24, xzr
add x25, x0, #16 ; byrRegs +[x25] add x26, x19, #16 @@ -74,114 +74,98 @@ G_M10656_IG05: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs ;; size=24 bbWeight=1 PerfScore 6.00 G_M10656_IG06: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz ; gcrRegs -[x0]
- ubfiz x27, x23, #3, #32 - ldr x0, [x25, x27]
+ ldr x0, [x25, x24, LSL #3]
; gcrRegs +[x0] ldr x1, [x0] ldr x1, [x1, #0x78] blr x1
- mov x28, x0 - ; gcrRegs +[x28] - mov w1, wzr
+ mov x27, x0 + ; gcrRegs +[x27] + mov w28, wzr
cmp w22, #0
- ble G_M10656_IG10 - ;; size=36 bbWeight=4 PerfScore 54.00 -G_M10656_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000000 {x25 x26}, byref, isz
+ ble G_M10656_IG12 + ;; size=32 bbWeight=4 PerfScore 50.00 +G_M10656_IG07: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x0]
- cbz x28, G_M10656_IG11 - cbz x19, G_M10656_IG11 - ldr w0, [x28, #0x08]
+ cbz x27, G_M10656_IG10 + cbz x19, G_M10656_IG10 + ldr w0, [x27, #0x08]
cmp w0, w22
- blt G_M10656_IG11
+ blt G_M10656_IG10
ldr w0, [x19, #0x08] cmp w0, w22
- blt G_M10656_IG11 - add x28, x28, #16 - ; gcrRegs -[x28] - ; byrRegs +[x28]
+ blt G_M10656_IG10 + add x27, x27, #16 + ; gcrRegs -[x27] + ; byrRegs +[x27]
;; size=36 bbWeight=2 PerfScore 23.00
-G_M10656_IG08: ; bbWeight=15.84, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=16000000 {x25 x26 x28}, byref, isz - str w1, [fp, #0x2C] // [V07 loc4] - ubfiz x2, x1, #3, #32 - str x2, [fp, #0x20] // [V19 cse0] - ldr x0, [x28, x2]
+G_M10656_IG08: ; bbWeight=15.84, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=E000000 {x25 x26 x27}, byref, isz + mov w1, w28 + str x1, [fp, #0x18] // [V24 cse4] + ldr x0, [x27, x1, LSL #3]
; gcrRegs +[x0]
- ldr x3, [x0] - ldr x3, [x3, #0x48] - blr x3 - ldr x1, [fp, #0x20] // [V19 cse0] - ldr x1, [x26, x1]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ldr x1, [fp, #0x18] // [V24 cse4] + ldr x1, [x26, x1, LSL #3]
; gcrRegs +[x1] bl System.Type:op_Equality(System.Type,System.Type):ubyte ; gcrRegs -[x0-x1]
- cbz w0, G_M10656_IG14 - ldr w1, [fp, #0x2C] // [V07 loc4] - add w1, w1, #1 - cmp w1, w22
+ cbz w0, G_M10656_IG12 + add w28, w28, #1 + cmp w28, w22
blt G_M10656_IG08
- ;; size=60 bbWeight=15.84 PerfScore 380.16
+ ;; size=52 bbWeight=15.84 PerfScore 324.72
G_M10656_IG09: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
- ; byrRegs -[x28] - str w1, [fp, #0x2C] // [V07 loc4] - b G_M10656_IG14 - ;; size=8 bbWeight=4 PerfScore 8.00 -G_M10656_IG10: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref - str w1, [fp, #0x2C] // [V07 loc4] - b G_M10656_IG14 - ;; size=8 bbWeight=2 PerfScore 4.00 -G_M10656_IG11: ; bbWeight=0.02, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000000 {x25 x26}, byref - ; gcrRegs +[x28] - ldr wzr, [x28, #0x08] - add x0, x28, #16
+ ; byrRegs -[x27] + b G_M10656_IG12 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M10656_IG10: ; bbWeight=0.02, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000000 {x25 x26}, byref + ; gcrRegs +[x27] + ldr wzr, [x27, #0x08] + add x0, x27, #16
; byrRegs +[x0]
- mov x2, x0 - ; byrRegs +[x2]
+ mov x1, x0 + ; byrRegs +[x1]
;; size=12 bbWeight=0.02 PerfScore 0.08
-G_M10656_IG12: ; bbWeight=0.16, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+G_M10656_IG11: ; bbWeight=0.16, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRegs=6000002 {x1 x25 x26}, byref, isz
; byrRegs -[x0]
- ldr w0, [x28, #0x08] - cmp w1, w0 - bhs G_M10656_IG20 - str x2, [fp, #0x18] // [V22 cse3] - ; GC ptr vars +{V22} - str w1, [fp, #0x2C] // [V07 loc4] - ldr x0, [x2, w1, UXTW #3]
+ ldr w0, [x27, #0x08] + cmp w28, w0 + bhs G_M10656_IG18 + str x1, [fp, #0x10] // [V21 cse1] + ; GC ptr vars +{V21} + ldr x0, [x1, w28, UXTW #3]
; gcrRegs +[x0]
- ldr x3, [x0] - ldr x3, [x3, #0x48] - blr x3 - ; byrRegs -[x2]
+ ldr x2, [x0] + ldr x2, [x2, #0x48] + blr x2 + ; byrRegs -[x1]
ldr w1, [x19, #0x08]
- ldr w2, [fp, #0x2C] // [V07 loc4] - cmp w2, w1 - bhs G_M10656_IG20 - str w2, [fp, #0x2C] // [V07 loc4] - ldr x1, [x26, w2, UXTW #3]
+ cmp w28, w1 + bhs G_M10656_IG18 + ldr x1, [x26, w28, UXTW #3]
; gcrRegs +[x1] bl System.Type:op_Equality(System.Type,System.Type):ubyte ; gcrRegs -[x0-x1]
- cbz w0, G_M10656_IG14 - ldr w1, [fp, #0x2C] // [V07 loc4] - add w1, w1, #1 - cmp w1, w22 - ldr x2, [fp, #0x18] // [V22 cse3] - ; byrRegs +[x2] - blt G_M10656_IG12 - ;; size=88 bbWeight=0.16 PerfScore 5.60 -G_M10656_IG13: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, gcvars, byref - ; gcrRegs -[x28] - ; byrRegs -[x2] - ; GC ptr vars -{V22} - str w1, [fp, #0x2C] // [V07 loc4] - ;; size=4 bbWeight=0.08 PerfScore 0.08 -G_M10656_IG14: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz - ldr w1, [fp, #0x2C] // [V07 loc4] - cmp w1, w22 - blt G_M10656_IG17 - ;; size=12 bbWeight=4 PerfScore 14.00 -G_M10656_IG15: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
...

-16 (-9.09%) : 20817.dasm - System.Numerics.Vector1[ushort]:op_Inequality(System.Numerics.Vector1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)

@@ -9,31 +9,29 @@ ; ; V00 arg0 [V00 ] ( 3, 6 ) simd16 -> [fp+0x20] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[ushort]> ; V01 arg1 [V01 ] ( 3, 6 ) simd16 -> [fp+0x10] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[ushort]>
-; V02 loc0 [V02,T00] ( 9, 29 ) int -> x19
+; V02 loc0 [V02,T00] ( 10, 33 ) int -> x19
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x21 "impAppendStmt" -; V05 tmp2 [V05,T04] ( 2, 4 ) int -> x0
+; V04 tmp1 [V04,T01] ( 2, 16 ) int -> x20 "impAppendStmt" +; V05 tmp2 [V05,T03] ( 2, 4 ) int -> x0
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp6 [V09 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V10 tmp7 [V10,T05] ( 2, 4 ) int -> x0
+; V10 tmp7 [V10,T04] ( 2, 4 ) int -> x0
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* 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 ) ushort -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T03] ( 3, 12 ) long -> x20 "CSE - aggressive" -; V16 cse1 [V16,T02] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
+; V15 cse0 [V15,T02] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M39059_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x38] - str x21, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x30]
mov fp, sp stp q1, q0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M39059_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w19, wzr ;; size=4 bbWeight=1 PerfScore 0.50 @@ -59,10 +57,9 @@ G_M39059_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M39059_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #32 // [V00 arg0] ; byrRegs +[x0]
- sbfiz x20, x19, #1, #32 - ldrh w21, [x0, x20]
+ ldrh w20, [x0, w19, SXTW #2]
tbnz w19, #31, G_M39059_IG08
- ;; size=16 bbWeight=4 PerfScore 22.00
+ ;; size=12 bbWeight=4 PerfScore 18.00
G_M39059_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0] cmp w19, #8 @@ -83,9 +80,9 @@ G_M39059_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M39059_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V01 arg1] ; byrRegs +[x0]
- ldrh w0, [x0, x20]
+ ldrh w0, [x0, w19, SXTW #2]
; byrRegs -[x0]
- cmp w0, w21
+ cmp w0, w20
bne G_M39059_IG12 add w19, w19, #1 cmp w19, #8 @@ -95,22 +92,20 @@ G_M39059_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39059_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50
+ ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M39059_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39059_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50
+ ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 176, prolog size 20, PerfScore 84.50, instruction count 44, allocated bytes for code 176 (MethodHash=5b53676c) for method System.Numerics.Vector`1[ushort]:op_Inequality(System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 160, prolog size 16, PerfScore 77.50, instruction count 40, allocated bytes for code 160 (MethodHash=5b53676c) for method System.Numerics.Vector`1[ushort]:op_Inequality(System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -121,7 +116,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -132,9 +127,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 89 save_reg X#2 Z#9 (0x09); str x21, [sp, #72] - C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56] - 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end + E4 end
E4 end E4 end

+32 (+19.05%) : 17336.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan1[ubyte],System.Span`1[ubyte]):int (FullOpts)

@@ -11,17 +11,19 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V03 loc0 [V03,T00] ( 8, 26 ) int -> registers
-; V04 loc1 [V04,T03] ( 5, 17 ) int -> x7 -; V05 loc2 [V05,T04] ( 5, 16.50) int -> x0
+;* V04 loc1 [V04,T11] ( 0, 0 ) int -> zero-ref +;* V05 loc2 [V05,T12] ( 0, 0 ) int -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T01] ( 3, 24 ) int -> x6 "impSpillLclRefs" ; V08 tmp2 [V08,T02] ( 3, 24 ) int -> x1 "impSpillLclRefs" ; V09 tmp3 [V09,T09] ( 2, 5 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp4 [V10,T07] ( 3, 6 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V10 tmp4 [V10,T05] ( 4, 10 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T10] ( 2, 5 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp6 [V12,T08] ( 3, 5.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V13 tmp7 [V13,T05] ( 3, 9 ) byref -> x4 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V14 tmp8 [V14,T06] ( 3, 9 ) int -> x5 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp6 [V12,T06] ( 4, 9.50) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V13 tmp7 [V13,T07] ( 3, 9 ) byref -> x4 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V14 tmp8 [V14,T08] ( 3, 9 ) int -> x5 single-def "field V02._length (fldOffset=0x8)" P-INDEP +; V15 tmp9 [V15,T03] ( 6, 21 ) long -> x7 "Widened primary induction variable" +; V16 tmp10 [V16,T04] ( 6, 20.50) long -> x0 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -32,9 +34,9 @@ G_M18424_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4}, byref, isz ; byrRegs +[x0 x2 x4] mov w6, wzr
- mov w7, wzr
cmp w1, #0 ble G_M18424_IG12
+ mov x7, xzr
;; size=16 bbWeight=1 PerfScore 2.50 G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4}, byref, isz cmp w6, w5 @@ -43,17 +45,20 @@ G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0015 {x0 x2 x4} mov w6, w6 add x6, x4, x6 ; byrRegs +[x6]
- ldrb w9, [x0, w7, UXTW #2]
+ cmp w7, w1 + bhs G_M18424_IG13 + ldrb w9, [x0, x7]
strb w9, [x6] add w7, w7, #1
+ mov w7, w7
cmp w7, w1 blt G_M18424_IG11
- ;; size=40 bbWeight=4 PerfScore 36.00
+ ;; size=52 bbWeight=4 PerfScore 44.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, byref, isz ; byrRegs -[x0 x6]
- mov w0, wzr
cmp w3, #0 ble G_M18424_IG10
+ mov x0, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00 G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, byref, isz cmp w8, w5 @@ -63,12 +68,15 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4}, b mov w1, w1 add x1, x4, x1 ; byrRegs +[x1]
- ldrb w6, [x2, w0, UXTW #2]
+ cmp w0, w3 + bhs G_M18424_IG13 + ldrb w6, [x2, x0]
strb w6, [x1] add w0, w0, #1
+ mov w0, w0
cmp w0, w3 blt G_M18424_IG05
- ;; size=44 bbWeight=4 PerfScore 38.00
+ ;; size=56 bbWeight=4 PerfScore 46.00
G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x1-x2 x4] mov w6, w8 @@ -98,8 +106,14 @@ G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0014 {x2 x4} mov w8, w6 b G_M18424_IG04 ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18424_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x2 x4] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 8, PerfScore 89.62, instruction count 42, allocated bytes for code 168 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 200, prolog size 8, PerfScore 105.62, instruction count 50, allocated bytes for code 200 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +124,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+26.32%) : 7143.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -10,13 +10,14 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP +; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -38,18 +39,21 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00 G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8555_IG10 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #32 bne G_M8555_IG08 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] b G_M8555_IG03 @@ -61,8 +65,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 40.50, instruction count 24, allocated bytes for code 96 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+26.32%) : 2548.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -9,13 +9,14 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 1.50) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V06 tmp2 [V06,T02] ( 3, 2.50) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T03] ( 2, 4.50) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 5 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T01] ( 4, 9 ) int -> x1 "field V01._length (fldOffset=0x8)" P-INDEP +; V09 tmp5 [V09,T00] ( 6, 20.50) long -> x2 "Widened primary induction variable"
; ; Lcl frame size = 0 @@ -37,18 +38,21 @@ G_M8555_IG04: ; bbWeight=0.50, epilog, nogc, extend ;; size=8 bbWeight=0.50 PerfScore 1.00 G_M8555_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz ; byrRegs +[x0]
- mov w2, wzr
cmp w1, #0 ble G_M8555_IG03
+ mov x2, xzr
;; size=12 bbWeight=0.50 PerfScore 1.00 G_M8555_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- ldrh w3, [x0, w2, UXTW #2]
+ cmp w2, w1 + bhs G_M8555_IG10 + ldrh w3, [x0, x2, LSL #2]
cmp w3, #32 bne G_M8555_IG08 add w2, w2, #1
+ mov w2, w2
cmp w2, w1 blt G_M8555_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=36 bbWeight=4 PerfScore 34.00
G_M8555_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x0] b G_M8555_IG03 @@ -60,8 +64,13 @@ G_M8555_IG09: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M8555_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_windows #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 32.50, instruction count 19, allocated bytes for code 76 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 40.50, instruction count 24, allocated bytes for code 96 (MethodHash=7167de94) for method System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -72,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 1,825 178 1,518 129 -2,152 +15,312
benchmarks.run_pgo.windows.arm64.checked.mch 9,412 1,830 7,302 280 -17,532 +99,664
benchmarks.run_tiered.windows.arm64.checked.mch 1,127 507 559 61 -5,360 +6,888
coreclr_tests.run.windows.arm64.checked.mch 22,527 2,049 19,637 841 -18,676 +178,436
libraries.crossgen2.windows.arm64.checked.mch 6,039 764 4,805 470 -8,520 +51,812
libraries.pmi.windows.arm64.checked.mch 7,678 821 6,323 534 -8,888 +58,692
libraries_tests.run.windows.arm64.Release.mch 25,731 5,255 19,373 1,103 -49,412 +282,736
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 9,885 1,315 7,664 906 -12,624 +72,260
realworld.run.windows.arm64.checked.mch 1,684 230 1,333 121 -2,788 +13,816
smoke_tests.nativeaot.windows.arm64.checked.mch 1,200 266 816 118 -2,084 +8,136
87,108 13,215 69,330 4,563 -128,036 +787,752

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,443 4 24,439 3 (0.01%) 3 (0.01%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,037 48,079 47,958 84 (0.09%) 84 (0.09%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,358 36,713 12,645 2 (0.00%) 2 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 595,278 362,592 232,686 124 (0.02%) 126 (0.02%)
libraries.crossgen2.windows.arm64.checked.mch 244,146 15 244,131 3 (0.00%) 6 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,565 6 305,559 13 (0.00%) 13 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 650,872 469,431 181,441 734 (0.11%) 734 (0.11%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,066 21,598 295,468 10 (0.00%) 11 (0.00%)
realworld.run.windows.arm64.checked.mch 33,208 3 33,205 3 (0.01%) 3 (0.01%)
smoke_tests.nativeaot.windows.arm64.checked.mch 23,829 8 23,821 333 (1.38%) 333 (1.38%)
2,339,802 938,449 1,401,353 1,309 (0.06%) 1,315 (0.06%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10957488 (overridden on cmd)
Total bytes of diff: 10970648 (overridden on cmd)
Total bytes of delta: 13160 (0.12 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 15855.dasm (5.49 % of base)
         160 : 14428.dasm (8.51 % of base)
         112 : 24144.dasm (7.24 % of base)
         100 : 9711.dasm (1.20 % of base)
          84 : 9661.dasm (0.77 % of base)
          84 : 22745.dasm (1.06 % of base)
          84 : 23782.dasm (0.78 % of base)
          84 : 10925.dasm (1.11 % of base)
          80 : 20288.dasm (7.91 % of base)
          80 : 4116.dasm (1.20 % of base)
          80 : 9682.dasm (5.56 % of base)
          68 : 7034.dasm (3.97 % of base)
          68 : 22557.dasm (3.71 % of base)
          64 : 24259.dasm (28.57 % of base)
          64 : 4095.dasm (3.22 % of base)
          64 : 4277.dasm (6.15 % of base)
          60 : 22022.dasm (3.23 % of base)
          60 : 18361.dasm (2.13 % of base)
          60 : 2097.dasm (6.02 % of base)
          56 : 16412.dasm (9.66 % of base)

Top file improvements (bytes):
        -136 : 22604.dasm (-1.25 % of base)
        -136 : 7354.dasm (-3.74 % of base)
         -88 : 19964.dasm (-0.98 % of base)
         -68 : 9494.dasm (-0.20 % of base)
         -64 : 20168.dasm (-19.51 % of base)
         -56 : 16376.dasm (-1.79 % of base)
         -56 : 17581.dasm (-1.33 % of base)
         -52 : 21259.dasm (-0.14 % of base)
         -48 : 14427.dasm (-4.18 % of base)
         -44 : 22182.dasm (-2.74 % of base)
         -44 : 4044.dasm (-3.51 % of base)
         -40 : 5620.dasm (-2.03 % of base)
         -36 : 463.dasm (-3.42 % of base)
         -36 : 20495.dasm (-1.69 % of base)
         -32 : 330.dasm (-1.91 % of base)
         -32 : 724.dasm (-2.76 % of base)
         -28 : 3090.dasm (-0.83 % of base)
         -28 : 6389.dasm (-1.13 % of base)
         -28 : 16426.dasm (-1.59 % of base)
         -24 : 21993.dasm (-4.76 % of base)

89 total files with Code Size differences (35 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         196 (5.49 % of base) : 15855.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 14428.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         112 (7.24 % of base) : 24144.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         100 (1.20 % of base) : 9711.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
          84 (1.11 % of base) : 10925.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
          84 (0.78 % of base) : 23782.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
          84 (1.06 % of base) : 22745.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
          84 (0.77 % of base) : 9661.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
          80 (5.56 % of base) : 9682.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
          80 (1.20 % of base) : 4116.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          80 (7.91 % of base) : 20288.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          68 (3.71 % of base) : 22557.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          68 (3.97 % of base) : 7034.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          64 (28.57 % of base) : 24259.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          64 (6.15 % of base) : 4277.dasm - System.Collections.Frozen.FrozenHashTable:CalcNumBuckets(System.ReadOnlySpan`1[int],ubyte):int (FullOpts)
          64 (3.22 % of base) : 4095.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (3.23 % of base) : 22022.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
          60 (2.13 % of base) : 18361.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (6.02 % of base) : 2097.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          56 (9.66 % of base) : 16412.dasm - System.Xml.Base64Decoder:Decode(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):this (FullOpts)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 22604.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -136 (-3.74 % of base) : 7354.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-0.98 % of base) : 19964.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -68 (-0.20 % of base) : 9494.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -64 (-19.51 % of base) : 20168.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -56 (-1.79 % of base) : 16376.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 17581.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-0.14 % of base) : 21259.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
         -48 (-4.18 % of base) : 14427.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -44 (-2.74 % of base) : 22182.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
         -44 (-3.51 % of base) : 4044.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -40 (-2.03 % of base) : 5620.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -36 (-1.69 % of base) : 20495.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (FullOpts)
         -36 (-3.42 % of base) : 463.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-1.91 % of base) : 330.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -32 (-2.76 % of base) : 724.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
         -28 (-1.13 % of base) : 6389.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (FullOpts)
         -28 (-1.59 % of base) : 16426.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (FullOpts)
         -28 (-0.83 % of base) : 3090.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
         -24 (-4.76 % of base) : 21993.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)

Top method regressions (percentages):
          24 (40.00 % of base) : 21045.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 22535.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 15506.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
          20 (38.46 % of base) : 1839.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 10311.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (35.29 % of base) : 9422.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          20 (33.33 % of base) : 21686.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 9460.dasm - Span.IndexerBench:TestKnownSizeArray(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 22760.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (31.25 % of base) : 22412.dasm - Span.IndexerBench:TestIndexer6(System.Span`1[ubyte],Span.Sink):ubyte (FullOpts)
          64 (28.57 % of base) : 24259.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          20 (27.78 % of base) : 22160.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 19250.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 22000.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          20 (26.32 % of base) : 22128.dasm - System.Collections.IndexerSet`1[int]:Span():int:this (FullOpts)
          20 (26.32 % of base) : 400.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (25.00 % of base) : 20395.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 19936.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
          20 (25.00 % of base) : 23793.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
          20 (25.00 % of base) : 23554.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)

Top method improvements (percentages):
         -64 (-19.51 % of base) : 20168.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -12 (-6.00 % of base) : 6337.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (FullOpts)
          -8 (-5.71 % of base) : 2684.dasm - System.Linq.Enumerable+SelectArrayIterator`2[ubyte,ushort]:Fill(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],System.Func`2[ubyte,ushort]) (FullOpts)
          -4 (-5.56 % of base) : 15600.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -8 (-5.00 % of base) : 14424.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (FullOpts)
         -16 (-4.94 % of base) : 16860.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
          -8 (-4.88 % of base) : 23766.dasm - NumericSortJagged:NumSift(int[],int,int) (FullOpts)
         -24 (-4.76 % of base) : 21993.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (FullOpts)
          -4 (-4.76 % of base) : 20155.dasm - System.Collections.IndexerSet`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
          -4 (-4.55 % of base) : 15215.dasm - System.Collections.IndexerSetReverse`1[System.__Canon]:Array():System.__Canon[]:this (FullOpts)
         -16 (-4.44 % of base) : 9443.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -48 (-4.18 % of base) : 14427.dasm - AssignJagged:first_assignments(int[][],short[][]):int (FullOpts)
         -12 (-4.17 % of base) : 16331.dasm - Benchstone.BenchI.NDhrystone:Proc8(int[],int[][],int,int) (FullOpts)
         -12 (-4.05 % of base) : 15882.dasm - NeuralJagged:do_out_forward() (FullOpts)
          -4 (-4.00 % of base) : 8344.dasm - System.Xml.XmlBaseReader+NamespaceManager:Register(System.Xml.XmlBaseReader+Namespace):this (FullOpts)
        -136 (-3.74 % of base) : 7354.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -12 (-3.61 % of base) : 15881.dasm - NeuralJagged:do_mid_forward(int) (FullOpts)
         -12 (-3.57 % of base) : 7395.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:HasCallbacks(int):ubyte:this (FullOpts)
         -44 (-3.51 % of base) : 4044.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
          -8 (-3.45 % of base) : 4871.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)


benchmarks.run_pgo.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45442912 (overridden on cmd)
Total bytes of diff: 45525044 (overridden on cmd)
Total bytes of delta: 82132 (0.18 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         184 : 47323.dasm (5.18 % of base)
         160 : 40714.dasm (7.81 % of base)
         148 : 94403.dasm (9.49 % of base)
         128 : 43767.dasm (5.42 % of base)
         128 : 43786.dasm (5.56 % of base)
         128 : 40693.dasm (5.61 % of base)
         104 : 47322.dasm (5.80 % of base)
         104 : 47317.dasm (5.80 % of base)
          88 : 30213.dasm (3.89 % of base)
          72 : 47321.dasm (5.34 % of base)
          72 : 47316.dasm (5.34 % of base)
          72 : 40710.dasm (3.51 % of base)
          68 : 68713.dasm (1.88 % of base)
          64 : 4752.dasm (3.07 % of base)
          60 : 64417.dasm (0.31 % of base)
          56 : 36433.dasm (2.66 % of base)
          52 : 79828.dasm (1.37 % of base)
          52 : 32232.dasm (1.41 % of base)
          52 : 46212.dasm (2.88 % of base)
          52 : 79841.dasm (1.37 % of base)

Top file improvements (bytes):
        -160 : 90726.dasm (-8.49 % of base)
        -140 : 90725.dasm (-5.87 % of base)
        -128 : 79842.dasm (-1.18 % of base)
        -120 : 65961.dasm (-2.00 % of base)
        -112 : 50903.dasm (-3.98 % of base)
        -112 : 64533.dasm (-3.87 % of base)
        -112 : 92602.dasm (-3.16 % of base)
        -112 : 95783.dasm (-3.16 % of base)
        -108 : 50572.dasm (-3.21 % of base)
        -108 : 52246.dasm (-3.21 % of base)
        -108 : 85659.dasm (-3.22 % of base)
        -108 : 65853.dasm (-3.21 % of base)
        -104 : 50035.dasm (-3.21 % of base)
         -96 : 78237.dasm (-5.42 % of base)
         -88 : 79829.dasm (-0.77 % of base)
         -84 : 78489.dasm (-1.91 % of base)
         -84 : 79843.dasm (-0.74 % of base)
         -80 : 51651.dasm (-2.40 % of base)
         -80 : 51652.dasm (-0.89 % of base)
         -80 : 51641.dasm (-2.40 % of base)

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

Top method regressions (bytes):
         184 (5.18 % of base) : 47323.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         160 (7.81 % of base) : 40714.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (9.49 % of base) : 94403.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
         128 (5.61 % of base) : 40693.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 43767.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         128 (5.56 % of base) : 43786.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         104 (5.80 % of base) : 47322.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         104 (5.80 % of base) : 47317.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          88 (3.89 % of base) : 30213.dasm - EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref) (Tier1)
          72 (3.51 % of base) : 40710.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
          72 (5.34 % of base) : 47321.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          72 (5.34 % of base) : 47316.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
          68 (1.88 % of base) : 68713.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
          64 (3.07 % of base) : 4752.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
          60 (0.31 % of base) : 64417.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
          56 (2.66 % of base) : 36433.dasm - EMFloatClass:MultiplyInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF) (Tier1)
          52 (1.37 % of base) : 79828.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          52 (1.37 % of base) : 79841.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          52 (1.41 % of base) : 32232.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
          52 (2.88 % of base) : 46212.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

Top method improvements (bytes):
        -160 (-8.49 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -140 (-5.87 % of base) : 90725.dasm - NumericSortJagged:Run():double:this (Tier1)
        -128 (-1.18 % of base) : 79842.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -120 (-2.00 % of base) : 65961.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
        -112 (-3.16 % of base) : 92602.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -112 (-3.16 % of base) : 95783.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -112 (-3.87 % of base) : 64533.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.98 % of base) : 50903.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
        -108 (-3.21 % of base) : 50572.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 52246.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.22 % of base) : 85659.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -108 (-3.21 % of base) : 65853.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
        -104 (-3.21 % of base) : 50035.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -96 (-5.42 % of base) : 78237.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -88 (-0.77 % of base) : 79829.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -84 (-0.74 % of base) : 79843.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -84 (-1.91 % of base) : 78489.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -80 (-0.89 % of base) : 51652.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
         -80 (-2.40 % of base) : 51651.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -80 (-2.40 % of base) : 51641.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)

Top method regressions (percentages):
          28 (33.33 % of base) : 62625.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          28 (33.33 % of base) : 68368.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          24 (30.00 % of base) : 32390.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          24 (30.00 % of base) : 33944.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          16 (21.05 % of base) : 76220.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (21.05 % of base) : 17407.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (21.05 % of base) : 7870.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (21.05 % of base) : 46147.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (21.05 % of base) : 69108.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (20.83 % of base) : 59719.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (20.83 % of base) : 69324.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (17.24 % of base) : 41695.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (17.24 % of base) : 33785.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (14.71 % of base) : 62993.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
          16 (14.29 % of base) : 40144.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 41208.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 81928.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 89464.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 79280.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 51312.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 30389.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -20 (-8.62 % of base) : 29464.dasm - System.Collections.Generic.ArraySortHelper`1[int]:Swap(System.Span`1[int],int,int) (Instrumented Tier0)
        -160 (-8.49 % of base) : 90726.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
         -32 (-7.69 % of base) : 7497.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 30388.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -28 (-6.67 % of base) : 29461.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Instrumented Tier0)
         -24 (-6.67 % of base) : 9001.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -24 (-6.59 % of base) : 76548.dasm - Benchstone.BenchI.XposMatrix:Inner(int[][],int) (Tier1-OSR)
         -16 (-6.56 % of base) : 17839.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Instrumented Tier0)
         -16 (-6.56 % of base) : 17828.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
        -140 (-5.87 % of base) : 90725.dasm - NumericSortJagged:Run():double:this (Tier1)
         -40 (-5.71 % of base) : 30390.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Instrumented Tier0)
         -24 (-5.50 % of base) : 17842.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Instrumented Tier0)
         -28 (-5.43 % of base) : 7495.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -96 (-5.42 % of base) : 78237.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -28 (-5.22 % of base) : 29929.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
         -28 (-5.22 % of base) : 29922.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Instrumented Tier0)
          -8 (-5.13 % of base) : 64513.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 85242.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
          -8 (-5.13 % of base) : 65790.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)


benchmarks.run_tiered.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15586420 (overridden on cmd)
Total bytes of diff: 15587948 (overridden on cmd)
Total bytes of delta: 1528 (0.01 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         196 : 30795.dasm (5.49 % of base)
         160 : 29369.dasm (8.51 % of base)
         140 : 30794.dasm (4.54 % of base)
         136 : 29606.dasm (6.25 % of base)
         124 : 29368.dasm (5.85 % of base)
         112 : 48862.dasm (7.24 % of base)
          68 : 46972.dasm (3.97 % of base)
          68 : 46976.dasm (4.27 % of base)
          64 : 6667.dasm (3.14 % of base)
          48 : 48859.dasm (5.24 % of base)
          48 : 9661.dasm (2.33 % of base)
          48 : 29608.dasm (5.61 % of base)
          44 : 30494.dasm (2.44 % of base)
          36 : 14415.dasm (4.95 % of base)
          36 : 46973.dasm (9.89 % of base)
          36 : 45648.dasm (6.98 % of base)
          36 : 24446.dasm (1.15 % of base)
          36 : 24479.dasm (7.76 % of base)
          36 : 40534.dasm (1.03 % of base)
          36 : 46987.dasm (10.00 % of base)

Top file improvements (bytes):
        -136 : 46292.dasm (-1.25 % of base)
        -136 : 7563.dasm (-3.65 % of base)
        -112 : 32264.dasm (-3.98 % of base)
        -112 : 40535.dasm (-4.83 % of base)
         -88 : 40354.dasm (-0.98 % of base)
         -84 : 31906.dasm (-2.88 % of base)
         -76 : 45218.dasm (-4.32 % of base)
         -68 : 3128.dasm (-0.78 % of base)
         -68 : 20450.dasm (-0.20 % of base)
         -60 : 29366.dasm (-4.98 % of base)
         -56 : 40352.dasm (-1.73 % of base)
         -56 : 38855.dasm (-1.35 % of base)
         -56 : 43390.dasm (-3.74 % of base)
         -56 : 31909.dasm (-1.79 % of base)
         -52 : 8726.dasm (-3.23 % of base)
         -52 : 46883.dasm (-2.56 % of base)
         -52 : 24053.dasm (-4.26 % of base)
         -52 : 30654.dasm (-3.28 % of base)
         -48 : 488.dasm (-1.35 % of base)
         -48 : 29370.dasm (-4.18 % of base)

91 total files with Code Size differences (43 improved, 48 regressed), 20 unchanged.

Top method regressions (bytes):
         196 (5.49 % of base) : 30795.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
         160 (8.51 % of base) : 29369.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         140 (4.54 % of base) : 30794.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         136 (6.25 % of base) : 29606.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (5.85 % of base) : 29368.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         112 (7.24 % of base) : 48862.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
          68 (3.97 % of base) : 46972.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          68 (4.27 % of base) : 46976.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          64 (3.14 % of base) : 6667.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (Tier0-FullOpts)
          48 (5.61 % of base) : 29608.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
          48 (5.24 % of base) : 48859.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
          48 (2.33 % of base) : 9661.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(long):System.Reflection.MethodInfo:this (Tier1)
          44 (2.44 % of base) : 30494.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          36 (6.98 % of base) : 45648.dasm - Sigil.Impl.LinqAlternative:_Order[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],Sigil.Impl.SigilFunc`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (Tier1)
          36 (1.03 % of base) : 40534.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          36 (9.89 % of base) : 46973.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          36 (10.00 % of base) : 46987.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          36 (4.95 % of base) : 14415.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
          36 (7.76 % of base) : 24479.dasm - System.Text.RegularExpressions.Match:Tidy(int,int,int):this (Tier1)
          36 (1.15 % of base) : 24446.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier1)

Top method improvements (bytes):
        -136 (-1.25 % of base) : 46292.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -136 (-3.65 % of base) : 7563.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
        -112 (-4.83 % of base) : 40535.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Tier0)
        -112 (-3.98 % of base) : 32264.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
         -88 (-0.98 % of base) : 40354.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
         -84 (-2.88 % of base) : 31906.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
         -76 (-4.32 % of base) : 45218.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
         -68 (-0.20 % of base) : 20450.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
         -68 (-0.78 % of base) : 3128.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0)
         -60 (-4.98 % of base) : 29366.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -56 (-1.73 % of base) : 40352.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
         -56 (-3.74 % of base) : 43390.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
         -56 (-1.79 % of base) : 31909.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -56 (-1.35 % of base) : 38855.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
         -52 (-3.23 % of base) : 8726.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-2.56 % of base) : 46883.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int (Tier0)
         -52 (-3.28 % of base) : 30654.dasm - System.SpanHelpers:LastIndexOfAny[int](byref,int,int,int):int (Tier0)
         -52 (-4.26 % of base) : 24053.dasm - System.Text.Json.JsonWriterHelper:EscapeNextChars(ushort,System.Span`1[ushort],byref) (Tier0)
         -48 (-4.18 % of base) : 29370.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1)
         -48 (-1.35 % of base) : 488.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier0)

Top method regressions (percentages):
          20 (26.32 % of base) : 8312.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (21.74 % of base) : 37552.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (20.83 % of base) : 37507.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          20 (17.24 % of base) : 24926.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          16 (14.29 % of base) : 24623.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:IterateAll(ubyte[]):ubyte (Tier1-OSR)
          16 (14.29 % of base) : 8378.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1)
          20 (13.51 % of base) : 29407.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          12 (12.50 % of base) : 38798.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
          16 (12.12 % of base) : 8377.dasm - System.Random+Net5CompatSeedImpl:NextBytes(ubyte[]):this (Tier1)
          12 (11.11 % of base) : 10523.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[System.__Canon]:IterateAll(System.__Canon[]):System.__Canon (Tier1-OSR)
          20 (11.11 % of base) : 40282.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1)
          28 (10.77 % of base) : 48112.dasm - Benchstone.BenchI.BenchE:Strsch(ushort[],ushort[],int,int):int (Tier1)
          12 (10.71 % of base) : 46985.dasm - System.Numerics.BigIntegerCalculator:SubtractDivisor(System.Span`1[uint],System.ReadOnlySpan`1[uint],ulong):uint (Tier1)
          28 (10.29 % of base) : 49287.dasm - System.Xml.XmlTextReaderImpl:GetAttribute(System.String,System.String):System.String:this (Tier1)
          16 (10.00 % of base) : 29550.dasm - Benchstone.BenchI.IniArray:Test():ushort[]:this (Tier1-OSR)
          12 (10.00 % of base) : 22972.dasm - EMFloat:IsMantissaZero(ushort[]):ubyte (Tier1)
          16 (10.00 % of base) : 42546.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(ushort[],int,int):int (Tier1)
          36 (10.00 % of base) : 46987.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          36 (9.89 % of base) : 46973.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          16 (9.76 % of base) : 47282.dasm - SciMark2.FFT:inverse(double[]) (Tier1-OSR)

Top method improvements (percentages):
         -40 (-10.10 % of base) : 22261.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:Swap(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -32 (-7.69 % of base) : 8757.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:Swap(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int,int) (Tier0)
         -36 (-7.38 % of base) : 22260.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[int],int,int) (Tier0)
         -24 (-6.67 % of base) : 11962.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier0)
         -16 (-6.56 % of base) : 11965.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:Swap(System.Span`1[System.__Canon],int,int) (Tier0)
         -40 (-6.49 % of base) : 22262.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,int]:InsertionSort(System.Span`1[int],System.Span`1[int]) (Tier0)
         -32 (-6.30 % of base) : 7596.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:SwapIfGreaterWithValues(System.Span`1[int],System.Span`1[System.__Canon],int,int) (Tier0)
         -12 (-6.25 % of base) : 22205.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
         -12 (-6.00 % of base) : 11973.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int) (Tier1)
         -28 (-5.98 % of base) : 24633.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier0)
         -36 (-5.66 % of base) : 7824.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (Tier0)
         -24 (-5.56 % of base) : 1817.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier0)
          -8 (-5.13 % of base) : 17458.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Tier1-OSR)
         -36 (-5.06 % of base) : 22410.dasm - System.Numerics.BigIntegerCalculator:SubtractCore(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier0)
          -8 (-5.00 % of base) : 29374.dasm - AssignJagged:CopyToAssign(int[][],int[][]) (Tier1)
         -44 (-5.00 % of base) : 48998.dasm - Span.Sorting:TestQuickSortSpan(System.Span`1[int]) (Tier0)
         -60 (-4.98 % of base) : 29366.dasm - AssignJagged:first_assignments(int[][],short[][]):int (Tier1-OSR)
         -24 (-4.96 % of base) : 46889.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier0)
         -16 (-4.94 % of base) : 42555.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (Tier1)
          -8 (-4.88 % of base) : 48180.dasm - NumericSortJagged:NumSift(int[],int,int) (Tier1)


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 495080320 (overridden on cmd)
Total bytes of diff: 495240080 (overridden on cmd)
Total bytes of delta: 159760 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         268 : 154881.dasm (71.28 % of base)
         268 : 158551.dasm (71.28 % of base)
         232 : 151042.dasm (54.72 % of base)
         216 : 187703.dasm (4.78 % of base)
         196 : 205359.dasm (5.49 % of base)
         160 : 203859.dasm (8.51 % of base)
         160 : 470514.dasm (7.81 % of base)
         148 : 470611.dasm (5.94 % of base)
         132 : 470548.dasm (5.68 % of base)
         128 : 470542.dasm (5.42 % of base)
         128 : 470508.dasm (5.61 % of base)
         124 : 470545.dasm (5.81 % of base)
         124 : 590757.dasm (1.00 % of base)
         112 : 205618.dasm (7.24 % of base)
         100 : 592685.dasm (0.70 % of base)
          96 : 470513.dasm (4.26 % of base)
          96 : 592686.dasm (0.65 % of base)
          96 : 470606.dasm (4.56 % of base)
          96 : 590046.dasm (0.65 % of base)
          92 : 470610.dasm (4.36 % of base)

Top file improvements (bytes):
        -164 : 470482.dasm (-4.98 % of base)
        -156 : 470249.dasm (-7.60 % of base)
        -136 : 205315.dasm (-1.25 % of base)
        -120 : 241201.dasm (-2.92 % of base)
        -120 : 246855.dasm (-2.92 % of base)
        -104 : 470773.dasm (-3.21 % of base)
        -100 : 187963.dasm (-3.37 % of base)
        -100 : 22471.dasm (-6.02 % of base)
         -88 : 205258.dasm (-0.98 % of base)
         -84 : 470258.dasm (-1.69 % of base)
         -80 : 181824.dasm (-2.56 % of base)
         -80 : 315206.dasm (-5.35 % of base)
         -72 : 399510.dasm (-2.97 % of base)
         -60 : 344259.dasm (-3.11 % of base)
         -60 : 452619.dasm (-0.82 % of base)
         -56 : 592105.dasm (-1.44 % of base)
         -56 : 200845.dasm (-1.33 % of base)
         -56 : 203927.dasm (-1.79 % of base)
         -56 : 505178.dasm (-5.22 % of base)
         -56 : 505183.dasm (-5.22 % of base)

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

Top method regressions (bytes):
         268 (71.28 % of base) : 158551.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 154881.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 151042.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
         216 (4.78 % of base) : 187703.dasm - VectorTest:TestEntryPoint():int (FullOpts)
         196 (5.49 % of base) : 205359.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         160 (8.51 % of base) : 203859.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         160 (7.81 % of base) : 470514.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
         148 (5.94 % of base) : 470611.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1)
         132 (5.68 % of base) : 470548.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         128 (5.61 % of base) : 470508.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         128 (5.42 % of base) : 470542.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (5.81 % of base) : 470545.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1-OSR)
         124 (1.00 % of base) : 590757.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         112 (7.24 % of base) : 205618.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         100 (0.70 % of base) : 592685.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1-OSR)
          96 (4.26 % of base) : 470513.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
          96 (4.56 % of base) : 470606.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)
          96 (0.65 % of base) : 592686.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          96 (0.65 % of base) : 590046.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitObjectData(ILCompiler.PEWriter.R2RPEBuilder,ILCompiler.DependencyAnalysis.ObjectNode+ObjectData,int,System.String,ILCompiler.DependencyAnalysis.ObjectNodeSection):this (Tier1)
          92 (4.36 % of base) : 470610.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (Tier1-OSR)

Top method improvements (bytes):
        -164 (-4.98 % of base) : 470482.dasm - EMFloatClass:SetupCPUEmFloatArrays(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int) (Tier1)
        -156 (-7.60 % of base) : 470249.dasm - NumericSortJagged:DoNumSortIteration(int[][],int,int):int (Tier1)
        -136 (-1.25 % of base) : 205315.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -120 (-2.92 % of base) : 241201.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -120 (-2.92 % of base) : 246855.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -104 (-3.21 % of base) : 470773.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -100 (-6.02 % of base) : 22471.dasm - StrAccess1:Run(System.String):int (FullOpts)
        -100 (-3.37 % of base) : 187963.dasm - Test:TestEntryPoint():int (FullOpts)
         -88 (-0.98 % of base) : 205258.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
         -84 (-1.69 % of base) : 470258.dasm - NumericSortJagged:Run():double:this (Tier1)
         -80 (-5.35 % of base) : 315206.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -80 (-2.56 % of base) : 181824.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -72 (-2.97 % of base) : 399510.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -60 (-3.11 % of base) : 344259.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Instrumented Tier1)
         -60 (-0.82 % of base) : 452619.dasm - VectorMathTests.Program:TestEntryPoint() (Tier1-OSR)
         -56 (-5.22 % of base) : 505178.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagAry(System.Object[][][],int,int):this (Tier1)
         -56 (-5.22 % of base) : 505183.dasm - DefaultNamespace.MulDimJagAry:SetThreeDimJagVarAry(System.Object[][][],int,int):this (Tier1)
         -56 (-1.44 % of base) : 592105.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this (Tier1)
         -56 (-1.79 % of base) : 203927.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
         -56 (-1.33 % of base) : 200845.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)

Top method regressions (percentages):
         268 (71.28 % of base) : 158551.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128.VectorBinaryOpTest__DivideSingle+TestStruct (FullOpts)
         268 (71.28 % of base) : 154881.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector128_1.VectorBinaryOpTest__op_DivisionSingle+TestStruct (FullOpts)
         232 (54.72 % of base) : 151042.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct:Create():JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionDouble+TestStruct (FullOpts)
          20 (45.45 % of base) : 205967.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
          24 (40.00 % of base) : 205094.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          24 (40.00 % of base) : 205113.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          20 (38.46 % of base) : 255619.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
          20 (38.46 % of base) : 255620.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
          20 (33.33 % of base) : 218397.dasm - CreateSpanTest:Main():int (FullOpts)
          20 (33.33 % of base) : 205097.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 205100.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
          20 (33.33 % of base) : 205116.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          24 (30.00 % of base) : 563164.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (27.78 % of base) : 205106.dasm - Span.IndexerBench:TestIndexer5(System.Span`1[ubyte],byref):ubyte (FullOpts)
          20 (27.78 % of base) : 202621.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          24 (27.27 % of base) : 205103.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
          24 (27.27 % of base) : 588819.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 592334.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          20 (26.32 % of base) : 314318.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (24.24 % of base) : 254504.dasm - TestApp:test_2_2(int):int (FullOpts)

Top method improvements (percentages):
          -4 (-11.11 % of base) : 21342.dasm - HandlesInAddrModes:Problem(long):ushort (FullOpts)
          -8 (-11.11 % of base) : 241443.dasm - Test_unsafe_1.TestApp:test_372(ulong,long[],long):long (FullOpts)
          -8 (-11.11 % of base) : 241522.dasm - Test_unsafe_6.TestApp:test_216(ulong,long[],long):long (FullOpts)
          -4 (-10.00 % of base) : 502862.dasm - Test_unsafe_0.TestApp:test_56(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 495209.dasm - Test_unsafe_0.TestApp:test_77(ulong,long):long (Tier0)
          -4 (-10.00 % of base) : 241496.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 246983.dasm - Test_unsafe_4.TestApp:test_368(ulong,long):long (FullOpts)
          -4 (-10.00 % of base) : 241498.dasm - Test_unsafe_4.TestApp:test_389(ulong,long):long (FullOpts)
         -16 (-9.76 % of base) : 592617.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 592610.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
         -16 (-9.76 % of base) : 589438.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:WaitForSentinelInHashtableToDisappear(System.__Canon[],int):System.__Canon:this (Tier1)
          -4 (-9.09 % of base) : 241412.dasm - Test_unsafe_0.TestApp:test_140(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 241449.dasm - Test_unsafe_2.TestApp:test_23(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 241457.dasm - Test_unsafe_2.TestApp:test_296(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 495326.dasm - Test_unsafe_2.TestApp:test_58(ulong,long):long (Tier0)
          -4 (-9.09 % of base) : 241467.dasm - Test_unsafe_3.TestApp:test_101(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 241506.dasm - Test_unsafe_5.TestApp:test_257(ulong,ulong,ulong):long (FullOpts)
          -4 (-9.09 % of base) : 241530.dasm - Test_unsafe_6.TestApp:test_370(ulong,long):long (FullOpts)
          -8 (-9.09 % of base) : 230379.dasm - TestApp:test_2_12(long):long (FullOpts)
          -4 (-9.09 % of base) : 514430.dasm - X:E(byref,int):float (Tier0)


libraries.crossgen2.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59059452 (overridden on cmd)
Total bytes of diff: 59102744 (overridden on cmd)
Total bytes of delta: 43292 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         436 : 142495.dasm (1.60 % of base)
         144 : 143518.dasm (3.34 % of base)
         136 : 200109.dasm (12.06 % of base)
         124 : 224076.dasm (15.98 % of base)
         112 : 143208.dasm (3.50 % of base)
          96 : 113395.dasm (2.08 % of base)
          96 : 202034.dasm (9.64 % of base)
          96 : 243407.dasm (9.64 % of base)
          88 : 209664.dasm (2.93 % of base)
          88 : 178459.dasm (2.93 % of base)
          88 : 134816.dasm (13.66 % of base)
          88 : 163732.dasm (13.66 % of base)
          84 : 22570.dasm (5.17 % of base)
          84 : 225983.dasm (5.36 % of base)
          84 : 225984.dasm (5.32 % of base)
          76 : 95171.dasm (2.98 % of base)
          72 : 124419.dasm (6.64 % of base)
          72 : 44247.dasm (1.47 % of base)
          72 : 93007.dasm (2.10 % of base)
          72 : 155415.dasm (9.23 % of base)

Top file improvements (bytes):
        -132 : 178430.dasm (-5.74 % of base)
        -108 : 209452.dasm (-2.56 % of base)
        -100 : 169656.dasm (-4.05 % of base)
        -100 : 170126.dasm (-2.65 % of base)
        -100 : 19471.dasm (-2.77 % of base)
         -92 : 20891.dasm (-79.31 % of base)
         -92 : 21133.dasm (-79.31 % of base)
         -92 : 21249.dasm (-79.31 % of base)
         -88 : 124135.dasm (-0.93 % of base)
         -80 : 122679.dasm (-1.57 % of base)
         -80 : 124747.dasm (-1.12 % of base)
         -76 : 33690.dasm (-4.02 % of base)
         -72 : 36991.dasm (-3.10 % of base)
         -64 : 125085.dasm (-1.59 % of base)
         -64 : 142295.dasm (-2.41 % of base)
         -64 : 218090.dasm (-8.60 % of base)
         -64 : 24347.dasm (-16.67 % of base)
         -60 : 125127.dasm (-1.53 % of base)
         -60 : 240509.dasm (-4.03 % of base)
         -60 : 166965.dasm (-4.03 % of base)

89 total files with Code Size differences (35 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         436 (1.60 % of base) : 142495.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         144 (3.34 % of base) : 143518.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         136 (12.06 % of base) : 200109.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
         124 (15.98 % of base) : 224076.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         112 (3.50 % of base) : 143208.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:Print(System.Object[]):this (FullOpts)
          96 (2.08 % of base) : 113395.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
          96 (9.64 % of base) : 202034.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          96 (9.64 % of base) : 243407.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          88 (13.66 % of base) : 134816.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (13.66 % of base) : 163732.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          88 (2.93 % of base) : 209664.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
          88 (2.93 % of base) : 178459.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
          84 (5.36 % of base) : 225983.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.32 % of base) : 225984.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)
          84 (5.17 % of base) : 22570.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          76 (2.98 % of base) : 95171.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          72 (1.47 % of base) : 44247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          72 (2.10 % of base) : 93007.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
          72 (9.23 % of base) : 155415.dasm - Roslyn.Utilities.CommandLineUtilities:SplitCommandLineIntoArguments(System.ReadOnlySpan`1[ushort],ubyte,System.Text.StringBuilder,System.Collections.Generic.List`1[System.String],byref) (FullOpts)
          72 (6.64 % of base) : 124419.dasm - System.Data.ProviderBase.SchemaMapping:ApplyToDataRow(System.Data.DataRow):this (FullOpts)

Top method improvements (bytes):
        -132 (-5.74 % of base) : 178430.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)
        -108 (-2.56 % of base) : 209452.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
        -100 (-4.05 % of base) : 169656.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -100 (-2.65 % of base) : 170126.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:Fix(int):ubyte:this (FullOpts)
        -100 (-2.77 % of base) : 19471.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -92 (-79.31 % of base) : 21133.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 20891.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 21249.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -88 (-0.93 % of base) : 124135.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -80 (-1.57 % of base) : 122679.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
         -80 (-1.12 % of base) : 124747.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -76 (-4.02 % of base) : 33690.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:partitionIntoTwoUsingKeys[System.__Canon,System.__Canon](System.__Canon[],System.ArraySegment`1[System.__Canon]):System.Tuple`2[System.ArraySegment`1[System.__Canon],System.ArraySegment`1[System.__Canon]] (FullOpts)
         -72 (-3.10 % of base) : 36991.dasm - System.Speech.Internal.SapiInterop.SPPHRASE:CreatePhraseFromWordUnits(System.Speech.Recognition.RecognizedWordUnit[],System.Globalization.CultureInfo,byref,byref):System.Speech.Internal.SapiInterop.ISpPhrase (FullOpts)
         -64 (-2.41 % of base) : 142295.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
         -64 (-16.67 % of base) : 24347.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -64 (-1.59 % of base) : 125085.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -64 (-8.60 % of base) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -60 (-4.03 % of base) : 240509.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-4.03 % of base) : 166965.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedGenericArraySortHelper`2[System.__Canon,System.__Canon]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[System.__Canon],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-1.53 % of base) : 125127.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)

Top method regressions (percentages):
          32 (57.14 % of base) : 228491.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 155473.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 126256.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          32 (53.33 % of base) : 218388.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (53.33 % of base) : 211564.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (50.00 % of base) : 173065.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          32 (47.06 % of base) : 156534.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 127471.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (47.06 % of base) : 146936.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          32 (44.44 % of base) : 146294.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          36 (42.86 % of base) : 126344.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 155561.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          36 (42.86 % of base) : 200702.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          32 (42.11 % of base) : 19871.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          52 (38.24 % of base) : 120262.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          32 (34.78 % of base) : 204586.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
          36 (34.62 % of base) : 128494.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          36 (34.62 % of base) : 157533.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          32 (33.33 % of base) : 126243.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          32 (33.33 % of base) : 155462.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)

Top method improvements (percentages):
         -92 (-79.31 % of base) : 21133.dasm - System.Numerics.Vector`1[float]:.ctor(float):this (FullOpts)
         -92 (-79.31 % of base) : 20891.dasm - System.Numerics.Vector`1[int]:.ctor(int):this (FullOpts)
         -92 (-79.31 % of base) : 21249.dasm - System.Numerics.Vector`1[uint]:.ctor(uint):this (FullOpts)
         -64 (-16.67 % of base) : 24347.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
         -32 (-13.33 % of base) : 188547.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
         -64 (-8.60 % of base) : 218090.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
         -16 (-8.33 % of base) : 130306.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -16 (-8.33 % of base) : 159307.dasm - Microsoft.CodeAnalysis.XmlCharType:IsOnlyCharData(System.String):int (FullOpts)
         -52 (-8.18 % of base) : 18003.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-7.80 % of base) : 18002.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
          -8 (-7.69 % of base) : 204081.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-7.69 % of base) : 204082.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-7.69 % of base) : 203924.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.69 % of base) : 203949.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
          -4 (-7.69 % of base) : 18633.dasm - System.Globalization.CharUnicodeInfo:GetNumericValueNoBoundsCheck(uint):double (FullOpts)
         -52 (-7.43 % of base) : 211250.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -52 (-7.14 % of base) : 211249.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -52 (-7.14 % of base) : 218089.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase (FullOpts)
         -16 (-6.45 % of base) : 170117.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:HasBound(int):ubyte:this (FullOpts)
         -32 (-6.35 % of base) : 23171.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)


libraries.pmi.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79827256 (overridden on cmd)
Total bytes of diff: 79877060 (overridden on cmd)
Total bytes of delta: 49804 (0.06 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         156 : 115428.dasm (2.80 % of base)
         132 : 259107.dasm (3.74 % of base)
         132 : 257778.dasm (3.74 % of base)
         128 : 140526.dasm (2.10 % of base)
         124 : 259953.dasm (9.90 % of base)
         120 : 100798.dasm (3.35 % of base)
         100 : 140512.dasm (0.34 % of base)
         100 : 260546.dasm (8.50 % of base)
          92 : 94869.dasm (3.19 % of base)
          80 : 99885.dasm (4.99 % of base)
          80 : 280178.dasm (7.91 % of base)
          80 : 285668.dasm (7.91 % of base)
          76 : 118499.dasm (1.43 % of base)
          76 : 96492.dasm (3.27 % of base)
          76 : 118238.dasm (2.67 % of base)
          72 : 60822.dasm (2.54 % of base)
          72 : 136465.dasm (6.36 % of base)
          72 : 167718.dasm (6.36 % of base)
          72 : 182613.dasm (7.96 % of base)
          68 : 290300.dasm (3.63 % of base)

Top file improvements (bytes):
        -152 : 140519.dasm (-5.40 % of base)
        -128 : 91224.dasm (-4.01 % of base)
        -120 : 39712.dasm (-2.81 % of base)
        -104 : 92373.dasm (-1.86 % of base)
         -84 : 175945.dasm (-1.18 % of base)
         -84 : 114074.dasm (-2.40 % of base)
         -80 : 173731.dasm (-0.82 % of base)
         -80 : 228120.dasm (-2.56 % of base)
         -80 : 235343.dasm (-5.12 % of base)
         -76 : 6272.dasm (-63.33 % of base)
         -76 : 8283.dasm (-63.33 % of base)
         -76 : 139785.dasm (-2.60 % of base)
         -64 : 175889.dasm (-1.59 % of base)
         -64 : 39744.dasm (-1.02 % of base)
         -64 : 114484.dasm (-2.51 % of base)
         -60 : 115127.dasm (-2.34 % of base)
         -60 : 118604.dasm (-1.21 % of base)
         -60 : 175950.dasm (-1.53 % of base)
         -56 : 35830.dasm (-1.32 % of base)
         -56 : 258859.dasm (-2.73 % of base)

93 total files with Code Size differences (39 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         156 (2.80 % of base) : 115428.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         132 (3.74 % of base) : 259107.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
         132 (3.74 % of base) : 257778.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
         128 (2.10 % of base) : 140526.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         124 (9.90 % of base) : 259953.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         120 (3.35 % of base) : 100798.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:GetAttributesToBind(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax]],int,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax]:this (FullOpts)
         100 (0.34 % of base) : 140512.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         100 (8.50 % of base) : 260546.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
          92 (3.19 % of base) : 94869.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          80 (4.99 % of base) : 99885.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
          80 (7.91 % of base) : 280178.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          80 (7.91 % of base) : 285668.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
          76 (2.67 % of base) : 118238.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildJoinSelector(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          76 (1.43 % of base) : 118499.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          76 (3.27 % of base) : 96492.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          72 (2.54 % of base) : 60822.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          72 (6.36 % of base) : 136465.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          72 (6.36 % of base) : 167718.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          72 (7.96 % of base) : 182613.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          68 (3.63 % of base) : 290300.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (FullOpts)

Top method improvements (bytes):
        -152 (-5.40 % of base) : 140519.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -128 (-4.01 % of base) : 91224.dasm - System.Speech.Internal.SapiInterop.SPPHRASE:CreatePhraseFromWordUnits(System.Speech.Recognition.RecognizedWordUnit[],System.Globalization.CultureInfo,byref,byref):System.Speech.Internal.SapiInterop.ISpPhrase (FullOpts)
        -120 (-2.81 % of base) : 39712.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
        -104 (-1.86 % of base) : 92373.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
         -84 (-2.40 % of base) : 114074.dasm - Microsoft.CodeAnalysis.VisualBasic.ExpressionLambdaRewriter:VisitObjectInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -84 (-1.18 % of base) : 175945.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-5.12 % of base) : 235343.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (FullOpts)
         -80 (-2.56 % of base) : 228120.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -80 (-0.82 % of base) : 173731.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -76 (-2.60 % of base) : 139785.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -76 (-63.33 % of base) : 6272.dasm - System.Numerics.Vector:Sum[int](System.Numerics.Vector`1[int]):int (FullOpts)
         -76 (-63.33 % of base) : 8283.dasm - System.Runtime.Intrinsics.Vector128:Sum[int](System.Runtime.Intrinsics.Vector128`1[int]):int (FullOpts)
         -64 (-1.02 % of base) : 39744.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
         -64 (-2.51 % of base) : 114484.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         -64 (-1.59 % of base) : 175889.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-1.21 % of base) : 118604.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -60 (-2.34 % of base) : 115127.dasm - Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter:UseTwiceLateInvocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundLateInvocation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedLocal]):Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter+Result (FullOpts)
         -60 (-1.53 % of base) : 175950.dasm - System.Data.RBTree`1[ubyte]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -56 (-1.32 % of base) : 35830.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -56 (-2.73 % of base) : 258859.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(ubyte):System.Data.OleDb.Bindings[]:this (FullOpts)

Top method regressions (percentages):
          52 (41.94 % of base) : 215343.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (35.71 % of base) : 267076.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 122431.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (33.33 % of base) : 153777.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (33.33 % of base) : 241646.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 288510.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (29.41 % of base) : 124616.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 155952.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 188635.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          20 (29.41 % of base) : 296565.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          28 (29.17 % of base) : 151094.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
          24 (28.57 % of base) : 154417.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          24 (28.57 % of base) : 122937.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          24 (28.57 % of base) : 237059.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          20 (27.78 % of base) : 122420.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (27.78 % of base) : 153768.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          20 (27.78 % of base) : 209783.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (26.67 % of base) : 176387.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (26.67 % of base) : 216988.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
          20 (26.32 % of base) : 270118.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -76 (-63.33 % of base) : 6272.dasm - System.Numerics.Vector:Sum[int](System.Numerics.Vector`1[int]):int (FullOpts)
         -76 (-63.33 % of base) : 8283.dasm - System.Runtime.Intrinsics.Vector128:Sum[int](System.Runtime.Intrinsics.Vector128`1[int]):int (FullOpts)
         -36 (-16.07 % of base) : 195137.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -32 (-14.29 % of base) : 202486.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
          -8 (-8.70 % of base) : 228522.dasm - System.Collections.Generic.SegmentedList`1[double]:get_Item(long):double:this (FullOpts)
          -8 (-8.70 % of base) : 228523.dasm - System.Collections.Generic.SegmentedList`1[double]:set_Item(long,double):this (FullOpts)
          -8 (-8.70 % of base) : 228512.dasm - System.Collections.Generic.SegmentedList`1[int]:get_Item(long):int:this (FullOpts)
          -8 (-8.70 % of base) : 228513.dasm - System.Collections.Generic.SegmentedList`1[int]:set_Item(long,int):this (FullOpts)
          -8 (-8.70 % of base) : 228542.dasm - System.Collections.Generic.SegmentedList`1[long]:get_Item(long):long:this (FullOpts)
          -8 (-8.70 % of base) : 228543.dasm - System.Collections.Generic.SegmentedList`1[long]:set_Item(long,long):this (FullOpts)
          -8 (-8.70 % of base) : 228502.dasm - System.Collections.Generic.SegmentedList`1[short]:get_Item(long):short:this (FullOpts)
          -8 (-8.70 % of base) : 228503.dasm - System.Collections.Generic.SegmentedList`1[short]:set_Item(long,short):this (FullOpts)
          -8 (-8.70 % of base) : 228432.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:get_Item(long):System.__Canon:this (FullOpts)
         -36 (-7.96 % of base) : 228458.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:SwapIfGreaterWithItems(System.Collections.Generic.IComparer`1[System.__Canon],long,long):this (FullOpts)
         -44 (-7.19 % of base) : 287965.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-6.67 % of base) : 241150.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo (FullOpts)
          -8 (-6.45 % of base) : 23979.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Map@2060-2[System.__Canon,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
         -12 (-6.25 % of base) : 227533.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
          -8 (-6.25 % of base) : 23983.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+MapIndexed@2074-2[System.__Canon,System.Nullable`1[int]]:Invoke(int):this (FullOpts)
          -4 (-5.88 % of base) : 228473.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:IsValidIndex(long):ubyte:this (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 329452088 (overridden on cmd)
Total bytes of diff: 329685412 (overridden on cmd)
Total bytes of delta: 233324 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         376 : 85605.dasm (3.15 % of base)
         236 : 560337.dasm (1.89 % of base)
         224 : 70448.dasm (9.00 % of base)
         216 : 164687.dasm (3.55 % of base)
         208 : 205742.dasm (1.40 % of base)
         200 : 347213.dasm (1.37 % of base)
         200 : 155704.dasm (1.68 % of base)
         200 : 614286.dasm (3.28 % of base)
         192 : 236811.dasm (1.31 % of base)
         192 : 521994.dasm (1.29 % of base)
         180 : 164688.dasm (7.46 % of base)
         180 : 594381.dasm (1.50 % of base)
         180 : 23847.dasm (1.19 % of base)
         180 : 281707.dasm (1.19 % of base)
         180 : 238518.dasm (1.23 % of base)
         180 : 511958.dasm (1.75 % of base)
         176 : 267412.dasm (1.19 % of base)
         176 : 468844.dasm (1.19 % of base)
         176 : 396176.dasm (1.17 % of base)
         176 : 515452.dasm (1.19 % of base)

Top file improvements (bytes):
        -540 : 619730.dasm (-0.27 % of base)
        -260 : 395065.dasm (-1.81 % of base)
        -228 : 314978.dasm (-4.70 % of base)
        -212 : 580349.dasm (-3.30 % of base)
        -176 : 359941.dasm (-1.25 % of base)
        -164 : 333455.dasm (-1.22 % of base)
        -136 : 347780.dasm (-0.99 % of base)
        -128 : 84432.dasm (-2.68 % of base)
        -128 : 592055.dasm (-3.57 % of base)
        -112 : 335957.dasm (-3.87 % of base)
        -112 : 340908.dasm (-3.87 % of base)
        -112 : 390489.dasm (-3.98 % of base)
        -112 : 415847.dasm (-3.06 % of base)
        -112 : 336087.dasm (-3.87 % of base)
        -112 : 351233.dasm (-3.87 % of base)
        -112 : 490254.dasm (-0.82 % of base)
        -108 : 158087.dasm (-2.54 % of base)
        -108 : 580239.dasm (-0.90 % of base)
        -108 : 525611.dasm (-0.81 % of base)
        -100 : 585245.dasm (-0.83 % of base)

100 total files with Code Size differences (56 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         376 (3.15 % of base) : 85605.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         236 (1.89 % of base) : 560337.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (Tier1-OSR)
         224 (9.00 % of base) : 70448.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (Tier0-FullOpts)
         216 (3.55 % of base) : 164687.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         208 (1.40 % of base) : 205742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         200 (3.28 % of base) : 614286.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         200 (1.37 % of base) : 347213.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         200 (1.68 % of base) : 155704.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         192 (1.31 % of base) : 236811.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         192 (1.29 % of base) : 521994.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (7.46 % of base) : 164688.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1)
         180 (1.19 % of base) : 23847.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.19 % of base) : 281707.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.23 % of base) : 238518.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.75 % of base) : 511958.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],System.Span`1[uint]) (Tier1)
         180 (1.50 % of base) : 594381.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
         176 (1.19 % of base) : 267412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.19 % of base) : 468844.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.17 % of base) : 396176.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         176 (1.19 % of base) : 515452.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 619730.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32590_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -260 (-1.81 % of base) : 395065.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -228 (-4.70 % of base) : 314978.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)
        -212 (-3.30 % of base) : 580349.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:PopulateParameterInfoValues(System.Text.Json.Serialization.Metadata.JsonTypeInfo) (Tier1)
        -176 (-1.25 % of base) : 359941.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -164 (-1.22 % of base) : 333455.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -136 (-0.99 % of base) : 347780.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -128 (-3.57 % of base) : 592055.dasm - System.Collections.Generic.ArraySortHelper`1[int]:PickPivotAndPartition(System.Span`1[int],System.Comparison`1[int]):int (Tier1)
        -128 (-2.68 % of base) : 84432.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
        -112 (-0.82 % of base) : 490254.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -112 (-3.87 % of base) : 335957.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 340908.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 336087.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.87 % of base) : 351233.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (Instrumented Tier0)
        -112 (-3.98 % of base) : 390489.dasm - System.Numerics.Matrix4x4+Impl:Decompose(byref,byref,byref,byref):ubyte (Tier0)
        -112 (-3.06 % of base) : 415847.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (Tier1)
        -108 (-2.54 % of base) : 158087.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
        -108 (-0.81 % of base) : 525611.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -108 (-0.90 % of base) : 580239.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
        -100 (-0.83 % of base) : 585245.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)

Top method regressions (percentages):
          52 (41.94 % of base) : 411946.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
          20 (33.33 % of base) : 162294.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 52224.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 595447.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          20 (33.33 % of base) : 86548.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
          24 (30.00 % of base) : 415198.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          20 (29.41 % of base) : 597506.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          20 (27.78 % of base) : 607560.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          20 (27.78 % of base) : 164032.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
          24 (27.27 % of base) : 341641.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 580412.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          24 (27.27 % of base) : 609267.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          20 (25.00 % of base) : 523457.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (Tier1)
          32 (23.53 % of base) : 430453.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
          32 (23.53 % of base) : 285933.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (Tier1)
          20 (21.74 % of base) : 47123.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 594178.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 84346.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          20 (21.74 % of base) : 155597.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          16 (21.05 % of base) : 369336.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

Top method improvements (percentages):
         -64 (-15.24 % of base) : 409348.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Instrumented Tier1)
         -12 (-13.04 % of base) : 388868.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 384069.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 388866.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 382889.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 389795.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 382854.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 389641.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-13.04 % of base) : 383953.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 384103.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 389809.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[float]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 383958.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+ExpM1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 389642.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+ExpM1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 383990.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 389653.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 383987.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+Log2P1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 389652.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.50 % of base) : 383984.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[System.Runtime.InteropServices.NFloat,System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[System.Runtime.InteropServices.NFloat]](byref,byref,ulong) (Tier1)
         -12 (-12.00 % of base) : 384077.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[double,double,System.Numerics.Tensors.TensorPrimitives+Exp2M1Operator`1[double]](byref,byref,ulong) (Tier1)
         -12 (-12.00 % of base) : 389797.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__SoftwareFallback|224_0[float,float,System.Numerics.Tensors.TensorPrimitives+Exp2M1Operator`1[float]](byref,byref,ulong) (Tier1)


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 171557220 (overridden on cmd)
Total bytes of diff: 171616856 (overridden on cmd)
Total bytes of delta: 59636 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         224 : 18995.dasm (9.00 % of base)
         156 : 19015.dasm (7.32 % of base)
         136 : 18936.dasm (6.84 % of base)
         136 : 268689.dasm (1.16 % of base)
         128 : 59736.dasm (2.10 % of base)
         128 : 59737.dasm (0.44 % of base)
         124 : 98866.dasm (11.57 % of base)
         108 : 312154.dasm (1.77 % of base)
         104 : 183000.dasm (0.96 % of base)
         100 : 99291.dasm (8.50 % of base)
         100 : 182998.dasm (1.11 % of base)
          96 : 50674.dasm (1.67 % of base)
          96 : 77140.dasm (4.55 % of base)
          96 : 54508.dasm (1.52 % of base)
          96 : 183001.dasm (1.09 % of base)
          96 : 183002.dasm (1.09 % of base)
          88 : 44816.dasm (1.53 % of base)
          88 : 242390.dasm (1.36 % of base)
          88 : 178150.dasm (3.48 % of base)
          84 : 304993.dasm (3.37 % of base)

Top file improvements (bytes):
        -540 : 295278.dasm (-0.27 % of base)
        -128 : 200516.dasm (-4.08 % of base)
        -112 : 6908.dasm (-1.91 % of base)
        -112 : 96388.dasm (-0.86 % of base)
         -92 : 192435.dasm (-1.67 % of base)
         -88 : 92771.dasm (-0.92 % of base)
         -84 : 91427.dasm (-1.18 % of base)
         -80 : 25185.dasm (-2.62 % of base)
         -80 : 10985.dasm (-1.02 % of base)
         -80 : 190121.dasm (-3.62 % of base)
         -80 : 192444.dasm (-1.93 % of base)
         -76 : 60249.dasm (-2.60 % of base)
         -76 : 166872.dasm (-3.18 % of base)
         -72 : 312351.dasm (-2.64 % of base)
         -68 : 312343.dasm (-1.59 % of base)
         -64 : 92076.dasm (-1.59 % of base)
         -60 : 50578.dasm (-1.80 % of base)
         -60 : 44745.dasm (-2.05 % of base)
         -60 : 50122.dasm (-2.11 % of base)
         -60 : 92009.dasm (-1.53 % of base)

97 total files with Code Size differences (40 improved, 57 regressed), 20 unchanged.

Top method regressions (bytes):
         224 (9.00 % of base) : 18995.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
         156 (7.32 % of base) : 19015.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
         136 (6.84 % of base) : 18936.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:FillRangeArray2D(SharedTypes.IntStructWrapper[][],int,int[],int):ubyte (FullOpts)
         136 (1.16 % of base) : 268689.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
         128 (0.44 % of base) : 59737.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         128 (2.10 % of base) : 59736.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         124 (11.57 % of base) : 98866.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
         108 (1.77 % of base) : 312154.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
         104 (0.96 % of base) : 183000.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (FullOpts)
         100 (8.50 % of base) : 99291.dasm - System.Diagnostics.EventLog:FindSourceRegistration(System.String,System.String,ubyte,ubyte):Microsoft.Win32.RegistryKey (FullOpts)
         100 (1.11 % of base) : 182998.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess1():int:this (FullOpts)
          96 (1.52 % of base) : 54508.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          96 (1.67 % of base) : 50674.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          96 (4.55 % of base) : 77140.dasm - System.Collections.Tests.List_Generic_Tests_Insert+Driver`1[System.__Canon]:InsertRangeIEnumerable(System.__Canon[],System.__Canon[],int,int,System.Func`2[System.__Canon,System.__Canon]):this (FullOpts)
          96 (1.09 % of base) : 183001.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess3():int:this (FullOpts)
          96 (1.09 % of base) : 183002.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess4():int:this (FullOpts)
          88 (1.53 % of base) : 44816.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
          88 (1.36 % of base) : 242390.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf16_Battery(System.String[],System.String[]):this (FullOpts)
          88 (3.48 % of base) : 178150.dasm - System.Xml.XmlWriterTests.XmlWriterDisposeTests:DisposeFlushesAndDisposesOutputStream() (FullOpts)
          84 (3.37 % of base) : 304993.dasm - System.Text.RegularExpressions.Symbolic.BDDRangeConverter:ToRangesFromOrdinal(System.Text.RegularExpressions.Symbolic.BDD):System.ValueTuple`2[uint,uint][]:this (FullOpts)

Top method improvements (bytes):
        -540 (-0.27 % of base) : 295278.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4067_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (Tier0-MinOpts)
        -128 (-4.08 % of base) : 200516.dasm - System.Tests.ArrayTests:VerifyArray(System.Array,System.Type,int[],int[]) (FullOpts)
        -112 (-1.91 % of base) : 6908.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
        -112 (-0.86 % of base) : 96388.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
         -92 (-1.67 % of base) : 192435.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_2DArrayConstructor():this (FullOpts)
         -88 (-0.92 % of base) : 92771.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
         -84 (-1.18 % of base) : 91427.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -80 (-1.02 % of base) : 10985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -80 (-2.62 % of base) : 25185.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
         -80 (-1.93 % of base) : 192444.dasm - System.Reflection.Tests.ConstructorInfoInvokeArrayTests:Invoke_JaggedArrayConstructor():this (FullOpts)
         -80 (-3.62 % of base) : 190121.dasm - System.Reflection.Tests.IdentityTests:Identity_Handle1() (FullOpts)
         -76 (-2.60 % of base) : 60249.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -76 (-3.18 % of base) : 166872.dasm - System.Numerics.Tests.Matrix4x4Tests:DecomposeScaleTest(float,float,float):this (FullOpts)
         -72 (-2.64 % of base) : 312351.dasm - System.Threading.Tests.AsyncLocalTests+<AddAndUpdateManyLocals_ValueType>d__13:MoveNext():this (FullOpts)
         -68 (-1.59 % of base) : 312343.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -64 (-1.59 % of base) : 92076.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
         -60 (-2.05 % of base) : 44745.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -60 (-1.80 % of base) : 50578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,uint):this (FullOpts)
         -60 (-2.11 % of base) : 50122.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -60 (-1.53 % of base) : 92009.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)

Top method regressions (percentages):
          20 (45.45 % of base) : 230495.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
          52 (41.94 % of base) : 97037.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          20 (41.67 % of base) : 149511.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
          20 (38.46 % of base) : 139242.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (35.71 % of base) : 120305.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 185585.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (33.33 % of base) : 205968.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (33.33 % of base) : 208052.dasm - XmlDictionaryWriterTest+<>c:<XmlBaseWriter_WriteString>b__14_1(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (29.41 % of base) : 4437.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (29.41 % of base) : 206346.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
          20 (29.41 % of base) : 278042.dasm - System.Text.RegularExpressions.RegexCharClass:IsAscii(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 47072.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          32 (26.67 % of base) : 93544.dasm - System.Data.ExpressionParser:ScanName():this (FullOpts)
          32 (26.67 % of base) : 245190.dasm - System.Text.Json.ReadStack:GetTopJsonTypeInfoWithParameterizedConstructor():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
          20 (25.00 % of base) : 242167.dasm - System.Text.Tests.TranscodingStreamTests+<>c:<GetVeryLongAsciiString>b__40_0(System.Span`1[ushort],System.Object):this (FullOpts)
          20 (23.81 % of base) : 134717.dasm - System.IO.Tests.BinaryWriter_EncodingTests+<>c:<GenerateLargeUnicodeString>b__16_0(System.Span`1[ushort],System.Object):this (FullOpts)
          16 (23.53 % of base) : 139234.dasm - System.Linq.Enumerable:Sum[long,long](System.ReadOnlySpan`1[long]):long (FullOpts)
          20 (21.74 % of base) : 43460.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 117803.dasm - System.Formats.Asn1.AsnDecoder:InterpretNamedBitListReversed(System.ReadOnlySpan`1[ubyte]):long (FullOpts)
          20 (21.74 % of base) : 17224.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -36 (-16.07 % of base) : 183308.dasm - System.Xml.XmlSubtreeReader:RemoveNamespace(System.String,System.String):this (FullOpts)
         -16 (-11.43 % of base) : 135795.dasm - System.Linq.Parallel.OrderPreservingPipeliningMergeHelper`2+OrderedPipeliningMergeEnumerator[int,int]:TryGetPrivateElement(int,byref):ubyte:this (FullOpts)
         -28 (-6.93 % of base) : 194874.dasm - System.Tests.ConvertToStringTests:FromString() (FullOpts)
          -4 (-6.67 % of base) : 165240.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[System.Runtime.InteropServices.NFloat,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[System.Runtime.InteropServices.NFloat],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[System.Runtime.InteropServices.NFloat]](System.ReadOnlySpan`1[System.Runtime.InteropServices.NFloat]):System.Runtime.InteropServices.NFloat (FullOpts)
         -12 (-6.25 % of base) : 25581.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MethodTypeInferrer:UpdateDependenciesAfterFix(int):this (FullOpts)
          -4 (-6.25 % of base) : 166538.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[short,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[short],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[short]](System.ReadOnlySpan`1[short]):short (FullOpts)
          -4 (-6.25 % of base) : 166613.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+AbsoluteOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 166165.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 165644.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
          -4 (-6.25 % of base) : 166498.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ushort,System.Numerics.Tensors.TensorPrimitives+SquaredOperator`1[ushort],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ushort]](System.ReadOnlySpan`1[ushort]):ushort (FullOpts)
         -24 (-6.19 % of base) : 309576.dasm - System.Threading.Tasks.Tests.ParallelForTest:InvokeZetaWorkload(int):this (FullOpts)
         -36 (-5.77 % of base) : 185807.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -12 (-5.66 % of base) : 167411.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass403_0`1[short]:<TestDivisionWithScalarByZeroException>b__0():this (FullOpts)
          -4 (-5.56 % of base) : 142968.dasm - System.Linq.SingleLinkedNode`1[int]:Fill(System.Span`1[int]):this (FullOpts)
          -4 (-5.56 % of base) : 139417.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -4 (-5.56 % of base) : 151939.dasm - System.Net.Http.HPack.Huffman:Encode(int):System.ValueTuple`2[uint,int] (FullOpts)
          -4 (-5.56 % of base) : 17077.dasm - System.Net.Http.HPack.Huffman:Encode(int):System.ValueTuple`2[uint,int] (FullOpts)
          -8 (-5.56 % of base) : 193813.dasm - System.Tests.ConvertTestBase`1+<>c__DisplayClass4_0`1[long,System.__Canon]:<VerifyFromStringWithBaseThrows>b__0():System.Object:this (FullOpts)
          -8 (-5.56 % of base) : 282712.dasm - System.Text.RegularExpressions.Match:MatchIndex(int):int:this (FullOpts)
          -8 (-5.56 % of base) : 282713.dasm - System.Text.RegularExpressions.Match:MatchLength(int):int:this (FullOpts)


realworld.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15902524 (overridden on cmd)
Total bytes of diff: 15913552 (overridden on cmd)
Total bytes of delta: 11028 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         204 : 1152.dasm (5.59 % of base)
         180 : 13171.dasm (3.15 % of base)
         116 : 1441.dasm (8.79 % of base)
          80 : 13152.dasm (4.04 % of base)
          80 : 29861.dasm (1.21 % of base)
          72 : 31439.dasm (7.96 % of base)
          72 : 16802.dasm (6.21 % of base)
          68 : 18831.dasm (1.20 % of base)
          64 : 29800.dasm (3.22 % of base)
          60 : 13174.dasm (1.86 % of base)
          60 : 14944.dasm (1.69 % of base)
          60 : 1688.dasm (6.02 % of base)
          60 : 19963.dasm (2.13 % of base)
          56 : 18670.dasm (1.98 % of base)
          56 : 12325.dasm (1.18 % of base)
          56 : 2936.dasm (0.53 % of base)
          52 : 14898.dasm (3.23 % of base)
          52 : 25247.dasm (6.63 % of base)
          52 : 1273.dasm (1.93 % of base)
          48 : 15340.dasm (1.21 % of base)

Top file improvements (bytes):
        -136 : 13053.dasm (-3.65 % of base)
         -88 : 20509.dasm (-1.13 % of base)
         -68 : 15064.dasm (-1.23 % of base)
         -68 : 4947.dasm (-7.39 % of base)
         -64 : 18677.dasm (-1.87 % of base)
         -60 : 3286.dasm (-7.94 % of base)
         -60 : 5851.dasm (-8.47 % of base)
         -56 : 18227.dasm (-1.34 % of base)
         -52 : 1466.dasm (-5.70 % of base)
         -48 : 27319.dasm (-1.17 % of base)
         -44 : 2170.dasm (-3.31 % of base)
         -44 : 1483.dasm (-5.76 % of base)
         -44 : 14840.dasm (-1.42 % of base)
         -40 : 4514.dasm (-12.35 % of base)
         -36 : 11521.dasm (-0.67 % of base)
         -36 : 28073.dasm (-1.53 % of base)
         -36 : 460.dasm (-3.42 % of base)
         -32 : 1517.dasm (-2.56 % of base)
         -32 : 4949.dasm (-8.00 % of base)
         -32 : 725.dasm (-2.76 % of base)

86 total files with Code Size differences (31 improved, 55 regressed), 20 unchanged.

Top method regressions (bytes):
         204 (5.59 % of base) : 1152.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         180 (3.15 % of base) : 13171.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         116 (8.79 % of base) : 1441.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
          80 (4.04 % of base) : 13152.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn+<>c__DisplayClass18_0`1[float]:<MakeGetter>b__0(byref):this (FullOpts)
          80 (1.21 % of base) : 29861.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          72 (6.21 % of base) : 16802.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          72 (7.96 % of base) : 31439.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          68 (1.20 % of base) : 18831.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          64 (3.22 % of base) : 29800.dasm - System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String (FullOpts)
          60 (2.13 % of base) : 19963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          60 (1.69 % of base) : 14944.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
          60 (1.86 % of base) : 13174.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
          60 (6.02 % of base) : 1688.dasm - System.Uri:CreateUriInfo(ulong):this (FullOpts)
          56 (0.53 % of base) : 2936.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
          56 (1.98 % of base) : 18670.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
          56 (1.18 % of base) : 12325.dasm - Microsoft.ML.Internal.Utilities.StreamUtils:Expand(System.String):System.String[] (FullOpts)
          52 (1.93 % of base) : 1273.dasm - DemoBenchmarks.ConvexCollisionTesterBenchmarks:Setup():this (FullOpts)
          52 (6.63 % of base) : 25247.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSet`2[int,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+IntTC]:Union(Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
          52 (3.23 % of base) : 14898.dasm - Microsoft.ML.Numeric.VectorUtils:L2DistSquared(byref,byref):float (FullOpts)
          48 (1.21 % of base) : 15340.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:ParseWarnings(System.ReadOnlyMemory`1[ushort],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]) (FullOpts)

Top method improvements (bytes):
        -136 (-3.65 % of base) : 13053.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -88 (-1.13 % of base) : 20509.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -68 (-1.23 % of base) : 15064.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
         -68 (-7.39 % of base) : 4947.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -64 (-1.87 % of base) : 18677.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
         -60 (-7.94 % of base) : 3286.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -60 (-8.47 % of base) : 5851.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -56 (-1.34 % of base) : 18227.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetWellKnownType(int):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -52 (-5.70 % of base) : 1466.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -48 (-1.17 % of base) : 27319.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -44 (-5.76 % of base) : 1483.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -44 (-3.31 % of base) : 2170.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -44 (-1.42 % of base) : 14840.dasm - System.Threading.Tasks.Parallel:Invoke(System.Threading.Tasks.ParallelOptions,System.Action[]) (FullOpts)
         -40 (-12.35 % of base) : 4514.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -36 (-1.53 % of base) : 28073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
         -36 (-0.67 % of base) : 11521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
         -36 (-3.42 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -32 (-2.56 % of base) : 1517.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact3NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact3NonconvexAccumulatedImpulses]:CopySleepingToActive(int,int,int,int,int,int,int,BepuPhysics.Bodies,BepuPhysics.Solver):this (FullOpts)
         -32 (-8.00 % of base) : 4949.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -32 (-2.76 % of base) : 725.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)

Top method regressions (percentages):
          20 (38.46 % of base) : 914.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
          20 (31.25 % of base) : 12611.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
          20 (29.41 % of base) : 15263.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (27.78 % of base) : 27644.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          20 (26.32 % of base) : 397.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (23.81 % of base) : 13102.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
          24 (23.08 % of base) : 15367.dasm - Microsoft.CodeAnalysis.MemoryExtensions:IndexOfAny(System.ReadOnlySpan`1[ushort],ushort[]):int (FullOpts)
          20 (21.74 % of base) : 15426.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          20 (21.74 % of base) : 11139.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
          20 (20.83 % of base) : 17493.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          20 (20.83 % of base) : 13226.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
          32 (19.05 % of base) : 14542.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          20 (17.86 % of base) : 1130.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          20 (17.86 % of base) : 1102.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          16 (15.38 % of base) : 15088.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)
          28 (14.58 % of base) : 5187.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
          20 (13.89 % of base) : 18190.dasm - Microsoft.CodeAnalysis.MetadataHelpers:<InferTypeArityFromMetadataName>g__tryScanArity|16_0(System.ReadOnlySpan`1[ushort]):System.Nullable`1[short] (FullOpts)
          24 (12.50 % of base) : 15609.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList+WithLotsOfChildren:CalculateOffsets(Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.GreenNode][]):int[] (FullOpts)
          12 (12.50 % of base) : 17495.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          16 (12.12 % of base) : 2694.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericHashByteArray(ubyte[]):int (FullOpts)

Top method improvements (percentages):
         -40 (-12.35 % of base) : 4514.dasm - Internal.Utilities.Text.Parsing.Implementation+AssocTable:Read(int,int):int:this (FullOpts)
         -20 (-9.80 % of base) : 14827.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper:MakeGetter(Microsoft.ML.DataViewRow,int,System.Func`2[int,ubyte],byref):System.Delegate:this (FullOpts)
         -20 (-9.43 % of base) : 5849.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:InsertionSort(System.Span`1[ushort],System.Span`1[int]) (FullOpts)
         -60 (-8.47 % of base) : 5851.dasm - System.Collections.Generic.GenericArraySortHelper`2[ushort,int]:PickPivotAndPartition(System.Span`1[ushort],System.Span`1[int]):int (FullOpts)
         -32 (-8.00 % of base) : 4949.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -60 (-7.94 % of base) : 3286.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:PickPivotAndPartition(System.Span`1[int],System.Span`1[System.__Canon]):int (FullOpts)
         -68 (-7.39 % of base) : 4947.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,int]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Span`1[int],System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)
         -16 (-7.27 % of base) : 3288.dasm - System.Collections.Generic.GenericArraySortHelper`2[int,System.__Canon]:InsertionSort(System.Span`1[int],System.Span`1[System.__Canon]) (FullOpts)
         -16 (-6.15 % of base) : 31173.dasm - System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction:Create(int,ubyte):System.Management.Automation.Interpreter.LeaveExceptionHandlerInstruction (FullOpts)
         -44 (-5.76 % of base) : 1483.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4OneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4AccumulatedImpulses]:GatherActiveConstraints(BepuPhysics.Bodies,BepuPhysics.Solver,byref,int,int,byref):this (FullOpts)
         -52 (-5.70 % of base) : 1466.dasm - BepuPhysics.Constraints.TypeProcessor`3[System.Numerics.Vector`1[int],BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:TransferConstraint(byref,int,int,BepuPhysics.Solver,BepuPhysics.Bodies,int,System.Span`1[BepuPhysics.BodyHandle],System.Span`1[int]):this (FullOpts)
         -16 (-5.33 % of base) : 986.dasm - BepuPhysics.CollisionDetection.SweepTaskRegistry:Register(BepuPhysics.CollisionDetection.SweepTask):int:this (FullOpts)
         -20 (-5.26 % of base) : 12879.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
         -16 (-4.94 % of base) : 15594.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -16 (-4.21 % of base) : 9095.dasm - System.Collections.Generic.ArraySortHelper`2[System.ValueTuple`2[int,int],int]:SwapIfGreaterWithValues(System.Span`1[System.ValueTuple`2[int,int]],System.Span`1[int],System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,int]],int,int) (FullOpts)
        -136 (-3.65 % of base) : 13053.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -24 (-3.49 % of base) : 13025.dasm - Microsoft.ML.Internal.Utilities.Utils:BuildSubsetMaps(Microsoft.ML.DataViewSchema,System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte],byref,byref) (FullOpts)
         -36 (-3.42 % of base) : 460.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
         -44 (-3.31 % of base) : 2170.dasm - System.Reflection.MethodBaseInvoker:InvokeWithOneArg(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
         -12 (-3.06 % of base) : 242.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (FullOpts)


smoke_tests.nativeaot.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3798548 (overridden on cmd)
Total bytes of diff: 3804600 (overridden on cmd)
Total bytes of delta: 6052 (0.16 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          88 : 6144.dasm (1.73 % of base)
          88 : 11952.dasm (1.80 % of base)
          88 : 14891.dasm (1.80 % of base)
          84 : 5637.dasm (6.71 % of base)
          84 : 10803.dasm (6.71 % of base)
          60 : 2008.dasm (12.00 % of base)
          60 : 14863.dasm (12.10 % of base)
          60 : 6421.dasm (12.00 % of base)
          52 : 10004.dasm (4.56 % of base)
          52 : 4644.dasm (4.41 % of base)
          48 : 15123.dasm (2.94 % of base)
          48 : 8644.dasm (2.95 % of base)
          48 : 14146.dasm (2.95 % of base)
          48 : 1936.dasm (17.65 % of base)
          48 : 6702.dasm (17.65 % of base)
          40 : 23715.dasm (1.21 % of base)
          36 : 5640.dasm (6.00 % of base)
          36 : 12502.dasm (16.07 % of base)
          36 : 2655.dasm (6.00 % of base)
          36 : 7336.dasm (16.07 % of base)

Top file improvements (bytes):
         -52 : 14719.dasm (-2.77 % of base)
         -52 : 11356.dasm (-2.78 % of base)
         -44 : 9971.dasm (-9.32 % of base)
         -44 : 9988.dasm (-9.82 % of base)
         -44 : 5120.dasm (-7.97 % of base)
         -44 : 5137.dasm (-8.66 % of base)
         -40 : 11394.dasm (-0.45 % of base)
         -40 : 6108.dasm (-1.69 % of base)
         -32 : 4865.dasm (-4.44 % of base)
         -32 : 4897.dasm (-4.60 % of base)
         -32 : 1415.dasm (-4.60 % of base)
         -32 : 1303.dasm (-7.21 % of base)
         -32 : 1468.dasm (-4.60 % of base)
         -32 : 4829.dasm (-7.21 % of base)
         -28 : 21708.dasm (-7.14 % of base)
         -24 : 13944.dasm (-2.80 % of base)
         -24 : 8247.dasm (-2.56 % of base)
         -20 : 4860.dasm (-2.86 % of base)
         -20 : 1374.dasm (-2.86 % of base)
         -16 : 18163.dasm (-9.09 % of base)

80 total files with Code Size differences (33 improved, 47 regressed), 20 unchanged.

Top method regressions (bytes):
          88 (1.73 % of base) : 6144.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          88 (1.80 % of base) : 11952.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          88 (1.80 % of base) : 14891.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
          84 (6.71 % of base) : 5637.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          84 (6.71 % of base) : 10803.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
          60 (12.00 % of base) : 2008.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.10 % of base) : 14863.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.00 % of base) : 6421.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          52 (4.56 % of base) : 10004.dasm - Internal.Reflection.Core.Execution.ExecutionDomain:GetMethod(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):System.Reflection.MethodBase (FullOpts)
          52 (4.41 % of base) : 4644.dasm - Internal.Reflection.Core.Execution.ExecutionDomain:GetMethod(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):System.Reflection.MethodBase (FullOpts)
          48 (17.65 % of base) : 1936.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          48 (17.65 % of base) : 6702.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          48 (2.94 % of base) : 15123.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          48 (2.95 % of base) : 8644.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          48 (2.95 % of base) : 14146.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          40 (1.21 % of base) : 23715.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
          36 (16.07 % of base) : 12502.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          36 (16.07 % of base) : 7336.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          36 (6.00 % of base) : 5640.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          36 (6.00 % of base) : 2655.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)

Top method improvements (bytes):
         -52 (-2.77 % of base) : 14719.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -52 (-2.78 % of base) : 11356.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -44 (-9.82 % of base) : 9988.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-8.66 % of base) : 5137.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-9.32 % of base) : 9971.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -44 (-7.97 % of base) : 5120.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -40 (-0.45 % of base) : 11394.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -40 (-1.69 % of base) : 6108.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -32 (-4.44 % of base) : 4865.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
         -32 (-4.60 % of base) : 1415.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:Add(System.__Canon,int,System.__Canon):this (FullOpts)
         -32 (-4.60 % of base) : 4897.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
         -32 (-4.60 % of base) : 1468.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:Add(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,int,System.__Canon):this (FullOpts)
         -32 (-7.21 % of base) : 1303.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -32 (-7.21 % of base) : 4829.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -28 (-7.14 % of base) : 21708.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
         -24 (-2.80 % of base) : 13944.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
         -24 (-2.56 % of base) : 8247.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
         -20 (-2.86 % of base) : 4860.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
         -20 (-2.86 % of base) : 1374.dasm - System.Collections.Generic.Dictionary`2[long,System.__Canon]:Resize(int,ubyte):this (FullOpts)
         -16 (-6.06 % of base) : 3853.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)

Top method regressions (percentages):
          20 (26.32 % of base) : 7143.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (26.32 % of base) : 2548.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          32 (19.05 % of base) : 17336.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          32 (19.05 % of base) : 5688.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
          48 (17.65 % of base) : 1936.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          48 (17.65 % of base) : 6702.dasm - Internal.NativeFormat.TypeHashingAlgorithms+HashCodeBuilder:Append(System.String):this (FullOpts)
          20 (16.67 % of base) : 16923.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
          20 (16.13 % of base) : 11636.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
          20 (16.13 % of base) : 6345.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
          36 (16.07 % of base) : 12502.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          36 (16.07 % of base) : 7336.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          16 (16.00 % of base) : 19843.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           8 (14.29 % of base) : 20159.dasm - System.DateTimeFormat:ParseRepeatPattern(System.ReadOnlySpan`1[ushort],int,ushort):int (FullOpts)
          12 (14.29 % of base) : 14075.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
          12 (14.29 % of base) : 8433.dasm - System.Globalization.CalendricalCalculationsHelper:PolynomialSum(System.ReadOnlySpan`1[double],double):double (FullOpts)
          12 (13.04 % of base) : 2362.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          12 (13.04 % of base) : 7754.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          60 (12.10 % of base) : 14863.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.00 % of base) : 2008.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          60 (12.00 % of base) : 6421.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)

Top method improvements (percentages):
         -44 (-9.82 % of base) : 9988.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-9.32 % of base) : 9971.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -16 (-9.09 % of base) : 18204.dasm - System.Numerics.Vector:GreaterThanAny[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 18203.dasm - System.Numerics.Vector:LessThanOrEqualAll[ushort](System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 20817.dasm - System.Numerics.Vector`1[ushort]:op_Inequality(System.Numerics.Vector`1[ushort],System.Numerics.Vector`1[ushort]):ubyte (FullOpts)
         -16 (-9.09 % of base) : 18163.dasm - System.Runtime.Intrinsics.Vector64:GreaterThanAny[ushort](System.Runtime.Intrinsics.Vector64`1[ushort],System.Runtime.Intrinsics.Vector64`1[ushort]):ubyte (FullOpts)
         -44 (-8.66 % of base) : 5137.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
         -44 (-7.97 % of base) : 5120.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -12 (-7.50 % of base) : 12959.dasm - System.Dynamic.Utils.TypeExtensions:MatchesArgumentTypes(System.Reflection.MethodInfo,System.Type[]):ubyte (FullOpts)
          -8 (-7.41 % of base) : 2240.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
          -8 (-7.41 % of base) : 7114.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
         -32 (-7.21 % of base) : 1303.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -32 (-7.21 % of base) : 4829.dasm - System.Text.EncodingTable:GetCodePageDataItem(int):System.Text.CodePageDataItem (FullOpts)
         -28 (-7.14 % of base) : 21708.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
          -4 (-6.67 % of base) : 15818.dasm - System.Globalization.CharUnicodeInfo:ToLower(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 18770.dasm - System.Globalization.CharUnicodeInfo:ToUpper(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 15975.dasm - System.Globalization.InvariantModeCasing:ToLower(ushort):ushort (FullOpts)
          -4 (-6.67 % of base) : 19191.dasm - System.Globalization.InvariantModeCasing:ToUpper(ushort):ushort (FullOpts)
         -16 (-6.06 % of base) : 3853.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
         -16 (-6.06 % of base) : 2219.dasm - System.Boolean:TrimWhiteSpaceAndNull(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)



windows x64

Diffs are based on 2,510,841 contexts (997,391 MinOpts, 1,513,450 FullOpts).

MISSED contexts: base: 1,370 (0.05%), diff: 1,371 (0.05%)

Overall (-20,210 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,016,272 +5,893
benchmarks.run.windows.x64.checked.mch 8,741,804 -2,717
benchmarks.run_pgo.windows.x64.checked.mch 36,134,420 -2,823
benchmarks.run_tiered.windows.x64.checked.mch 12,416,717 -4,767
coreclr_tests.run.windows.x64.checked.mch 393,035,946 -72,969
libraries.crossgen2.windows.x64.checked.mch 39,485,796 -1,523
libraries.pmi.windows.x64.checked.mch 61,660,326 -1,714
libraries_tests.run.windows.x64.Release.mch 280,853,081 +65,922
librariestestsnotieredcompilation.run.windows.x64.Release.mch 137,059,674 -5,007
realworld.run.windows.x64.checked.mch 14,130,524 +1,107
smoke_tests.nativeaot.windows.x64.checked.mch 4,880,142 -1,612

FullOpts (-20,210 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,525,223 +5,893
benchmarks.run.windows.x64.checked.mch 8,741,441 -2,717
benchmarks.run_pgo.windows.x64.checked.mch 21,963,764 -2,823
benchmarks.run_tiered.windows.x64.checked.mch 3,317,478 -4,767
coreclr_tests.run.windows.x64.checked.mch 120,247,366 -72,969
libraries.crossgen2.windows.x64.checked.mch 39,484,609 -1,523
libraries.pmi.windows.x64.checked.mch 61,546,805 -1,714
libraries_tests.run.windows.x64.Release.mch 104,994,847 +65,922
librariestestsnotieredcompilation.run.windows.x64.Release.mch 126,440,568 -5,007
realworld.run.windows.x64.checked.mch 13,743,915 +1,107
smoke_tests.nativeaot.windows.x64.checked.mch 4,879,195 -1,612

Example diffs

aspnet.run.windows.x64.checked.mch

-12 (-12.90%) : 35709.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)

@@ -11,8 +11,8 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 92.74) ref -> rcx class-hnd single-def <System.String>
-; V01 arg1 [V01,T04] ( 3, 10.97) int -> rdx single-def -; V02 loc0 [V02,T00] ( 6,467.95) int -> [rsp+0x64] tier0-frame
+; V01 arg1 [V01,T05] ( 3, 10.97) int -> rdx single-def +; V02 loc0 [V02,T04] ( 3, 18.95) int -> [rsp+0x64] tier0-frame
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> @@ -34,7 +34,8 @@ ;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP ;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V24 cse0 [V24,T02] ( 3,190.74) int -> rax hoist "CSE - aggressive"
+; V24 tmp21 [V24,T00] ( 7,468.95) long -> rax "Widened primary induction variable" +; V25 cse0 [V25,T02] ( 3,190.74) int -> r8 hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -45,30 +46,27 @@ G_M49336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edx, dword ptr [rsp+0xB8] ;; size=19 bbWeight=1 PerfScore 4.25 G_M49336_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rcx+0x08]
+ mov eax, dword ptr [rsp+0x64] + mov r8d, dword ptr [rcx+0x08]
jmp SHORT G_M49336_IG04
- ;; size=5 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 5.00
G_M49336_IG03: ; bbWeight=89.74, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp r8d, eax
+ cmp eax, r8d
jae SHORT G_M49336_IG07
- mov r10d, r8d - movzx r10, word ptr [rcx+2*r10+0x0C]
+ movzx r10, word ptr [rcx+2*rax+0x0C]
mov r9, 0xD1FFAB1E ; static handle test byte ptr [r10+r9], 8 je SHORT G_M49336_IG05
- inc r8d - mov dword ptr [rsp+0x64], r8d - ;; size=39 bbWeight=89.74 PerfScore 807.69
+ inc eax + ;; size=30 bbWeight=89.74 PerfScore 695.51
G_M49336_IG04: ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, dword ptr [rsp+0x64] - cmp eax, r8d
+ cmp r8d, eax
jg SHORT G_M49336_IG03
- ;; size=10 bbWeight=100 PerfScore 225.00
+ ;; size=5 bbWeight=100 PerfScore 125.00
G_M49336_IG05: ; bbWeight=8.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx]
- mov eax, r8d
sub eax, edx
- ;; size=5 bbWeight=8.97 PerfScore 4.49
+ ;; size=2 bbWeight=8.97 PerfScore 2.24
G_M49336_IG06: ; bbWeight=8.97, epilog, nogc, extend add rsp, 160 pop rbp @@ -80,7 +78,7 @@ G_M49336_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 93, prolog size 19, PerfScore 1061.13, instruction count 24, allocated bytes for code 93 (MethodHash=3f483f47) for method System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
+; Total bytes of code 81, prolog size 19, PerfScore 847.71, instruction count 21, allocated bytes for code 81 (MethodHash=3f483f47) for method System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
; ============================================================ Unwind Info:

-27 (-10.93%) : 34958.dasm - System.Linq.OrderedEnumerable1[System.__Canon]:Fill(System.__Canon[],System.Span1[System.__Canon]):this (Tier1-OSR)

@@ -11,10 +11,10 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 6,173.43) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 6,173.43) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T07] ( 5, 9 ) byref -> r8 ld-addr-op single-def
-; V03 loc0 [V03,T05] ( 5,111.06) ref -> rsi class-hnd exact <int[]> -; V04 loc1 [V04,T01] ( 13,455.96) int -> [rsp+0xA4] tier0-frame
+; V03 loc0 [V03,T04] ( 5,111.06) ref -> rsi class-hnd exact <int[]> +; V04 loc1 [V04,T06] ( 4, 38.90) int -> [rsp+0x94] tier0-frame
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.EnumerableSorter`1[System.__Canon]> @@ -23,57 +23,55 @@ ;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <int[]> ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp8 [V13,T06] ( 3, 86.71) byref -> rdi single-def "V02.[000..008)" -; V14 tmp9 [V14,T03] ( 8,211.20) int -> rbp "V02.[008..012)" -; V15 tmp10 [V15,T00] ( 6,514.29) int -> r15 "index expr" -; V16 cse0 [V16,T02] ( 3,254.57) long -> [rsp+0x30] spill-single-def "CSE - aggressive" -; V17 cse1 [V17,T08] ( 3, 2.57) long -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V13 tmp8 [V13,T05] ( 3, 86.71) byref -> rdi single-def "V02.[000..008)" +; V14 tmp9 [V14,T02] ( 8,211.20) int -> rbp "V02.[008..012)" +; V15 tmp10 [V15,T01] ( 6,514.29) int -> r15 "index expr" +; V16 tmp11 [V16,T08] ( 8, 6.12) long -> r14 "Widened primary induction variable" +; V17 tmp12 [V17,T00] ( 7,521.39) long -> r14 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M30087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 104 - mov qword ptr [rsp+0xE8], r15 - mov qword ptr [rsp+0xE0], r14 - mov qword ptr [rsp+0xD8], rdi - mov qword ptr [rsp+0xD0], rsi - mov qword ptr [rsp+0xC8], rbx - mov rbx, gword ptr [rsp+0x108]
+ sub rsp, 88 + mov qword ptr [rsp+0xD8], r15 + mov qword ptr [rsp+0xD0], r14 + mov qword ptr [rsp+0xC8], rdi + mov qword ptr [rsp+0xC0], rsi + mov qword ptr [rsp+0xB8], rbx + mov rbx, gword ptr [rsp+0xF8]
; gcrRegs +[rbx]
- mov r8, bword ptr [rsp+0x110]
+ mov r8, bword ptr [rsp+0x100]
; byrRegs +[r8]
- mov rsi, gword ptr [rsp+0xA8]
+ mov rsi, gword ptr [rsp+0x98]
; gcrRegs +[rsi] ;; size=68 bbWeight=1 PerfScore 11.25 G_M30087_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 {r8}, byref, isz mov rdi, bword ptr [r8] ; byrRegs +[rdi] mov ebp, dword ptr [r8+0x08]
- mov r14d, dword ptr [rsp+0xA4] - cmp r14d, ebp - jge SHORT G_M30087_IG05 - ;; size=20 bbWeight=1 PerfScore 6.25
+ mov eax, dword ptr [rsp+0x94] + cmp eax, ebp + jge SHORT G_M30087_IG08 + ;; size=18 bbWeight=1 PerfScore 6.25
G_M30087_IG03: ; bbWeight=12.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs -[r8] test rsi, rsi je SHORT G_M30087_IG06
- mov ecx, r14d
+ mov ecx, eax
or ecx, ebp jl SHORT G_M30087_IG06 cmp dword ptr [rsi+0x08], ebp jl SHORT G_M30087_IG06
- ;; size=17 bbWeight=12.24 PerfScore 82.65
+ mov r14d, eax + ;; size=19 bbWeight=12.24 PerfScore 85.71
G_M30087_IG04: ; bbWeight=84.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz cmp r14d, ebp
- jae G_M30087_IG08 - mov ecx, r14d - mov qword ptr [rsp+0x30], rcx - lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09 + lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
- mov rdx, qword ptr [rsp+0x30] - mov r15d, dword ptr [rsi+4*rdx+0x10]
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d mov rdx, gword ptr [rbx+8*rdx+0x10] ; gcrRegs +[rdx] @@ -83,34 +81,27 @@ G_M30087_IG04: ; bbWeight=84.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 inc r14d cmp r14d, ebp jl SHORT G_M30087_IG04
- ;; size=58 bbWeight=84.86 PerfScore 1251.64 -G_M30087_IG05: ; bbWeight=12.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=41 bbWeight=84.86 PerfScore 1060.71 +G_M30087_IG05: ; bbWeight=12.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- add rsp, 200 - pop rbx - pop rsi - pop rdi - pop r14 - pop r15 - pop rbp - ret - ;; size=16 bbWeight=12.24 PerfScore 52.04 -G_M30087_IG06: ; bbWeight=0.86, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ jmp SHORT G_M30087_IG08 + ;; size=2 bbWeight=12.24 PerfScore 24.49 +G_M30087_IG06: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx rsi] ; byrRegs +[rdi]
+ mov r14d, eax + ;; size=3 bbWeight=0.12 PerfScore 0.03 +G_M30087_IG07: ; bbWeight=0.86, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae SHORT G_M30087_IG08 - mov ecx, r14d - mov qword ptr [rsp+0x28], rcx - lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09 + lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx] cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M30087_IG08 - mov rdx, qword ptr [rsp+0x28] - mov r15d, dword ptr [rsi+4*rdx+0x10]
+ jae SHORT G_M30087_IG09 + mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d mov rdx, gword ptr [rbx+8*rdx+0x10] ; gcrRegs +[rdx] @@ -119,20 +110,27 @@ G_M30087_IG06: ; bbWeight=0.86, gcVars=0000000000000000 {}, gcrefRegs=004 ; byrRegs -[rcx] inc r14d cmp r14d, ebp
- jl SHORT G_M30087_IG06 - ;; size=60 bbWeight=0.86 PerfScore 16.07 -G_M30087_IG07: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M30087_IG07 + ;; size=47 bbWeight=0.86 PerfScore 14.14 +G_M30087_IG08: ; bbWeight=10.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M30087_IG05 - ;; size=2 bbWeight=0.43 PerfScore 0.86 -G_M30087_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add rsp, 184 + pop rbx + pop rsi + pop rdi + pop r14 + pop r15 + pop rbp + ret + ;; size=16 bbWeight=10.71 PerfScore 45.54 +G_M30087_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 68, PerfScore 1420.77, instruction count 64, allocated bytes for code 247 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
+; Total bytes of code 220, prolog size 68, PerfScore 1248.13, instruction count 60, allocated bytes for code 220 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -146,16 +144,16 @@ Unwind Info: FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x2C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ Scaled Small Offset: 23 * 8 = 184 = 0x000B8
CodeOffset: 0x24 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0
+ Scaled Small Offset: 24 * 8 = 192 = 0x000C0
CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
- Scaled Small Offset: 28 * 8 = 224 = 0x000E0
+ Scaled Small Offset: 26 * 8 = 208 = 0x000D0
CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
- Scaled Small Offset: 29 * 8 = 232 = 0x000E8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
+ Scaled Small Offset: 27 * 8 = 216 = 0x000D8 + CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small Size: 17 * 8 = 136 = 0x00088 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-27 (-10.93%) : 69155.dasm - System.Linq.OrderedEnumerable1[System.__Canon]:Fill(System.__Canon[],System.Span1[System.__Canon]):this (Tier1-OSR)

@@ -11,10 +11,10 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
-; V01 arg1 [V01,T04] ( 6,170 ) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 6,170 ) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T07] ( 5, 9 ) byref -> r8 ld-addr-op single-def
-; V03 loc0 [V03,T05] ( 5,111.72) ref -> rsi class-hnd exact <int[]> -; V04 loc1 [V04,T01] ( 13,450.28) int -> [rsp+0xA4] tier0-frame
+; V03 loc0 [V03,T04] ( 5,111.72) ref -> rsi class-hnd exact <int[]> +; V04 loc1 [V04,T06] ( 4, 43.01) int -> [rsp+0x94] tier0-frame
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]> ;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.EnumerableSorter`1[System.__Canon]> @@ -23,57 +23,55 @@ ;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <int[]> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <int[]> ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V13 tmp8 [V13,T06] ( 3, 85 ) byref -> rdi single-def "V02.[000..008)" -; V14 tmp9 [V14,T03] ( 8,211.88) int -> rbp "V02.[008..012)" -; V15 tmp10 [V15,T00] ( 6,504 ) int -> r15 "index expr" -; V16 cse0 [V16,T02] ( 3,249.48) long -> [rsp+0x30] spill-single-def "CSE - aggressive" -; V17 cse1 [V17,T08] ( 3, 2.52) long -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V13 tmp8 [V13,T05] ( 3, 85 ) byref -> rdi single-def "V02.[000..008)" +; V14 tmp9 [V14,T02] ( 8,211.88) int -> rbp "V02.[008..012)" +; V15 tmp10 [V15,T01] ( 6,504 ) int -> r15 "index expr" +; V16 tmp11 [V16,T08] ( 8, 6.01) long -> r14 "Widened primary induction variable" +; V17 tmp12 [V17,T00] ( 7,512.40) long -> r14 "Widened primary induction variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M30087_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 104 - mov qword ptr [rsp+0xE8], r15 - mov qword ptr [rsp+0xE0], r14 - mov qword ptr [rsp+0xD8], rdi - mov qword ptr [rsp+0xD0], rsi - mov qword ptr [rsp+0xC8], rbx - mov rbx, gword ptr [rsp+0x108]
+ sub rsp, 88 + mov qword ptr [rsp+0xD8], r15 + mov qword ptr [rsp+0xD0], r14 + mov qword ptr [rsp+0xC8], rdi + mov qword ptr [rsp+0xC0], rsi + mov qword ptr [rsp+0xB8], rbx + mov rbx, gword ptr [rsp+0xF8]
; gcrRegs +[rbx]
- mov r8, bword ptr [rsp+0x110]
+ mov r8, bword ptr [rsp+0x100]
; byrRegs +[r8]
- mov rsi, gword ptr [rsp+0xA8]
+ mov rsi, gword ptr [rsp+0x98]
; gcrRegs +[rsi] ;; size=68 bbWeight=1 PerfScore 11.25 G_M30087_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0100 {r8}, byref, isz mov rdi, bword ptr [r8] ; byrRegs +[rdi] mov ebp, dword ptr [r8+0x08]
- mov r14d, dword ptr [rsp+0xA4] - cmp r14d, ebp - jge SHORT G_M30087_IG05 - ;; size=20 bbWeight=1 PerfScore 6.25
+ mov eax, dword ptr [rsp+0x94] + cmp eax, ebp + jge SHORT G_M30087_IG08 + ;; size=18 bbWeight=1 PerfScore 6.25
G_M30087_IG03: ; bbWeight=13.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs -[r8] test rsi, rsi je SHORT G_M30087_IG06
- mov ecx, r14d
+ mov ecx, eax
or ecx, ebp jl SHORT G_M30087_IG06 cmp dword ptr [rsi+0x08], ebp jl SHORT G_M30087_IG06
- ;; size=17 bbWeight=13.44 PerfScore 90.72
+ mov r14d, eax + ;; size=19 bbWeight=13.44 PerfScore 94.08
G_M30087_IG04: ; bbWeight=83.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz cmp r14d, ebp
- jae G_M30087_IG08 - mov ecx, r14d - mov qword ptr [rsp+0x30], rcx - lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09 + lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx]
- mov rdx, qword ptr [rsp+0x30] - mov r15d, dword ptr [rsi+4*rdx+0x10]
+ mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d mov rdx, gword ptr [rbx+8*rdx+0x10] ; gcrRegs +[rdx] @@ -83,34 +81,27 @@ G_M30087_IG04: ; bbWeight=83.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 inc r14d cmp r14d, ebp jl SHORT G_M30087_IG04
- ;; size=58 bbWeight=83.16 PerfScore 1226.61 -G_M30087_IG05: ; bbWeight=13.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=41 bbWeight=83.16 PerfScore 1039.50 +G_M30087_IG05: ; bbWeight=13.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- add rsp, 200 - pop rbx - pop rsi - pop rdi - pop r14 - pop r15 - pop rbp - ret - ;; size=16 bbWeight=13.44 PerfScore 57.12 -G_M30087_IG06: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ jmp SHORT G_M30087_IG08 + ;; size=2 bbWeight=13.44 PerfScore 26.88 +G_M30087_IG06: ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rbx rsi] ; byrRegs +[rdi]
+ mov r14d, eax + ;; size=3 bbWeight=0.13 PerfScore 0.03 +G_M30087_IG07: ; bbWeight=0.84, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, ebp
- jae SHORT G_M30087_IG08 - mov ecx, r14d - mov qword ptr [rsp+0x28], rcx - lea rcx, bword ptr [rdi+8*rcx]
+ jae SHORT G_M30087_IG09 + lea rcx, bword ptr [rdi+8*r14]
; byrRegs +[rcx] cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M30087_IG08 - mov rdx, qword ptr [rsp+0x28] - mov r15d, dword ptr [rsi+4*rdx+0x10]
+ jae SHORT G_M30087_IG09 + mov r15d, dword ptr [rsi+4*r14+0x10]
cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M30087_IG08
+ jae SHORT G_M30087_IG09
mov edx, r15d mov rdx, gword ptr [rbx+8*rdx+0x10] ; gcrRegs +[rdx] @@ -119,20 +110,27 @@ G_M30087_IG06: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=004 ; byrRegs -[rcx] inc r14d cmp r14d, ebp
- jl SHORT G_M30087_IG06 - ;; size=60 bbWeight=0.84 PerfScore 15.75 -G_M30087_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M30087_IG07 + ;; size=47 bbWeight=0.84 PerfScore 13.86 +G_M30087_IG08: ; bbWeight=12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi] ; byrRegs -[rdi]
- jmp SHORT G_M30087_IG05 - ;; size=2 bbWeight=0.42 PerfScore 0.84 -G_M30087_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add rsp, 184 + pop rbx + pop rsi + pop rdi + pop r14 + pop r15 + pop rbp + ret + ;; size=16 bbWeight=12 PerfScore 51.00 +G_M30087_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 68, PerfScore 1408.54, instruction count 64, allocated bytes for code 247 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
+; Total bytes of code 220, prolog size 68, PerfScore 1242.85, instruction count 60, allocated bytes for code 220 (MethodHash=67d28a78) for method System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -146,16 +144,16 @@ Unwind Info: FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : CodeOffset: 0x2C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ Scaled Small Offset: 23 * 8 = 184 = 0x000B8
CodeOffset: 0x24 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
- Scaled Small Offset: 26 * 8 = 208 = 0x000D0
+ Scaled Small Offset: 24 * 8 = 192 = 0x000C0
CodeOffset: 0x1C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
- Scaled Small Offset: 27 * 8 = 216 = 0x000D8
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14)
- Scaled Small Offset: 28 * 8 = 224 = 0x000E0
+ Scaled Small Offset: 26 * 8 = 208 = 0x000D0
CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
- Scaled Small Offset: 29 * 8 = 232 = 0x000E8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
+ Scaled Small Offset: 27 * 8 = 216 = 0x000D8 + CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small Size: 17 * 8 = 136 = 0x00088 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+9 (+15.00%) : 114077.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -10,39 +10,41 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M16195_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M16195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M16195_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov rcx, gword ptr [rcx+0x10]
- xor eax, eax - mov r8d, dword ptr [rcx+0x08] - test r8d, r8d
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M16195_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d + ;; size=14 bbWeight=1 PerfScore 5.50
G_M16195_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax - cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M16195_IG05
- inc eax - cmp r8d, eax
+ inc r8d + cmp eax, r8d
jg SHORT G_M16195_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M16195_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax + jae SHORT G_M16195_IG07 + mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -50,13 +52,18 @@ G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M16195_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M16195_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info:

+9 (+15.00%) : 127141.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (FullOpts)

@@ -10,39 +10,41 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M16195_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M16195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M16195_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov rcx, gword ptr [rcx+0x10]
- xor eax, eax - mov r8d, dword ptr [rcx+0x08] - test r8d, r8d
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M16195_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d + ;; size=14 bbWeight=1 PerfScore 5.50
G_M16195_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax - cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M16195_IG05
- inc eax - cmp r8d, eax
+ inc r8d + cmp eax, r8d
jg SHORT G_M16195_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M16195_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax + jae SHORT G_M16195_IG07 + mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -50,13 +52,18 @@ G_M16195_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M16195_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M16195_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=a920c0bc) for method OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
; ============================================================ Unwind Info:

+10 (+15.38%) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)

@@ -11,10 +11,10 @@ ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 5, 5.03) int -> rsi
+; V03 loc1 [V03,T05] ( 3, 3 ) int -> rcx
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T05] ( 3, 3.01) int -> rdi "CSE - aggressive" -; V06 cse1 [V06,T04] ( 3, 3.02) long -> rcx "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 6.03) long -> rdi "Widened primary induction variable" +; V06 cse0 [V06,T04] ( 4, 4.01) int -> rsi "CSE - aggressive"
; ; Lcl frame size = 32 @@ -28,25 +28,27 @@ G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ; gcrRegs +[rcx rdx] mov rbx, gword ptr [rcx+0x08] ; gcrRegs +[rbx]
- xor esi, esi - mov edi, dword ptr [rbx+0x08] - test edi, edi
+ mov esi, dword ptr [rbx+0x08] + test esi, esi
jle SHORT G_M19580_IG08
+ xor edi, edi
;; size=13 bbWeight=1 PerfScore 5.50 G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx]
- mov ecx, esi - cmp gword ptr [rbx+8*rcx+0x10], 0
+ cmp gword ptr [rbx+8*rdi+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.01 PerfScore 4.28 -G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.01 PerfScore 4.03 +G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + mov ecx, edi + cmp ecx, esi + jae SHORT G_M19580_IG07
lea rcx, bword ptr [rbx+8*rcx+0x10] ; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx rbx] ; byrRegs -[rcx] nop
- ;; size=11 bbWeight=1 PerfScore 2.25
+ ;; size=17 bbWeight=1 PerfScore 3.75
G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 32 pop rbx @@ -56,15 +58,20 @@ G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend ;; size=8 bbWeight=1 PerfScore 2.75 G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdx rbx]
- inc esi - cmp edi, esi
+ inc edi + cmp esi, edi
jle SHORT G_M19580_IG08
- ;; size=6 bbWeight=1.01 PerfScore 1.51 -G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M19580_IG03
- ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=1.01 PerfScore 3.53 +G_M19580_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rbx]
+ call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M19580_IG09: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi @@ -72,7 +79,7 @@ G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 65, prolog size 7, PerfScore 20.55, instruction count 29, allocated bytes for code 65 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 75, prolog size 7, PerfScore 22.81, instruction count 33, allocated bytes for code 75 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-26 (-14.77%) : 15892.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)

@@ -10,110 +10,107 @@ ; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]> ; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8 ; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx -; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx +;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative" -; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative" -; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive" -; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive" -; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative" +; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative" +; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative" +; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative" +; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08] lea edx, [rax-0x01] ;; size=6 bbWeight=1 PerfScore 2.50
-G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M37703_IG12 - ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13 + ;; size=7 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, edx jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d + ;; size=7 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi
+ jae SHORT G_M37703_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx
jle SHORT G_M37703_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx jl SHORT G_M37703_IG05 ;; size=8 bbWeight=15.84 PerfScore 23.76 G_M37703_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r10d, r10d + ;; size=3 bbWeight=0.04 PerfScore 0.01 +G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14 - mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG15 + mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov esi, r11d - mov esi, dword ptr [rcx+4*rsi+0x10] - cmp r9d, esi - jle SHORT G_M37703_IG11 - ;; size=34 bbWeight=0.16 PerfScore 1.40 -G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov r10d, r11d - mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M37703_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M37703_IG12 + ;; size=29 bbWeight=0.16 PerfScore 1.32 +G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22 -G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18 +G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx test r8d, r8d
- jne G_M37703_IG03 - ;; size=11 bbWeight=8 PerfScore 12.00 -G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03 + ;; size=7 bbWeight=8 PerfScore 12.00 +G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75 +G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -121,11 +118,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-24 (-11.82%) : 19209.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,25 +22,25 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx] mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] @@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10] movsxd rdx, edi mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi + ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rdx, gword ptr [rbx+0x10] ; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12 mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx ; gcrRegs +[rcx] mov eax, esi @@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, rbp ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbp] +[rcx] cmp dword ptr [rcx], ecx ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rcx] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -160,14 +155,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

-6 (-10.00%) : 17145.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (FullOpts)

@@ -8,15 +8,16 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]>
+; V00 this [V00,T04] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]>
; V01 arg1 [V01,T02] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T01] ( 5, 17 ) int -> r8 -; V03 loc1 [V03,T00] ( 5, 17 ) ref -> r10 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T06] ( 0, 0 ) int -> zero-ref +; V03 loc1 [V03,T00] ( 5, 17 ) ref -> r8 class-hnd <System.Linq.SingleLinkedNode`1[int]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T05] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp3 [V07,T04] ( 3, 6 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T03] ( 3, 6 ) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
+; V09 tmp5 [V09,T01] ( 5, 17 ) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -30,26 +31,25 @@ G_M40341_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, ; byrRegs +[rax] mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r8d, edx - mov r10, rcx - ; gcrRegs +[r10]
+ mov r8, rcx + ; gcrRegs +[r8]
test rcx, rcx je SHORT G_M40341_IG04
- ;; size=17 bbWeight=1 PerfScore 5.75 -G_M40341_IG03: ; bbWeight=4, gcrefRegs=0400 {r10}, byrefRegs=0001 {rax}, byref, isz
+ mov ecx, edx
; gcrRegs -[rcx]
- dec r8d - cmp r8d, edx
+ ;; size=16 bbWeight=1 PerfScore 5.75 +G_M40341_IG03: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref, isz + dec ecx + cmp ecx, edx
jae SHORT G_M40341_IG05
- mov ecx, r8d - mov r9d, dword ptr [r10+0x10] - mov dword ptr [rax+4*rcx], r9d - mov r10, gword ptr [r10+0x08] - test r10, r10
+ mov r10d, dword ptr [r8+0x10] + mov dword ptr [rax+4*rcx], r10d + mov r8, gword ptr [r8+0x08] + test r8, r8
jne SHORT G_M40341_IG03
- ;; size=28 bbWeight=4 PerfScore 32.00
+ ;; size=23 bbWeight=4 PerfScore 31.00
G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r10]
+ ; gcrRegs -[r8]
; byrRegs -[rax] add rsp, 40 ret @@ -60,7 +60,7 @@ G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 39.25, instruction count 20, allocated bytes for code 60 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
+; Total bytes of code 54, prolog size 4, PerfScore 38.25, instruction count 19, allocated bytes for code 54 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
; ============================================================ Unwind Info:

+11 (+25.58%) : 25750.dasm - System.Collections.IterateFor`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)

@@ -8,52 +8,63 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]> -; V01 loc0 [V01,T02] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Collections.IterateFor`1[System.__Canon]> +; V01 loc0 [V01,T03] ( 3, 6 ) ref -> rax ld-addr-op class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+;* V03 loc2 [V03,T08] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T03] ( 3, 6 ) ref -> rdx single-def "field V02.array (fldOffset=0x0)" P-INDEP -;* V08 cse0 [V08,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V09 cse1 [V09,T04] ( 3, 6 ) int -> r10 "CSE - aggressive" -;* V10 rat0 [V10,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" -;* V11 rat1 [V11,T07] ( 0, 0 ) long -> zero-ref "runtime lookup" -;* V12 rat2 [V12,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> rcx single-def "field V02.array (fldOffset=0x0)" P-INDEP +; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable" +;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V10 cse1 [V10,T01] ( 4, 10 ) int -> rdx "CSE - aggressive" +;* V11 rat0 [V11,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V13 rat2 [V13,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M3722_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40 - ;; size=4 bbWeight=1 PerfScore 0.25 -G_M3722_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx]
+ push rbx + sub rsp, 32 + mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M3722_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rax, rax ; gcrRegs +[rax]
- mov rdx, gword ptr [rcx+0x38] - ; gcrRegs +[rdx] - xor r8d, r8d - mov r10d, dword ptr [rdx+0x08] - test r10d, r10d
+ mov rcx, gword ptr [rbx+0x38] + ; gcrRegs +[rcx] + mov edx, dword ptr [rcx+0x08] + test edx, edx
jle SHORT G_M3722_IG04
- ;; size=18 bbWeight=1 PerfScore 5.75 -G_M3722_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ xor r8d, r8d + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M3722_IG03: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov eax, r8d - mov rax, gword ptr [rdx+8*rax+0x10]
+ cmp r8d, edx + jae SHORT G_M3722_IG05 + mov rax, gword ptr [rcx+8*r8+0x10]
; gcrRegs +[rax] inc r8d
- cmp r10d, r8d
+ cmp edx, r8d
jg SHORT G_M3722_IG03
- ;; size=16 bbWeight=4 PerfScore 15.00 -G_M3722_IG04: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdx] - add rsp, 40
+ ;; size=18 bbWeight=4 PerfScore 19.00 +G_M3722_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx] + add rsp, 32 + pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75 +G_M3722_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 22.25, instruction count 14, allocated bytes for code 43 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+; Total bytes of code 54, prolog size 8, PerfScore 28.00, instruction count 20, allocated bytes for code 54 (MethodHash=877ef175) for method System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,9 +72,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+13 (+27.08%) : 23431.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx -; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def +; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8 +;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,30 +28,37 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rax] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d test ecx, ecx jle SHORT G_M44428_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d + ;; size=18 bbWeight=1 PerfScore 6.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10] - xor edx, r10d - movzx rdx, dl - inc r8d - cmp r8d, ecx
+ cmp r10d, edx + jae SHORT G_M44428_IG06 + movzx r9, byte ptr [rax+r10] + xor r8d, r9d + movzx r8, r8b + inc r10d + cmp r10d, ecx
jl SHORT G_M44428_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax]
- mov eax, edx - ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25
G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+13 (+27.08%) : 25567.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx -; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def +; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8 +;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,30 +28,37 @@ G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rax] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d test ecx, ecx jle SHORT G_M31628_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d + ;; size=18 bbWeight=1 PerfScore 6.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10] - xor edx, r10d - movzx rdx, dl - inc r8d - cmp r8d, ecx
+ cmp r10d, edx + jae SHORT G_M31628_IG06 + movzx r9, byte ptr [rax+r10] + xor r8d, r9d + movzx r8, r8b + inc r10d + cmp r10d, ecx
jl SHORT G_M31628_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax]
- mov eax, edx - ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25
G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-41 (-16.94%) : 102719.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)

@@ -10,108 +10,103 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 17,202.32) ref -> rcx class-hnd single-def <int[]>
-; V01 loc0 [V01,T07] ( 1, 0.02) int -> r8 -; V02 loc1 [V02,T04] ( 8,100.14) int -> rdx -; V03 loc2 [V03,T00] ( 16,401.14) int -> rax -; V04 loc3 [V04,T06] ( 4, 0.16) int -> r11
+; V01 loc0 [V01,T09] ( 1, 0.02) int -> r8 +; V02 loc1 [V02,T05] ( 1, 1 ) int -> rax +; V03 loc2 [V03,T08] ( 5, 0.14) int -> rdx +; V04 loc3 [V04,T07] ( 4, 0.16) int -> r9
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 4, 0.32) int -> rbx "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T02] ( 6,101.02) int -> r10 hoist multi-def "CSE - aggressive" -; V08 cse1 [V08,T03] ( 8,100.22) long -> r9 hoist multi-def "CSE - aggressive"
+; V06 tmp1 [V06,T06] ( 4, 0.32) int -> r11 "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T02] ( 13,201.20) long -> rax "Widened primary induction variable" +; V08 tmp3 [V08,T04] ( 8, 5.00) long -> rdx "Widened primary induction variable" +; V09 tmp4 [V09,T00] ( 7,396.16) long -> rdx "Widened primary induction variable" +; V10 cse0 [V10,T03] ( 6,101.02) int -> r10 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 40 G_M35926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56 - mov qword ptr [rsp+0xB8], rsi - mov qword ptr [rsp+0xB0], rbx - mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40 + mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84] - mov edx, dword ptr [rsp+0x80] - mov eax, dword ptr [rsp+0x7C] - ;; size=47 bbWeight=1 PerfScore 10.25
+ mov r8d, dword ptr [rsp+0x74] + mov eax, dword ptr [rsp+0x70] + mov edx, dword ptr [rsp+0x6C] + ;; size=25 bbWeight=1 PerfScore 8.25
G_M35926_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov eax, eax
jmp SHORT G_M35926_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=4 bbWeight=1 PerfScore 2.25
G_M35926_IG03: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov eax, edx
+ mov edx, eax
;; size=2 bbWeight=0.02 PerfScore 0.00
-G_M35926_IG04: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - cmp eax, 0x1D4C - jg G_M35926_IG14 - ;; size=11 bbWeight=0.02 PerfScore 0.02
+G_M35926_IG04: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp edx, 0x1D4C + jg SHORT G_M35926_IG14 + ;; size=8 bbWeight=0.02 PerfScore 0.02
G_M35926_IG05: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz test rcx, rcx je SHORT G_M35926_IG11
- test eax, eax
+ test edx, edx
jl SHORT G_M35926_IG11 mov r10d, dword ptr [rcx+0x08] cmp r10d, 0x1D4C jle SHORT G_M35926_IG11 ;; size=22 bbWeight=0.02 PerfScore 0.11 G_M35926_IG06: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r9d, edx - ;; size=3 bbWeight=0.08 PerfScore 0.02
+ mov edx, edx + ;; size=2 bbWeight=0.08 PerfScore 0.02
G_M35926_IG07: ; bbWeight=98.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d - jae G_M35926_IG16 - mov r11d, dword ptr [rcx+4*r9+0x10] - mov ebx, eax - cmp r11d, dword ptr [rcx+4*rbx+0x10]
+ cmp eax, r10d + jae SHORT G_M35926_IG16 + mov r9d, dword ptr [rcx+4*rax+0x10] + cmp r9d, dword ptr [rcx+4*rdx+0x10]
jg SHORT G_M35926_IG10
- ;; size=23 bbWeight=98.98 PerfScore 742.35
+ ;; size=17 bbWeight=98.98 PerfScore 717.61
G_M35926_IG08: ; bbWeight=98.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax - cmp eax, 0x1D4C
+ inc edx + cmp edx, 0x1D4C
jle SHORT G_M35926_IG07
- ;; size=9 bbWeight=98.98 PerfScore 148.47
+ ;; size=10 bbWeight=98.98 PerfScore 148.47
G_M35926_IG09: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M35926_IG14 ;; size=2 bbWeight=0.02 PerfScore 0.04 G_M35926_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r11d, eax - mov r11d, dword ptr [rcx+4*r11+0x10] - mov ebx, dword ptr [rcx+4*r9+0x10] - mov esi, eax - mov dword ptr [rcx+4*rsi+0x10], ebx - mov dword ptr [rcx+4*r9+0x10], r11d
+ mov r9d, dword ptr [rcx+4*rdx+0x10] + mov r11d, dword ptr [rcx+4*rax+0x10] + mov dword ptr [rcx+4*rdx+0x10], r11d + mov dword ptr [rcx+4*rax+0x10], r9d
jmp SHORT G_M35926_IG08
- ;; size=26 bbWeight=0.08 PerfScore 0.67
+ ;; size=22 bbWeight=0.08 PerfScore 0.63
G_M35926_IG11: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov edx, edx
mov r10d, dword ptr [rcx+0x08]
- mov r9d, edx - ;; size=7 bbWeight=0.00 PerfScore 0.00
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
G_M35926_IG12: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d - jae SHORT G_M35926_IG16 - mov r11d, dword ptr [rcx+4*r9+0x10]
cmp eax, r10d jae SHORT G_M35926_IG16
- mov ebx, eax - cmp r11d, dword ptr [rcx+4*rbx+0x10]
+ mov r9d, dword ptr [rcx+4*rax+0x10] + cmp edx, r10d + jae SHORT G_M35926_IG16 + cmp r9d, dword ptr [rcx+4*rdx+0x10]
jg SHORT G_M35926_IG15
- ;; size=24 bbWeight=1.00 PerfScore 8.75
+ ;; size=22 bbWeight=1.00 PerfScore 8.50
G_M35926_IG13: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax - cmp eax, 0x1D4C - jle SHORT G_M35926_IG12 - ;; size=9 bbWeight=1.00 PerfScore 1.50 -G_M35926_IG14: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
inc edx
- cmp edx, r8d
+ cmp edx, 0x1D4C + jle SHORT G_M35926_IG12 + ;; size=10 bbWeight=1.00 PerfScore 1.50 +G_M35926_IG14: ; bbWeight=0.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + inc eax + cmp eax, r8d
jg SHORT G_M35926_IG17 jmp G_M35926_IG03 ;; size=12 bbWeight=0.02 PerfScore 0.07 G_M35926_IG15: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r11d, eax - mov r11d, dword ptr [rcx+4*r11+0x10] - mov ebx, dword ptr [rcx+4*r9+0x10] - mov esi, eax - mov dword ptr [rcx+4*rsi+0x10], ebx - mov dword ptr [rcx+4*r9+0x10], r11d
+ mov r9d, dword ptr [rcx+4*rdx+0x10] + mov r11d, dword ptr [rcx+4*rax+0x10] + mov dword ptr [rcx+4*rdx+0x10], r11d + mov dword ptr [rcx+4*rax+0x10], r9d
jmp SHORT G_M35926_IG13
- ;; size=26 bbWeight=0.00 PerfScore 0.01
+ ;; size=22 bbWeight=0.00 PerfScore 0.01
G_M35926_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] call CORINFO_HELP_RNGCHKFAIL @@ -122,13 +117,11 @@ G_M35926_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=1 bbWeight=0 PerfScore 0.00 G_M35926_IG18: ; bbWeight=0, epilog, nogc, extend add rsp, 176
- pop rbx - pop rsi
pop rbp ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 47, PerfScore 914.27, instruction count 67, allocated bytes for code 242 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
+; Total bytes of code 201, prolog size 25, PerfScore 887.49, instruction count 58, allocated bytes for code 201 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -136,16 +129,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x14 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) - Scaled Small Offset: 22 * 8 = 176 = 0x000B0 - CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) - Scaled Small Offset: 23 * 8 = 184 = 0x000B8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small Size: 17 * 8 = 136 = 0x00088 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-27 (-11.54%) : 100092.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)

@@ -11,130 +11,128 @@ ; ; V00 arg0 [V00,T02] ( 13,307.86) ref -> rcx class-hnd single-def <int[]> ; V01 arg1 [V01,T07] ( 7,103.97) int -> rdx single-def
-; V02 loc0 [V02,T10] ( 4, 54.91) ubyte -> r8
+; V02 loc0 [V02,T10] ( 4, 54.91) ubyte -> rax
; V03 loc1 [V03,T08] ( 4,105.87) int -> r9
-; V04 loc2 [V04,T00] ( 14,452.92) int -> rax
+; V04 loc2 [V04,T12] ( 5, 3.97) int -> r8
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 4,211.73) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T03] ( 3,248.44) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 2.51) int -> rsi "CSE - aggressive" -; V09 cse2 [V09,T13] ( 3, 2.51) int -> r9 "CSE - aggressive" -; V10 cse3 [V10,T04] ( 3,248.44) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T05] ( 3,248.44) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T14] ( 3, 2.51) long -> rbx "CSE - aggressive" -; V13 cse6 [V13,T01] ( 4,392.06) int -> r11 "CSE - aggressive" -; V14 cse7 [V14,T09] ( 6,101.97) int -> r10 hoist multi-def "CSE - aggressive" -; V15 cse8 [V15,T11] ( 4, 3.96) int -> r11 "CSE - aggressive"
+; V06 tmp1 [V06,T06] ( 4,211.73) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T11] ( 7, 5.49) long -> r8 "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6,445.45) long -> r8 "Widened primary induction variable" +; V09 cse0 [V09,T04] ( 3,248.44) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 2.51) int -> rbx "CSE - aggressive" +; V11 cse2 [V11,T16] ( 3, 2.51) int -> r9 "CSE - aggressive" +; V12 cse3 [V12,T05] ( 3,248.44) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T01] ( 4,346.45) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 3.50) long -> r11 "CSE - aggressive" +; V15 cse6 [V15,T03] ( 3,294.05) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 2.97) int -> r11 "CSE - aggressive" +; V17 cse8 [V17,T09] ( 6,101.97) int -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M070_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56 - mov qword ptr [rsp+0xA8], rsi - mov qword ptr [rsp+0xA0], rbx - mov rcx, gword ptr [rsp+0xC0]
+ sub rsp, 40 + mov qword ptr [rsp+0x98], rbx + mov rcx, gword ptr [rsp+0xB0]
; gcrRegs +[rcx]
- mov edx, dword ptr [rsp+0xC8] - mov r8d, dword ptr [rsp+0x74] - mov eax, dword ptr [rsp+0x6C] - ;; size=44 bbWeight=1 PerfScore 10.25
+ mov edx, dword ptr [rsp+0xB8] + mov eax, dword ptr [rsp+0x64] + mov r8d, dword ptr [rsp+0x5C] + ;; size=36 bbWeight=1 PerfScore 9.25
G_M070_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M070_IG04 ;; size=2 bbWeight=1 PerfScore 2.00 G_M070_IG03: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- xor r8d, r8d
xor eax, eax
+ xor r8d, r8d
;; size=5 bbWeight=0.99 PerfScore 0.50
-G_M070_IG04: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - cmp eax, edx - jge G_M070_IG14 - ;; size=8 bbWeight=0.99 PerfScore 1.24
+G_M070_IG04: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, edx + jge SHORT G_M070_IG15 + ;; size=5 bbWeight=0.99 PerfScore 1.24
G_M070_IG05: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz test rcx, rcx
- je SHORT G_M070_IG11
+ je SHORT G_M070_IG12
;; size=5 bbWeight=0.98 PerfScore 1.23 G_M070_IG06: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax
+ mov r10d, r8d
or r10d, edx
- jl SHORT G_M070_IG11
+ jl SHORT G_M070_IG12
mov r10d, dword ptr [rcx+0x08] cmp r10d, edx
- jl SHORT G_M070_IG11 - ;; size=17 bbWeight=0.98 PerfScore 4.67 -G_M070_IG07: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r9d, eax - mov r9d, dword ptr [rcx+4*r9+0x10] - lea r11d, [rax+0x01] - cmp r11d, r10d - jae G_M070_IG17 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi - jle SHORT G_M070_IG09 - ;; size=33 bbWeight=98.02 PerfScore 735.12 -G_M070_IG08: ; bbWeight=52.40, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, eax - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d - mov r8d, 1 - ;; size=19 bbWeight=52.40 PerfScore 131.01 -G_M070_IG09: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov eax, r11d - cmp eax, edx - jl SHORT G_M070_IG07 - ;; size=7 bbWeight=98.02 PerfScore 147.02 -G_M070_IG10: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M070_IG14 - ;; size=2 bbWeight=0.98 PerfScore 1.97 -G_M070_IG11: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r10d, dword ptr [rcx+0x08] - ;; size=4 bbWeight=0.01 PerfScore 0.02 -G_M070_IG12: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - cmp eax, r10d - jae SHORT G_M070_IG17 - mov r9d, eax - mov r9d, dword ptr [rcx+4*r9+0x10] - lea r11d, [rax+0x01] - cmp r11d, r10d - jae SHORT G_M070_IG17 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi - jg SHORT G_M070_IG16 - ;; size=34 bbWeight=0.99 PerfScore 8.66 -G_M070_IG13: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov eax, r11d - cmp eax, edx
jl SHORT G_M070_IG12
- ;; size=7 bbWeight=0.99 PerfScore 1.49 -G_M070_IG14: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - test r8d, r8d
+ ;; size=17 bbWeight=0.98 PerfScore 4.67 +G_M070_IG07: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov r8d, r8d + ;; size=3 bbWeight=0.98 PerfScore 0.25 +G_M070_IG08: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r9d, dword ptr [rcx+4*r8+0x10] + lea r11d, [r8+0x01] + cmp r11d, r10d + jae SHORT G_M070_IG18 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M070_IG10 + ;; size=24 bbWeight=98.02 PerfScore 686.11 +G_M070_IG09: ; bbWeight=52.40, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r8+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d + mov eax, 1 + ;; size=15 bbWeight=52.40 PerfScore 117.91 +G_M070_IG10: ; bbWeight=98.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r8, r11 + cmp r8d, edx + jl SHORT G_M070_IG08 + ;; size=8 bbWeight=98.02 PerfScore 147.02 +G_M070_IG11: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M070_IG15 + ;; size=2 bbWeight=0.98 PerfScore 1.97 +G_M070_IG12: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov r8d, r8d + mov r10d, dword ptr [rcx+0x08] + ;; size=7 bbWeight=0.01 PerfScore 0.02 +G_M070_IG13: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp r8d, r10d + jae SHORT G_M070_IG18 + mov r9d, dword ptr [rcx+4*r8+0x10] + lea r11d, [r8+0x01] + cmp r11d, r10d + jae SHORT G_M070_IG18 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jg SHORT G_M070_IG17 + ;; size=29 bbWeight=0.99 PerfScore 8.17 +G_M070_IG14: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r8, r11 + cmp r8d, edx + jl SHORT G_M070_IG13 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M070_IG15: ; bbWeight=0.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + test eax, eax
jne G_M070_IG03
- ;; size=9 bbWeight=0.98 PerfScore 1.23 -G_M070_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=0.98 PerfScore 1.23 +G_M070_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 160
+ add rsp, 152
pop rbx
- pop rsi
pop rbp ret
- ;; size=11 bbWeight=0.01 PerfScore 0.03 -G_M070_IG16: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=10 bbWeight=0.01 PerfScore 0.02 +G_M070_IG17: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
- mov r8d, eax - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d - mov r8d, 1 - jmp SHORT G_M070_IG13 - ;; size=21 bbWeight=0.53 PerfScore 2.38 -G_M070_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rcx+4*r8+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d + mov eax, 1 + jmp SHORT G_M070_IG14 + ;; size=17 bbWeight=0.53 PerfScore 2.25 +G_M070_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 234, prolog size 44, PerfScore 1048.82, instruction count 66, allocated bytes for code 234 (MethodHash=4d30ffb9) for method Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
+; Total bytes of code 207, prolog size 36, PerfScore 985.33, instruction count 60, allocated bytes for code 207 (MethodHash=4d30ffb9) for method Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -142,15 +140,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x14 - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) - Scaled Small Offset: 20 * 8 = 160 = 0x000A0 - CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) - Scaled Small Offset: 21 * 8 = 168 = 0x000A8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) + Scaled Small Offset: 19 * 8 = 152 = 0x00098 + CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-19 (-11.24%) : 44085.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)

@@ -8,30 +8,31 @@ ; with Blended PGO: edge weights are invalid, and fgCalledCount is 100 ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 11,1960222.45) ref -> rcx class-hnd single-def <int[]>
+; V00 arg0 [V00,T01] ( 11,1960222.45) ref -> rcx class-hnd single-def <int[]>
; V01 loc0 [V01,T10] ( 4, 483891.96) ubyte -> r8 ; V02 loc1 [V02,T07] ( 4, 963783.91) int -> r9 ; V03 loc2 [V03,T09] ( 7, 502216.76) int -> rdx
-; V04 loc3 [V04,T00] ( 12,2480745.21) int -> r10
+;* V04 loc3 [V04,T16] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4,1927567.83) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3,1463544.22) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 14783.27) int -> rsi "CSE - aggressive" -; V09 cse2 [V09,T13] ( 3, 14783.27) int -> r9 "CSE - aggressive" -; V10 cse3 [V10,T05] ( 3,1463544.22) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3,1463544.22) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T14] ( 3, 14783.27) long -> rbx "CSE - aggressive" -; V13 cse6 [V13,T01] ( 4,1972942.36) int -> r11 "CSE - aggressive" -; V14 cse7 [V14,T08] ( 6, 504199.94) int -> rax "CSE - aggressive" -; V15 cse8 [V15,T11] ( 4, 19928.71) int -> r11 "CSE - aggressive"
+; V06 tmp1 [V06,T03] ( 4,1927567.83) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T11] ( 7, 29739.79) long -> r10 "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6,2451013.39) long -> r10 "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3,1463544.22) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T14] ( 3, 14783.27) int -> rbx "CSE - aggressive" +; V11 cse2 [V11,T15] ( 3, 14783.27) int -> r9 "CSE - aggressive" +; V12 cse3 [V12,T06] ( 3,1463544.22) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T02] ( 4,1956779.81) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T12] ( 4, 19765.45) long -> r11 "CSE - aggressive" +; V15 cse6 [V15,T04] ( 3,1479706.77) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T13] ( 3, 14946.53) int -> r11 "CSE - aggressive" +; V17 cse8 [V17,T08] ( 6, 504199.94) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08] @@ -39,82 +40,80 @@ G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr ;; size=6 bbWeight=1 PerfScore 2.50 G_M37703_IG03: ; bbWeight=1000, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle SHORT G_M37703_IG12 - ;; size=10 bbWeight=1000 PerfScore 1750.00
+ jle SHORT G_M37703_IG14 + ;; size=7 bbWeight=1000 PerfScore 1500.00
G_M37703_IG04: ; bbWeight=998.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=4 bbWeight=998.00 PerfScore 1247.50
-G_M37703_IG05: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+G_M37703_IG05: ; bbWeight=998.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r10d, r10d + ;; size=3 bbWeight=998.00 PerfScore 249.50 +G_M37703_IG06: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi - jle SHORT G_M37703_IG07 - ;; size=29 bbWeight=493235.59 PerfScore 3699266.93 -G_M37703_IG06: ; bbWeight=477073.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ jae SHORT G_M37703_IG16 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M37703_IG08 + ;; size=24 bbWeight=493235.59 PerfScore 3452649.13 +G_M37703_IG07: ; bbWeight=477073.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=477073.04 PerfScore 1192682.59 -G_M37703_IG07: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r10d, r11d
+ ;; size=16 bbWeight=477073.04 PerfScore 1073414.33 +G_M37703_IG08: ; bbWeight=493235.59, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG05
+ jl SHORT G_M37703_IG06
;; size=8 bbWeight=493235.59 PerfScore 739853.39
-G_M37703_IG08: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M37703_IG12
+G_M37703_IG09: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M37703_IG14
;; size=2 bbWeight=1000.00 PerfScore 2000.00
-G_M37703_IG09: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG10: ; bbWeight=9.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r10d, r10d + ;; size=3 bbWeight=9.98 PerfScore 2.49 +G_M37703_IG11: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14 - mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG16 + mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi - jle SHORT G_M37703_IG11 - ;; size=34 bbWeight=4982.18 PerfScore 43594.05 -G_M37703_IG10: ; bbWeight=4818.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ jae SHORT G_M37703_IG16 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M37703_IG13 + ;; size=29 bbWeight=4982.18 PerfScore 41102.97 +G_M37703_IG12: ; bbWeight=4818.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=4818.92 PerfScore 12047.30 -G_M37703_IG11: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r10d, r11d
+ ;; size=16 bbWeight=4818.92 PerfScore 10842.57 +G_M37703_IG13: ; bbWeight=4982.18, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG11
;; size=8 bbWeight=4982.18 PerfScore 7473.27
-G_M37703_IG12: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG14: ; bbWeight=1000.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx test r8d, r8d
- jne G_M37703_IG03 - ;; size=11 bbWeight=1000.00 PerfScore 1500.00 -G_M37703_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03 + ;; size=7 bbWeight=1000.00 PerfScore 1500.00 +G_M37703_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1.00 PerfScore 2.25 -G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1.00 PerfScore 1.75 +G_M37703_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 6, PerfScore 5701422.02, instruction count 55, allocated bytes for code 169 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
+; Total bytes of code 150, prolog size 5, PerfScore 5331840.64, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
; ============================================================ Unwind Info: @@ -122,11 +121,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+8 (+17.39%) : 101490.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rdx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -35,13 +36,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 { xor edx, edx jmp SHORT G_M16110_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, edx - mov r8, gword ptr [rcx+8*r8+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp edx, dword ptr [rcx+0x08] + jae SHORT G_M16110_IG08 + mov r8, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[r8] add eax, dword ptr [r8+0x3C] inc edx
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r8] cmp dword ptr [rcx+0x08], edx @@ -51,8 +53,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 46, prolog size 4, PerfScore 3.25, instruction count 17, allocated bytes for code 46 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 3.25, instruction count 20, allocated bytes for code 54 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info:

+8 (+17.39%) : 27384.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)

@@ -9,11 +9,12 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V00 arg0 [V00,T00] ( 6, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V01 loc0 [V01,T01] ( 4, 1 ) int -> rax
-; V02 loc1 [V02,T02] ( 5, 0 ) int -> rdx
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V05 tmp2 [V05,T02] ( 6, 0 ) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -35,13 +36,14 @@ G_M16110_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 { xor edx, edx jmp SHORT G_M16110_IG06 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, edx - mov r8, gword ptr [rcx+8*r8+0x10]
+G_M16110_IG05: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + cmp edx, dword ptr [rcx+0x08] + jae SHORT G_M16110_IG08 + mov r8, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[r8] add eax, dword ptr [r8+0x3C] inc edx
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M16110_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r8] cmp dword ptr [rcx+0x08], edx @@ -51,8 +53,14 @@ G_M16110_IG07: ; bbWeight=0, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0 PerfScore 0.00
+G_M16110_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 46, prolog size 4, PerfScore 3.25, instruction count 17, allocated bytes for code 46 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 3.25, instruction count 20, allocated bytes for code 54 (MethodHash=e7ddc111) for method System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
; ============================================================ Unwind Info:

+8 (+18.60%) : 42090.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)

@@ -11,14 +11,15 @@ ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx single-def ; V01 loc0 [V01,T01] ( 4, 19.08) int -> rax ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 35.15) int -> r8
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T04] ( 2, 9.54) byref -> rdx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T02] ( 3, 10.54) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T02] ( 4, 19.08) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V11 tmp6 [V11,T00] ( 6, 43.59) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -32,25 +33,33 @@ G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rdx] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor r8d, r8d
test ecx, ecx
- jle SHORT G_M59336_IG04 - ;; size=15 bbWeight=1 PerfScore 5.75 -G_M59336_IG03: ; bbWeight=8.54, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz - mov r10d, r8d - movzx r10, byte ptr [rdx+r10]
+ jle SHORT G_M59336_IG05 + ;; size=12 bbWeight=1 PerfScore 5.50 +G_M59336_IG03: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref + xor r8d, r8d + ;; size=3 bbWeight=0.90 PerfScore 0.22 +G_M59336_IG04: ; bbWeight=8.54, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz + cmp r8d, ecx + jae SHORT G_M59336_IG06 + movzx r10, byte ptr [rdx+r8]
add eax, r10d inc r8d cmp r8d, ecx
- jl SHORT G_M59336_IG03 - ;; size=19 bbWeight=8.54 PerfScore 34.15 -G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M59336_IG04 + ;; size=21 bbWeight=8.54 PerfScore 42.69 +G_M59336_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M59336_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 41.40, instruction count 15, allocated bytes for code 43 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 51, prolog size 4, PerfScore 49.92, instruction count 18, allocated bytes for code 51 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-26 (-14.77%) : 29738.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)

@@ -10,110 +10,107 @@ ; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]> ; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8 ; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx -; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx +;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative" -; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative" -; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive" -; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive" -; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative" +; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative" +; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative" +; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative" +; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M37703_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08] lea edx, [rax-0x01] ;; size=6 bbWeight=1 PerfScore 2.50
-G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M37703_IG12 - ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M37703_IG13 + ;; size=7 bbWeight=8 PerfScore 12.00
G_M37703_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, edx jl SHORT G_M37703_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d + ;; size=7 bbWeight=4 PerfScore 6.00
G_M37703_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi
+ jae SHORT G_M37703_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx
jle SHORT G_M37703_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M37703_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx jl SHORT G_M37703_IG05 ;; size=8 bbWeight=15.84 PerfScore 23.76 G_M37703_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M37703_IG12
+ jmp SHORT G_M37703_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M37703_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M37703_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r10d, r10d + ;; size=3 bbWeight=0.04 PerfScore 0.01 +G_M37703_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M37703_IG14 - mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M37703_IG15 + mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M37703_IG14 - mov esi, r11d - mov esi, dword ptr [rcx+4*rsi+0x10] - cmp r9d, esi - jle SHORT G_M37703_IG11 - ;; size=34 bbWeight=0.16 PerfScore 1.40 -G_M37703_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov r10d, r11d - mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M37703_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M37703_IG12 + ;; size=29 bbWeight=0.16 PerfScore 1.32 +G_M37703_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22 -G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18 +G_M37703_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r10, r11
cmp r10d, edx
- jl SHORT G_M37703_IG09
+ jl SHORT G_M37703_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M37703_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M37703_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx test r8d, r8d
- jne G_M37703_IG03 - ;; size=11 bbWeight=8 PerfScore 12.00 -G_M37703_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M37703_IG03 + ;; size=7 bbWeight=8 PerfScore 12.00 +G_M37703_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M37703_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75 +G_M37703_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
; ============================================================ Unwind Info: @@ -121,11 +118,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-33 (-13.92%) : 29736.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)

@@ -8,128 +8,124 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]> -; V01 loc0 [V01,T09] ( 4, 18 ) ubyte -> r8 -; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9 -; V03 loc2 [V03,T03] ( 7, 48 ) int -> rdx -; V04 loc3 [V04,T00] ( 14, 86.16) int -> rax
+; V00 arg0 [V00,T01] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]> +; V01 loc0 [V01,T10] ( 4, 18 ) ubyte -> r8 +; V02 loc1 [V02,T11] ( 4, 16 ) int -> r9 +; V03 loc2 [V03,T03] ( 7, 48 ) int -> rax +; V04 loc3 [V04,T09] ( 5, 18.04) int -> rdx
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative" -; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative" -; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive" -; V13 cse6 [V13,T08] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive" -; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T12] ( 7, 0.92) long -> rdx "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6, 75.28) long -> rdx "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative" +; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative" +; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T02] ( 4, 55.44) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative" +; V15 cse6 [V15,T04] ( 3, 47.52) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative" +; V17 cse8 [V17,T08] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M37703_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56 - mov qword ptr [rsp+0xB8], rsi - mov qword ptr [rsp+0xB0], rbx - mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40 + mov qword ptr [rsp+0xA8], rbx + mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84] - mov edx, dword ptr [rsp+0x7C] - mov eax, dword ptr [rsp+0x78] - ;; size=44 bbWeight=0.01 PerfScore 0.10
+ mov r8d, dword ptr [rsp+0x74] + mov eax, dword ptr [rsp+0x6C] + mov edx, dword ptr [rsp+0x68] + ;; size=33 bbWeight=0.01 PerfScore 0.09
G_M37703_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M37703_IG04 ;; size=2 bbWeight=0.01 PerfScore 0.02 G_M37703_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref xor r8d, r8d
- xor eax, eax
+ xor edx, edx
;; size=5 bbWeight=2 PerfScore 1.00 G_M37703_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- cmp eax, edx
+ cmp edx, eax
jge G_M37703_IG14 ;; size=8 bbWeight=8 PerfScore 10.00 G_M37703_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz test rcx, rcx je SHORT G_M37703_IG10
- mov r10d, eax - or r10d, edx
+ mov r10d, edx + or r10d, eax
jl SHORT G_M37703_IG10 mov r10d, dword ptr [rcx+0x08]
- cmp r10d, edx
+ cmp r10d, eax
jl SHORT G_M37703_IG10
- ;; size=22 bbWeight=4 PerfScore 24.00
+ mov edx, edx + ;; size=24 bbWeight=4 PerfScore 25.00
G_M37703_IG06: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, eax - mov r9d, dword ptr [rcx+4*r9+0x10] - lea r11d, [rax+0x01]
+ mov r9d, dword ptr [rcx+4*rdx+0x10] + lea r11d, [rdx+0x01]
cmp r11d, r10d
- jae G_M37703_IG16 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi
+ jae SHORT G_M37703_IG16 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx
jle SHORT G_M37703_IG08
- ;; size=33 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M37703_IG07: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, eax - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*rdx+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=15 bbWeight=7.92 PerfScore 17.82
G_M37703_IG08: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d - cmp eax, edx
+ mov rdx, r11 + cmp edx, eax
jl SHORT G_M37703_IG06 ;; size=7 bbWeight=15.84 PerfScore 23.76 G_M37703_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M37703_IG14 ;; size=2 bbWeight=8 PerfScore 16.00 G_M37703_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov edx, edx
mov r10d, dword ptr [rcx+0x08]
- ;; size=4 bbWeight=0.04 PerfScore 0.08
+ ;; size=6 bbWeight=0.04 PerfScore 0.09
G_M37703_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp eax, r10d
+ cmp edx, r10d
jae SHORT G_M37703_IG16
- mov r9d, eax - mov r9d, dword ptr [rcx+4*r9+0x10] - lea r11d, [rax+0x01]
+ mov r9d, dword ptr [rcx+4*rdx+0x10] + lea r11d, [rdx+0x01]
cmp r11d, r10d jae SHORT G_M37703_IG16
- mov esi, r11d - mov esi, dword ptr [rcx+4*rsi+0x10] - cmp r9d, esi
+ mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx
jle SHORT G_M37703_IG13
- ;; size=34 bbWeight=0.16 PerfScore 1.40
+ ;; size=29 bbWeight=0.16 PerfScore 1.32
G_M37703_IG12: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, eax - mov dword ptr [rcx+4*r8+0x10], esi - mov eax, r11d - mov dword ptr [rcx+4*rax+0x10], r9d
+ mov dword ptr [rcx+4*rdx+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22
+ ;; size=15 bbWeight=0.08 PerfScore 0.18
G_M37703_IG13: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, r11d - cmp eax, edx
+ mov rdx, r11 + cmp edx, eax
jl SHORT G_M37703_IG11 ;; size=7 bbWeight=0.16 PerfScore 0.24 G_M37703_IG14: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- dec edx
+ dec eax
test r8d, r8d jne G_M37703_IG03 ;; size=11 bbWeight=8 PerfScore 12.00 G_M37703_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx]
- add rsp, 176
+ add rsp, 168
pop rbx
- pop rsi
pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
G_M37703_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 44, PerfScore 230.17, instruction count 67, allocated bytes for code 237 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
+; Total bytes of code 204, prolog size 33, PerfScore 220.65, instruction count 60, allocated bytes for code 204 (MethodHash=e4a36cb8) for method Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -137,16 +133,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x14 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) - Scaled Small Offset: 22 * 8 = 176 = 0x000B0 - CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) - Scaled Small Offset: 23 * 8 = 184 = 0x000B8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) + Scaled Small Offset: 21 * 8 = 168 = 0x000A8 + CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small Size: 17 * 8 = 136 = 0x00088 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-27 (-12.92%) : 53142.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)

@@ -8,38 +8,39 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]> -; V01 loc0 [V01,T09] ( 1, 8 ) int -> r8 -; V02 loc1 [V02,T02] ( 8, 46.04) int -> rdx -; V03 loc2 [V03,T00] ( 14, 86.16) int -> rax -; V04 loc3 [V04,T08] ( 4, 16 ) int -> rbx
+; V00 arg0 [V00,T02] ( 13, 58.04) ref -> rcx class-hnd single-def <int[]> +; V01 loc0 [V01,T09] ( 1, 8 ) int -> rdx +; V02 loc1 [V02,T13] ( 1, 0.01) int -> r8 +; V03 loc2 [V03,T07] ( 5, 18.04) int -> rax +; V04 loc3 [V04,T08] ( 4, 16 ) int -> r11
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 4, 32 ) int -> r11 "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T03] ( 3, 39.60) int -> r11 "CSE - aggressive" -; V08 cse1 [V08,T10] ( 3, 0.40) int -> rbx "CSE - conservative" -; V09 cse2 [V09,T11] ( 3, 0.40) int -> r11 "CSE - conservative" -; V10 cse3 [V10,T04] ( 3, 39.60) int -> rbx "CSE - aggressive" -; V11 cse4 [V11,T07] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive" -; V12 cse5 [V12,T06] ( 6, 28.04) long -> r9 hoist multi-def "CSE - aggressive"
+; V06 tmp1 [V06,T05] ( 4, 32 ) int -> r9 "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T01] ( 11, 66.01) long -> r8 "Widened primary induction variable" +; V08 tmp3 [V08,T10] ( 7, 0.92) long -> rax "Widened primary induction variable" +; V09 tmp4 [V09,T00] ( 6, 75.28) long -> rax "Widened primary induction variable" +; V10 cse0 [V10,T03] ( 3, 39.60) int -> r9 "CSE - aggressive" +; V11 cse1 [V11,T11] ( 3, 0.40) int -> r11 "CSE - conservative" +; V12 cse2 [V12,T12] ( 3, 0.40) int -> r9 "CSE - conservative" +; V13 cse3 [V13,T04] ( 3, 39.60) int -> r11 "CSE - aggressive" +; V14 cse4 [V14,T06] ( 6, 24.20) int -> r10 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 40 G_M35926_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56 - mov qword ptr [rsp+0xB8], rsi - mov qword ptr [rsp+0xB0], rbx - mov rcx, gword ptr [rsp+0xD0]
+ sub rsp, 40 + mov rcx, gword ptr [rsp+0xC0]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rsp+0x84] - mov edx, dword ptr [rsp+0x80] - mov eax, dword ptr [rsp+0x7C] - ;; size=47 bbWeight=0.01 PerfScore 0.10
+ mov edx, dword ptr [rsp+0x74] + mov r8d, dword ptr [rsp+0x70] + mov eax, dword ptr [rsp+0x6C] + ;; size=25 bbWeight=0.01 PerfScore 0.08
G_M35926_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r8d, r8d
jmp SHORT G_M35926_IG04
- ;; size=2 bbWeight=0.01 PerfScore 0.02
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
G_M35926_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov eax, edx - ;; size=2 bbWeight=2 PerfScore 0.50
+ mov eax, r8d + ;; size=3 bbWeight=2 PerfScore 0.50
G_M35926_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, 0x1D4C jg SHORT G_M35926_IG14 @@ -52,22 +53,20 @@ G_M35926_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr mov r10d, dword ptr [rcx+0x08] cmp r10d, 0x1D4C jle SHORT G_M35926_IG10
- mov r9d, edx - ;; size=25 bbWeight=4 PerfScore 24.00
+ mov eax, eax + ;; size=24 bbWeight=4 PerfScore 24.00
G_M35926_IG06: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
+ cmp r8d, r10d
jae SHORT G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10] - mov ebx, eax - mov ebx, dword ptr [rcx+4*rbx+0x10] - cmp r11d, ebx
+ mov r9d, dword ptr [rcx+4*r8+0x10] + mov r11d, dword ptr [rcx+4*rax+0x10] + cmp r9d, r11d
jle SHORT G_M35926_IG08
- ;; size=21 bbWeight=15.84 PerfScore 106.92
+ ;; size=20 bbWeight=15.84 PerfScore 102.96
G_M35926_IG07: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov esi, eax - mov dword ptr [rcx+4*rsi+0x10], r11d - mov dword ptr [rcx+4*r9+0x10], ebx - ;; size=12 bbWeight=7.92 PerfScore 17.82
+ mov dword ptr [rcx+4*rax+0x10], r9d + mov dword ptr [rcx+4*r8+0x10], r11d + ;; size=10 bbWeight=7.92 PerfScore 15.84
G_M35926_IG08: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz inc eax cmp eax, 0x1D4C @@ -77,50 +76,46 @@ G_M35926_IG09: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr jmp SHORT G_M35926_IG14 ;; size=2 bbWeight=8 PerfScore 16.00 G_M35926_IG10: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov eax, eax
mov r10d, dword ptr [rcx+0x08]
- mov r9d, edx - ;; size=7 bbWeight=0.04 PerfScore 0.09
+ ;; size=6 bbWeight=0.04 PerfScore 0.09
G_M35926_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r10d
+ cmp r8d, r10d
jae SHORT G_M35926_IG16
- mov r11d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r8+0x10]
cmp eax, r10d jae SHORT G_M35926_IG16
- mov ebx, eax - mov ebx, dword ptr [rcx+4*rbx+0x10] - cmp r11d, ebx
+ mov r11d, dword ptr [rcx+4*rax+0x10] + cmp r9d, r11d
jle SHORT G_M35926_IG13
- ;; size=26 bbWeight=0.16 PerfScore 1.28
+ ;; size=25 bbWeight=0.16 PerfScore 1.24
G_M35926_IG12: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov esi, eax - mov dword ptr [rcx+4*rsi+0x10], r11d - mov dword ptr [rcx+4*r9+0x10], ebx - ;; size=12 bbWeight=0.08 PerfScore 0.18
+ mov dword ptr [rcx+4*rax+0x10], r9d + mov dword ptr [rcx+4*r8+0x10], r11d + ;; size=10 bbWeight=0.08 PerfScore 0.16
G_M35926_IG13: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz inc eax cmp eax, 0x1D4C jle SHORT G_M35926_IG11 ;; size=9 bbWeight=0.16 PerfScore 0.24 G_M35926_IG14: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- inc edx - cmp edx, r8d
+ inc r8d + cmp r8d, edx
jle G_M35926_IG03
- ;; size=11 bbWeight=8 PerfScore 12.00
+ ;; size=12 bbWeight=8 PerfScore 12.00
G_M35926_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx] add rsp, 176
- pop rbx - pop rsi
pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M35926_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 47, PerfScore 215.66, instruction count 60, allocated bytes for code 209 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
+; Total bytes of code 182, prolog size 25, PerfScore 208.64, instruction count 53, allocated bytes for code 182 (MethodHash=0def73a9) for method Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
; ============================================================ Unwind Info: @@ -128,16 +123,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x14 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3) - Scaled Small Offset: 22 * 8 = 176 = 0x000B0 - CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6) - Scaled Small Offset: 23 * 8 = 184 = 0x000B8 - CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small Size: 17 * 8 = 136 = 0x00088 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+8 (+12.50%) : 20613.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

@@ -9,18 +9,19 @@ ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> rdi
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) ushort -> zero-ref ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T03] ( 2, 5 ) byref -> rbx single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T02] ( 3, 6 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 4, 10 ) int -> rsi "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp6 [V10,T00] ( 6, 21 ) long -> rdi "Widened primary induction variable"
; ; Lcl frame size = 32
-G_M29423_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M29423_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi push rsi push rbx @@ -31,14 +32,15 @@ G_M29423_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr mov rbx, bword ptr [rcx] ; byrRegs +[rbx] mov esi, dword ptr [rcx+0x08]
- xor edi, edi
test esi, esi jle SHORT G_M29423_IG04
+ xor edi, edi
;; size=12 bbWeight=1 PerfScore 5.50 G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz ; byrRegs -[rcx]
- mov ecx, edi - movzx rcx, word ptr [rbx+2*rcx]
+ cmp edi, esi + jae SHORT G_M29423_IG08 + movzx rcx, word ptr [rbx+2*rdi]
call [System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(int):ubyte] ; gcr arg pop 0 test eax, eax @@ -46,7 +48,7 @@ G_M29423_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr inc edi cmp edi, esi jl SHORT G_M29423_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
+ ;; size=24 bbWeight=4 PerfScore 36.00
G_M29423_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rbx] xor eax, eax @@ -68,8 +70,13 @@ G_M29423_IG07: ; bbWeight=0.50, epilog, nogc, extend pop rdi ret ;; size=8 bbWeight=0.50 PerfScore 1.38
+G_M29423_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 7, PerfScore 43.75, instruction count 29, allocated bytes for code 64 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 72, prolog size 7, PerfScore 47.75, instruction count 32, allocated bytes for code 72 (MethodHash=018f8d10) for method System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================ Unwind Info:

+8 (+14.81%) : 42770.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 loc0 [V01,T02] ( 4, 10 ) int -> rdx
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> r8
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T03] ( 3, 6 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T03] ( 4, 10 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V07 tmp4 [V07,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,19 +28,20 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] mov edx, 0xD1FFAB1E
- xor r8d, r8d
test ecx, ecx jle SHORT G_M53167_IG04
+ xor r8d, r8d
;; size=18 bbWeight=1 PerfScore 5.75 G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10]
+ cmp r8d, ecx + jae SHORT G_M53167_IG06 + movzx r10, byte ptr [rax+r8]
xor edx, r10d imul edx, edx, 0xD1FFAB1E inc r8d cmp r8d, ecx jl SHORT G_M53167_IG03
- ;; size=25 bbWeight=4 PerfScore 24.00
+ ;; size=27 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax] mov eax, edx @@ -48,8 +50,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 4, PerfScore 31.50, instruction count 17, allocated bytes for code 54 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
+; Total bytes of code 62, prolog size 4, PerfScore 35.50, instruction count 20, allocated bytes for code 62 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
; ============================================================ Unwind Info:

+9 (+15.00%) : 39133.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (Tier1)

@@ -10,39 +10,41 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M50542_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov rcx, gword ptr [rcx+0x10]
- xor eax, eax - mov r8d, dword ptr [rcx+0x08] - test r8d, r8d
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M50542_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d + ;; size=14 bbWeight=1 PerfScore 5.50
G_M50542_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax - cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M50542_IG05
- inc eax - cmp r8d, eax
+ inc r8d + cmp eax, r8d
jg SHORT G_M50542_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax + jae SHORT G_M50542_IG07 + mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -50,13 +52,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-26 (-14.77%) : 481453.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)

@@ -10,110 +10,107 @@ ; V00 arg0 [V00,T02] ( 11, 51 ) ref -> rcx class-hnd single-def <int[]> ; V01 loc0 [V01,T08] ( 4, 24 ) ubyte -> r8 ; V02 loc1 [V02,T10] ( 4, 16 ) int -> r9
-; V03 loc2 [V03,T03] ( 7, 45 ) int -> rdx -; V04 loc3 [V04,T00] ( 12, 80.16) int -> r10
+; V03 loc2 [V03,T04] ( 7, 45 ) int -> rdx +;* V04 loc3 [V04,T11] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rsi "Strict ordering of exceptions for Array store" -; V07 cse0 [V07,T04] ( 3, 39.60) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T12] ( 3, 0.40) int -> rsi "CSE - conservative" -; V09 cse2 [V09,T13] ( 3, 0.40) int -> r9 "CSE - conservative" -; V10 cse3 [V10,T05] ( 3, 39.60) int -> r9 "CSE - aggressive" -; V11 cse4 [V11,T06] ( 3, 39.60) long -> rbx "CSE - aggressive" -; V12 cse5 [V12,T01] ( 4, 63.36) int -> r11 "CSE - aggressive" -; V13 cse6 [V13,T09] ( 6, 22.16) int -> rax "CSE - aggressive" -; V14 cse7 [V14,T11] ( 5, 0.72) int -> r11 "CSE - conservative"
+; V06 tmp1 [V06,T07] ( 4, 32 ) int -> rbx "Strict ordering of exceptions for Array store" +; V07 tmp2 [V07,T12] ( 7, 0.92) long -> r10 "Widened primary induction variable" +; V08 tmp3 [V08,T00] ( 6, 75.28) long -> r10 "Widened primary induction variable" +; V09 cse0 [V09,T05] ( 3, 39.60) int -> rbx "CSE - aggressive" +; V10 cse1 [V10,T15] ( 3, 0.40) int -> rbx "CSE - conservative" +; V11 cse2 [V11,T16] ( 3, 0.40) int -> r9 "CSE - conservative" +; V12 cse3 [V12,T06] ( 3, 39.60) int -> r9 "CSE - aggressive" +; V13 cse4 [V13,T01] ( 4, 55.44) long -> r11 "CSE - aggressive" +; V14 cse5 [V14,T13] ( 4, 0.56) long -> r11 "CSE - conservative" +; V15 cse6 [V15,T03] ( 3, 47.52) int -> r11 "CSE - aggressive" +; V16 cse7 [V16,T14] ( 3, 0.48) int -> r11 "CSE - conservative" +; V17 cse8 [V17,T09] ( 6, 22.16) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M43155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M43155_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x08] lea edx, [rax-0x01] ;; size=6 bbWeight=1 PerfScore 2.50
-G_M43155_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M43155_IG03: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d
- xor r10d, r10d
test edx, edx
- jle G_M43155_IG12 - ;; size=14 bbWeight=8 PerfScore 14.00
+ jle SHORT G_M43155_IG13 + ;; size=7 bbWeight=8 PerfScore 12.00
G_M43155_IG04: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, edx jl SHORT G_M43155_IG09
- ;; size=4 bbWeight=4 PerfScore 5.00
+ xor r10d, r10d + ;; size=7 bbWeight=4 PerfScore 6.00
G_M43155_IG05: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M43155_IG14 - mov ebx, r11d - mov esi, dword ptr [rcx+4*rbx+0x10] - cmp r9d, esi
+ jae SHORT G_M43155_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx
jle SHORT G_M43155_IG07
- ;; size=29 bbWeight=15.84 PerfScore 118.80
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
G_M43155_IG06: ; bbWeight=7.92, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov dword ptr [rcx+4*rbx+0x10], r9d
+ mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=19 bbWeight=7.92 PerfScore 19.80
+ ;; size=16 bbWeight=7.92 PerfScore 17.82
G_M43155_IG07: ; bbWeight=15.84, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, r11d
+ mov r10, r11
cmp r10d, edx jl SHORT G_M43155_IG05 ;; size=8 bbWeight=15.84 PerfScore 23.76 G_M43155_IG08: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M43155_IG12
+ jmp SHORT G_M43155_IG13
;; size=2 bbWeight=8 PerfScore 16.00
-G_M43155_IG09: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M43155_IG09: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r10d, r10d + ;; size=3 bbWeight=0.04 PerfScore 0.01 +G_M43155_IG10: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp r10d, eax
- jae SHORT G_M43155_IG14 - mov r9d, r10d - mov r9d, dword ptr [rcx+4*r9+0x10]
+ jae SHORT G_M43155_IG15 + mov r9d, dword ptr [rcx+4*r10+0x10]
lea r11d, [r10+0x01] cmp r11d, eax
- jae SHORT G_M43155_IG14 - mov esi, r11d - mov esi, dword ptr [rcx+4*rsi+0x10] - cmp r9d, esi - jle SHORT G_M43155_IG11 - ;; size=34 bbWeight=0.16 PerfScore 1.40 -G_M43155_IG10: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - mov r8d, r10d - mov dword ptr [rcx+4*r8+0x10], esi - mov r10d, r11d - mov dword ptr [rcx+4*r10+0x10], r9d
+ jae SHORT G_M43155_IG15 + mov ebx, dword ptr [rcx+4*r11+0x10] + cmp r9d, ebx + jle SHORT G_M43155_IG12 + ;; size=29 bbWeight=0.16 PerfScore 1.32 +G_M43155_IG11: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + mov dword ptr [rcx+4*r10+0x10], ebx + mov dword ptr [rcx+4*r11+0x10], r9d
mov r8d, 1
- ;; size=22 bbWeight=0.08 PerfScore 0.22 -G_M43155_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r10d, r11d
+ ;; size=16 bbWeight=0.08 PerfScore 0.18 +G_M43155_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov r10, r11
cmp r10d, edx
- jl SHORT G_M43155_IG09
+ jl SHORT G_M43155_IG10
;; size=8 bbWeight=0.16 PerfScore 0.24
-G_M43155_IG12: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M43155_IG13: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
dec edx test r8d, r8d
- jne G_M43155_IG03 - ;; size=11 bbWeight=8 PerfScore 12.00 -G_M43155_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne SHORT G_M43155_IG03 + ;; size=7 bbWeight=8 PerfScore 12.00 +G_M43155_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- add rsp, 40
+ add rsp, 32
pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M43155_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=1 PerfScore 1.75 +G_M43155_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 6, PerfScore 218.22, instruction count 56, allocated bytes for code 176 (MethodHash=fdaf576c) for method Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
+; Total bytes of code 150, prolog size 5, PerfScore 205.71, instruction count 48, allocated bytes for code 150 (MethodHash=fdaf576c) for method Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
; ============================================================ Unwind Info: @@ -121,11 +118,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-4 (-12.50%) : 481434.dasm - Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)

@@ -8,9 +8,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 7 ) ref -> rcx class-hnd single-def <ubyte[]>
-; V01 loc0 [V01,T00] ( 6, 21 ) int -> rax
+;* V01 loc0 [V01,T03] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rdx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 6, 21 ) long -> rdx "Widened primary induction variable" +; V04 cse0 [V04,T02] ( 3, 6 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -19,25 +20,24 @@ G_M36181_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 0.25 G_M36181_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- xor eax, eax - mov edx, dword ptr [rcx+0x08] - test edx, edx
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M36181_IG04
+ xor edx, edx
;; size=9 bbWeight=1 PerfScore 3.50 G_M36181_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, eax - mov byte ptr [rcx+r8+0x10], al - inc eax - cmp edx, eax
+ mov byte ptr [rcx+rdx+0x10], dl + inc edx + cmp eax, edx
jg SHORT G_M36181_IG03
- ;; size=14 bbWeight=4 PerfScore 11.00
+ ;; size=10 bbWeight=4 PerfScore 10.00
G_M36181_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 32, prolog size 4, PerfScore 16.00, instruction count 12, allocated bytes for code 32 (MethodHash=50d172aa) for method Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 15.00, instruction count 11, allocated bytes for code 28 (MethodHash=50d172aa) for method Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
; ============================================================ Unwind Info:

-8 (-11.94%) : 465347.dasm - MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte

@@ -9,9 +9,10 @@ ; ; V00 arg0 [V00,T03] ( 3, 3 ) int -> rcx single-def ; V01 loc0 [V01,T01] ( 5, 7 ) ref -> rax class-hnd exact single-def <ubyte[]>
-; V02 loc1 [V02,T00] ( 7, 21 ) int -> rcx
+;* V02 loc1 [V02,T04] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 3, 6 ) int -> rdx "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 7, 21 ) long -> rdx "Widened primary induction variable" +; V05 cse0 [V05,T02] ( 3, 6 ) int -> rcx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -24,27 +25,25 @@ G_M5002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax] ; gcr arg pop 0
- xor ecx, ecx - mov edx, dword ptr [rax+0x08] - test edx, edx
+ mov ecx, dword ptr [rax+0x08] + test ecx, ecx
jle SHORT G_M5002_IG07
+ xor edx, edx
;; size=27 bbWeight=1 PerfScore 5.00 G_M5002_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- test cl, 1
+ test dl, 1
jne SHORT G_M5002_IG05 ;; size=5 bbWeight=4 PerfScore 5.00 G_M5002_IG04: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx - mov byte ptr [rax+r8+0x10], 1
+ mov byte ptr [rax+rdx+0x10], 1
jmp SHORT G_M5002_IG06
- ;; size=11 bbWeight=2 PerfScore 6.50
+ ;; size=7 bbWeight=2 PerfScore 6.00
G_M5002_IG05: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- mov r8d, ecx - mov byte ptr [rax+r8+0x10], 0 - ;; size=9 bbWeight=2 PerfScore 2.50
+ mov byte ptr [rax+rdx+0x10], 0 + ;; size=5 bbWeight=2 PerfScore 2.00
G_M5002_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- inc ecx - cmp edx, ecx
+ inc edx + cmp ecx, edx
jg SHORT G_M5002_IG03 ;; size=6 bbWeight=4 PerfScore 6.00 G_M5002_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc @@ -52,7 +51,7 @@ G_M5002_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 67, prolog size 4, PerfScore 26.50, instruction count 20, allocated bytes for code 67 (MethodHash=c661ec75) for method MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 25.50, instruction count 18, allocated bytes for code 59 (MethodHash=c661ec75) for method MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
; ============================================================ Unwind Info:

+8 (+19.05%) : 518238.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)

@@ -9,14 +9,15 @@ ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[long]>
-; V02 loc1 [V02,T02] ( 3, 6 ) long -> rdx -; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V02 loc1 [V02,T03] ( 3, 6 ) long -> rdx +;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP ;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP ; V07 tmp3 [V07,T04] ( 2, 5 ) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp4 [V08,T03] ( 3, 6 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 4, 10 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[long]>
+; V10 tmp6 [V10,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -30,17 +31,18 @@ G_M40372_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] xor edx, edx
- xor r8d, r8d
test ecx, ecx jle SHORT G_M40372_IG04
+ xor r8d, r8d
;; size=15 bbWeight=1 PerfScore 5.75 G_M40372_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov edx, r8d - mov rdx, qword ptr [rax+8*rdx]
+ cmp r8d, ecx + jae SHORT G_M40372_IG06 + mov rdx, qword ptr [rax+8*r8]
inc r8d cmp r8d, ecx jl SHORT G_M40372_IG03
- ;; size=15 bbWeight=4 PerfScore 15.00
+ ;; size=17 bbWeight=4 PerfScore 19.00
G_M40372_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax] mov rax, rdx @@ -49,8 +51,13 @@ G_M40372_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M40372_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 42, prolog size 4, PerfScore 22.50, instruction count 15, allocated bytes for code 42 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 26.50, instruction count 18, allocated bytes for code 50 (MethodHash=e720624b) for method GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
; ============================================================ Unwind Info:

+13 (+27.08%) : 480573.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx -; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def +; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8 +;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,30 +28,37 @@ G_M31628_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rax] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d test ecx, ecx jle SHORT G_M31628_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d + ;; size=18 bbWeight=1 PerfScore 6.00
G_M31628_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10] - xor edx, r10d - movzx rdx, dl - inc r8d - cmp r8d, ecx
+ cmp r10d, edx + jae SHORT G_M31628_IG06 + movzx r9, byte ptr [rax+r10] + xor r8d, r9d + movzx r8, r8b + inc r10d + cmp r10d, ecx
jl SHORT G_M31628_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M31628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax]
- mov eax, edx - ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25
G_M31628_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M31628_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=dc378473) for method Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

+13 (+27.08%) : 480554.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)

@@ -8,13 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref single-def -; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> rdx -; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+; V01 loc0 [V01,T05] ( 2, 5 ) int -> rdx single-def +; V02 loc1 [V02,T02] ( 4, 10 ) ubyte -> r8 +;* V03 loc2 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06,T03] ( 3, 6 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V06 tmp2 [V06,T03] ( 4, 7 ) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T00] ( 6, 21 ) long -> r10 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,30 +28,37 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rax] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor edx, edx
+ mov edx, ecx
xor r8d, r8d test ecx, ecx jle SHORT G_M44428_IG04
- ;; size=15 bbWeight=1 PerfScore 5.75
+ xor r10d, r10d + ;; size=18 bbWeight=1 PerfScore 6.00
G_M44428_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10] - xor edx, r10d - movzx rdx, dl - inc r8d - cmp r8d, ecx
+ cmp r10d, edx + jae SHORT G_M44428_IG06 + movzx r9, byte ptr [rax+r10] + xor r8d, r9d + movzx r8, r8b + inc r10d + cmp r10d, ecx
jl SHORT G_M44428_IG03
- ;; size=22 bbWeight=4 PerfScore 17.00
+ ;; size=25 bbWeight=4 PerfScore 21.00
G_M44428_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax]
- mov eax, edx - ;; size=2 bbWeight=1 PerfScore 0.25
+ mov eax, r8d + ;; size=3 bbWeight=1 PerfScore 0.25
G_M44428_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M44428_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 48, prolog size 4, PerfScore 24.50, instruction count 17, allocated bytes for code 48 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 28.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5615273) for method Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-31 (-18.34%) : 176304.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -9,36 +9,35 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> mm1 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> r8 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> mm1 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> r8 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> rsi
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 3, 2 ) ref -> rdi
+; V08 tmp1 [V08,T08] ( 3, 2 ) ref -> rdi
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> r14 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> r9 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> r9 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> r14 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50
+ ;; size=13 bbWeight=1 PerfScore 5.50
G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cvttsd2si esi, xmm1 test r8b, r8b @@ -59,17 +58,10 @@ G_M10117_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M10117_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz lea rbp, [(reloc)] mov r14d, 13
- jmp SHORT G_M10117_IG10 - ;; size=15 bbWeight=1 PerfScore 2.75 -G_M10117_IG06: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz - ; byrRegs +[rbp] - mov r14d, r15d
jmp SHORT G_M10117_IG08
- ;; size=5 bbWeight=1 PerfScore 2.25 -G_M10117_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref - mov rax, r14 - mov r14d, r15d - mov r15, rax
+ ;; size=15 bbWeight=1 PerfScore 2.75 +G_M10117_IG06: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref + ; byrRegs +[rbp]
sub esi, r9d mov r9d, r14d and r9d, 1 @@ -84,38 +76,31 @@ G_M10117_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rb call [r11]<unknown method> ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- mov eax, r14d
+ ;; size=34 bbWeight=2 PerfScore 16.50 +G_M10117_IG07: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
- mov r14, r15 - mov r15d, eax - ;; size=52 bbWeight=2 PerfScore 19.50 -G_M10117_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz - cmp r15d, 13 - jae SHORT G_M10117_IG12
+ cmp r14d, 13 + jae SHORT G_M10117_IG10
mov r9d, dword ptr [rbp+4*r14] cmp r9d, esi
- jle SHORT G_M10117_IG07
+ jle SHORT G_M10117_IG06
;; size=16 bbWeight=4 PerfScore 18.00
-G_M10117_IG09: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref - mov r14d, r15d - ;; size=3 bbWeight=2 PerfScore 0.50 -G_M10117_IG10: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz - lea r9d, [r14-0x01] - mov r15d, r9d - test r14d, r14d - jne SHORT G_M10117_IG06 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG11: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M10117_IG08: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz + mov r9d, r14d + dec r14d + test r9d, r9d + jne SHORT G_M10117_IG07 + ;; size=11 bbWeight=1 PerfScore 1.75 +G_M10117_IG09: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M10117_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi] ; byrRegs -[rbp] call [CORINFO_HELP_RNGCHKFAIL] @@ -123,7 +108,7 @@ G_M10117_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 15, PerfScore 68.00, instruction count 57, allocated bytes for code 169 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 138, prolog size 13, PerfScore 60.50, instruction count 46, allocated bytes for code 138 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -131,15 +116,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

-15 (-12.50%) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)

@@ -9,27 +9,26 @@ ; Final local variable assignments ; ; V00 this [V00,T03] ( 5, 11 ) ref -> rbx this class-hnd single-def <System.Data.FillErrorEventArgs>
-; V01 loc0 [V01,T05] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]> -; V02 loc1 [V02,T00] ( 7, 25 ) int -> r14
+; V01 loc0 [V01,T04] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]> +;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V05 tmp2 [V05,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V06 cse0 [V06,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive" -; V07 cse1 [V07,T06] ( 4, 10 ) long -> rsi "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V06 tmp3 [V06,T00] ( 8, 29 ) long -> rdi "Widened primary induction variable" +; V07 cse0 [V07,T06] ( 3, 3 ) ref -> rdi "CSE - aggressive" +; V08 cse1 [V08,T05] ( 4, 10 ) long -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M18599_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M18599_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rsi, qword ptr [(reloc)] ; const ptr mov rdi, gword ptr [rbx+rsi+0x10] @@ -40,49 +39,46 @@ G_M18599_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- xor r14d, r14d
cmp dword ptr [rdi+0x08], 0 jle SHORT G_M18599_IG04
- ;; size=33 bbWeight=1 PerfScore 13.50
+ xor edi, edi + ; gcrRegs -[rdi] + ;; size=32 bbWeight=1 PerfScore 13.50
G_M18599_IG03: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbx+rsi+0x10] ; gcrRegs +[rcx]
- cmp r14d, dword ptr [rcx+0x08]
+ cmp edi, dword ptr [rcx+0x08]
jae SHORT G_M18599_IG06
- mov edx, r14d - mov rax, gword ptr [rcx+8*rdx+0x10] - ; gcrRegs +[rax] - cmp r14d, dword ptr [rbp+0x08]
+ mov rdx, gword ptr [rcx+8*rdi+0x10] + ; gcrRegs +[rdx] + cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M18599_IG06
- lea rcx, bword ptr [rbp+8*rdx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; gcrRegs -[rcx] ; byrRegs +[rcx]
- mov rdx, rax - ; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+rsi+0x10] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], r14d
+ cmp dword ptr [rax+0x08], edi
jg SHORT G_M18599_IG03
- ;; size=53 bbWeight=4 PerfScore 95.00
+ ;; size=43 bbWeight=4 PerfScore 93.00
G_M18599_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, rbp ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M18599_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M18599_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbp] call [CORINFO_HELP_RNGCHKFAIL] @@ -90,7 +86,7 @@ G_M18599_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 13, PerfScore 118.00, instruction count 39, allocated bytes for code 120 (MethodHash=957bb758) for method System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
+; Total bytes of code 105, prolog size 11, PerfScore 114.50, instruction count 35, allocated bytes for code 105 (MethodHash=957bb758) for method System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -98,14 +94,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

-9 (-10.34%) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)

@@ -10,21 +10,21 @@ ; ; V00 arg0 [V00,T06] ( 4, 5 ) ref -> rcx class-hnd single-def <System.Data.DataColumn[]> ; V01 arg1 [V01,T02] ( 4, 19 ) ref -> rdx class-hnd single-def <System.Data.DataColumn[]>
-; V02 loc0 [V02,T04] ( 5, 14.50) int -> rax -; V03 loc1 [V03,T00] ( 5, 68 ) int -> r9
+;* V02 loc0 [V02,T09] ( 0, 0 ) int -> zero-ref +;* V03 loc1 [V03,T08] ( 0, 0 ) int -> zero-ref
;* V04 loc2 [V04,T05] ( 0, 0 ) ubyte -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 cse0 [V06,T03] ( 2, 18 ) ref -> r11 hoist "CSE - aggressive" -; V07 cse1 [V07,T01] ( 4, 22 ) int -> r10 "CSE - aggressive" -; V08 cse2 [V08,T07] ( 4, 6.50) int -> r8 "CSE - aggressive" -; V09 cse3 [V09,T08] ( 2, 4 ) long -> r11 hoist "CSE - aggressive"
+; V06 tmp1 [V06,T04] ( 5, 14.50) long -> rax "Widened primary induction variable" +; V07 tmp2 [V07,T00] ( 5, 66 ) long -> r9 "Widened primary induction variable" +; V08 cse0 [V08,T03] ( 2, 18 ) ref -> r11 hoist "CSE - aggressive" +; V09 cse1 [V09,T01] ( 4, 22 ) int -> r10 "CSE - aggressive" +; V10 cse2 [V10,T07] ( 4, 6.50) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51459_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx - sub rsp, 32 - ;; size=5 bbWeight=1 PerfScore 1.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M51459_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov r8d, dword ptr [rcx+0x08] @@ -37,34 +37,31 @@ G_M51459_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M51459_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32 - pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M51459_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rcx rdx]
- xor eax, eax
test r8d, r8d jle SHORT G_M51459_IG11
+ xor eax, eax
;; size=7 bbWeight=0.50 PerfScore 0.75 G_M51459_IG06: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- xor r9d, r9d
test r10d, r10d jle SHORT G_M51459_IG03
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=5 bbWeight=4 PerfScore 5.00
G_M51459_IG07: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
- mov r11d, eax - mov r11, gword ptr [rcx+8*r11+0x10]
+ xor r9d, r9d + mov r11, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[r11] ;; size=8 bbWeight=2 PerfScore 4.50 G_M51459_IG08: ; bbWeight=16, gcrefRegs=0806 {rcx rdx r11}, byrefRegs=0000 {}, byref, isz
- mov ebx, r9d - cmp r11, gword ptr [rdx+8*rbx+0x10]
+ cmp r11, gword ptr [rdx+8*r9+0x10]
je SHORT G_M51459_IG10 inc r9d cmp r10d, r9d jg SHORT G_M51459_IG08
- ;; size=18 bbWeight=16 PerfScore 92.00
+ ;; size=15 bbWeight=16 PerfScore 88.00
G_M51459_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx rdx r11] jmp SHORT G_M51459_IG03 @@ -80,12 +77,11 @@ G_M51459_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M51459_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32 - pop rbx
+ add rsp, 40
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 87, prolog size 5, PerfScore 121.75, instruction count 32, allocated bytes for code 87 (MethodHash=14d336fc) for method System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
+; Total bytes of code 78, prolog size 4, PerfScore 115.25, instruction count 27, allocated bytes for code 78 (MethodHash=14d336fc) for method System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -93,10 +89,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

+14 (+28.00%) : 178190.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)

@@ -8,13 +8,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> +; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive" -; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive" -; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable" +; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive" +; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, mov r10d, dword ptr [rdx+0x08] cmp r10d, eax jle SHORT G_M16586_IG06
- mov r10d, eax - movzx r9, word ptr [rcx+2*r10+0x0C] - cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d + jae SHORT G_M16586_IG07 + movzx r9, word ptr [rcx+2*rax+0x0C] + cmp eax, r10d + jae SHORT G_M16586_IG07 + cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call [CORINFO_HELP_RNGCHKFAIL] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 64 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================ Unwind Info:

+14 (+28.00%) : 153152.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)

@@ -8,13 +8,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> +; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive" -; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive" -; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable" +; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive" +; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,18 +38,26 @@ G_M16586_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, mov r10d, dword ptr [rdx+0x08] cmp r10d, eax jle SHORT G_M16586_IG06
- mov r10d, eax - movzx r9, word ptr [rcx+2*r10+0x0C] - cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d + jae SHORT G_M16586_IG07 + movzx r9, word ptr [rcx+2*rax+0x0C] + cmp eax, r10d + jae SHORT G_M16586_IG07 + cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M16586_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M16586_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M16586_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call [CORINFO_HELP_RNGCHKFAIL] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 64 (MethodHash=6acbbf35) for method Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
; ============================================================ Unwind Info:

+30 (+32.97%) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -8,17 +8,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> rsi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r11 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -41,47 +40,59 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG10 - mov ebx, r11d - movzx rbx, word ptr [rcx+2*rbx+0x0C]
+ jae SHORT G_M6389_IG11 + movzx rbx, word ptr [rcx+2*r11+0x0C]
lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG10 - movzx rsi, word ptr [rdx+2*rsi+0x0C] - cmp ebx, esi
+ jae SHORT G_M6389_IG11 + cmp bx, word ptr [rdx+2*rsi+0x0C]
je SHORT G_M6389_IG03
- ;; size=31 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx] - mov eax, ebx - sub eax, esi - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=27 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov esi, r11d + cmp esi, r10d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + cmp esi, eax + jae SHORT G_M6389_IG11 + mov eax, esi + movzx rax, word ptr [rcx+2*rax+0x0C] + add esi, r8d + cmp esi, dword ptr [rdx+0x08] + jae SHORT G_M6389_IG11 + mov r9d, esi + movzx rcx, word ptr [rdx+2*r9+0x0C] + ; gcrRegs -[rcx] + sub eax, ecx + ;; size=30 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx]
sub eax, r9d ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 91, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 91 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 121, prolog size 6, PerfScore 73.75, instruction count 44, allocated bytes for code 121 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

libraries.pmi.windows.x64.checked.mch

-31 (-18.24%) : 216873.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)

@@ -8,37 +8,36 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T13] ( 3, 3 ) double -> mm1 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) ubyte -> r8 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) double -> mm1 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> r8 single-def
; V03 loc0 [V03,T02] ( 4, 9 ) int -> rsi
-; V04 loc1 [V04,T08] ( 2, 3 ) ref -> rdi class-hnd single-def <System.String>
+; V04 loc1 [V04,T07] ( 2, 3 ) ref -> rdi class-hnd single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V06 loc3 [V06,T00] ( 7, 12 ) int -> registers
+;* V06 loc3 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T09] ( 2, 2 ) ref -> rdi
+; V08 tmp1 [V08,T08] ( 2, 2 ) ref -> rdi
;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V10 tmp3 [V10,T04] ( 3, 6 ) int -> r14 "impSpillLclRefs" -; V11 tmp4 [V11,T06] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp5 [V12,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V13 tmp6 [V13,T10] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp7 [V14,T12] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP -; V15 cse0 [V15,T01] ( 3, 10 ) int -> r9 "CSE - aggressive" -; V16 cse1 [V16,T07] ( 2, 5 ) long -> registers hoist "CSE - aggressive"
+; V10 tmp3 [V10,T06] ( 2, 4 ) int -> r9 "impSpillLclRefs" +; V11 tmp4 [V11,T05] ( 2, 5 ) byref -> rbp single-def "field V05._reference (fldOffset=0x0)" P-INDEP +;* V12 tmp5 [V12,T10] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP +; V13 tmp6 [V13,T09] ( 2, 2 ) byref -> rbp single-def "field V09._reference (fldOffset=0x0)" P-INDEP +;* V14 tmp7 [V14,T11] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP +; V15 tmp8 [V15,T00] ( 8, 16 ) long -> r14 "Widened primary induction variable" +; V16 cse0 [V16,T01] ( 3, 10 ) int -> r9 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M10117_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
vzeroupper mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 7.50
+ ;; size=16 bbWeight=1 PerfScore 6.50
G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz vcvttsd2si esi, xmm1 mov rdi, 0xD1FFAB1E @@ -49,18 +48,11 @@ G_M10117_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmove rdi, r9 mov rbp, 0xD1FFAB1E ; static handle mov r14d, 13
- jmp SHORT G_M10117_IG07
+ jmp SHORT G_M10117_IG05
;; size=49 bbWeight=1 PerfScore 9.50
-G_M10117_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M10117_IG03: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[r9] ; byrRegs +[rbp]
- mov r14d, r15d - jmp SHORT G_M10117_IG05 - ;; size=5 bbWeight=1 PerfScore 2.25 -G_M10117_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref - mov rax, r14 - mov r14d, r15d - mov r15, rax
sub esi, r9d mov r9d, r14d and r9d, 1 @@ -74,38 +66,31 @@ G_M10117_IG04: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rb call [System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this] ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- mov eax, r14d
+ ;; size=30 bbWeight=2 PerfScore 15.50 +G_M10117_IG04: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
- mov r14, r15 - mov r15d, eax - ;; size=48 bbWeight=2 PerfScore 18.50 -G_M10117_IG05: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz - cmp r15d, 13 - jae SHORT G_M10117_IG09
+ cmp r14d, 13 + jae SHORT G_M10117_IG07
mov r9d, dword ptr [rbp+4*r14] cmp r9d, esi
- jle SHORT G_M10117_IG04
+ jle SHORT G_M10117_IG03
;; size=16 bbWeight=4 PerfScore 18.00
-G_M10117_IG06: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref - mov r14d, r15d - ;; size=3 bbWeight=2 PerfScore 0.50 -G_M10117_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz - lea r9d, [r14-0x01] - mov r15d, r9d - test r14d, r14d - jne SHORT G_M10117_IG03 - ;; size=12 bbWeight=1 PerfScore 2.00 -G_M10117_IG08: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+G_M10117_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz + mov r9d, r14d + dec r14d + test r9d, r9d + jne SHORT G_M10117_IG04 + ;; size=11 bbWeight=1 PerfScore 1.75 +G_M10117_IG06: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M10117_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi] ; byrRegs -[rbp] call CORINFO_HELP_RNGCHKFAIL @@ -113,7 +98,7 @@ G_M10117_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 18, PerfScore 62.50, instruction count 54, allocated bytes for code 170 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
+; Total bytes of code 139, prolog size 16, PerfScore 55.00, instruction count 43, allocated bytes for code 139 (MethodHash=4f55d87a) for method System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
; ============================================================ Unwind Info: @@ -121,15 +106,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

-24 (-11.82%) : 77822.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,25 +22,25 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx] mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] @@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10] movsxd rdx, edi mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi + ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rdx, gword ptr [rbx+0x10] ; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12 mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx ; gcrRegs +[rcx] mov eax, esi @@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, rbp ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbp] +[rcx] cmp dword ptr [rcx], ecx ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rcx] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -160,14 +155,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

-15 (-11.11%) : 17976.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)

@@ -11,27 +11,27 @@ ; V00 this [V00,T04] ( 5, 11 ) byref -> rbx this single-def ; V01 arg1 [V01,T06] ( 3, 6 ) int -> rsi single-def ; V02 loc0 [V02,T05] ( 4, 10 ) ref -> rbp class-hnd exact single-def <System.Object[]>
-; V03 loc1 [V03,T00] ( 8, 29 ) int -> r14
+;* V03 loc1 [V03,T08] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <System.Object> ;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Data.DataColumn> ; V07 tmp3 [V07,T01] ( 3, 24 ) ref -> rcx "arr expr" ; V08 tmp4 [V08,T02] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V09 cse0 [V09,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V09 tmp5 [V09,T00] ( 8, 29 ) long -> rdi "Widened primary induction variable" +; V10 cse0 [V10,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M15143_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; byrRegs +[rbx] mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M15143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov rdi, gword ptr [rbx] ; gcrRegs +[rdi] @@ -42,18 +42,18 @@ G_M15143_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- xor r14d, r14d
cmp dword ptr [rdi+0x08], 0 jle SHORT G_M15143_IG04
- ;; size=33 bbWeight=1 PerfScore 9.75
+ xor edi, edi + ; gcrRegs -[rdi] + ;; size=32 bbWeight=1 PerfScore 9.75
G_M15143_IG03: ; bbWeight=4, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx]
- cmp r14d, dword ptr [rcx+0x08]
+ cmp edi, dword ptr [rcx+0x08]
jae SHORT G_M15143_IG06
- mov edx, r14d - mov rcx, gword ptr [rcx+8*rdx+0x10]
+ mov rcx, gword ptr [rcx+8*rdi+0x10]
mov rcx, gword ptr [rcx+0x60] mov edx, esi mov rax, qword ptr [rcx] @@ -61,22 +61,21 @@ G_M15143_IG03: ; bbWeight=4, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, call [rax+0x08]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M15143_IG06
- mov ecx, r14d - lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx] ; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], r14d
+ cmp dword ptr [rax+0x08], edi
jg SHORT G_M15143_IG03
- ;; size=67 bbWeight=4 PerfScore 125.00
+ ;; size=57 bbWeight=4 PerfScore 123.00
G_M15143_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] ; byrRegs -[rbx] @@ -84,14 +83,13 @@ G_M15143_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byr ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25 G_M15143_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M15143_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbp] call CORINFO_HELP_RNGCHKFAIL @@ -99,7 +97,7 @@ G_M15143_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 135, prolog size 10, PerfScore 144.50, instruction count 46, allocated bytes for code 135 (MethodHash=84b4c4d8) for method System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
+; Total bytes of code 120, prolog size 8, PerfScore 141.00, instruction count 42, allocated bytes for code 120 (MethodHash=84b4c4d8) for method System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -107,14 +105,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+13 (+26.00%) : 250744.dasm - System.CommandLine.Invocation.ParseErrorAction:g_GetStartsWithDistance|111(System.String,System.String):int (FullOpts)

@@ -7,13 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 loc0 [V02,T00] ( 7, 22 ) int -> rax
+; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> +; V02 loc0 [V02,T05] ( 2, 2 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T04] ( 2, 9 ) int -> r8 hoist "CSE - aggressive" -; V05 cse1 [V05,T05] ( 2, 8 ) int -> r10 "CSE - aggressive" -; V06 cse2 [V06,T02] ( 3, 12 ) long -> r10 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 10, 34 ) long -> rax "Widened primary induction variable" +; V05 cse0 [V05,T01] ( 3, 13 ) int -> r8 hoist "CSE - aggressive" +; V06 cse1 [V06,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -37,18 +37,26 @@ G_M8352_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, mov r10d, dword ptr [rdx+0x08] cmp r10d, eax jle SHORT G_M8352_IG06
- mov r10d, eax - movzx r9, word ptr [rcx+2*r10+0x0C] - cmp r9w, word ptr [rdx+2*r10+0x0C]
+ cmp eax, r8d + jae SHORT G_M8352_IG07 + movzx r9, word ptr [rcx+2*rax+0x0C] + cmp eax, r10d + jae SHORT G_M8352_IG07 + cmp r9w, word ptr [rdx+2*rax+0x0C]
je SHORT G_M8352_IG03
- ;; size=26 bbWeight=4 PerfScore 38.00
+ ;; size=33 bbWeight=4 PerfScore 47.00
G_M8352_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M8352_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 54.25, instruction count 16, allocated bytes for code 50 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
+; Total bytes of code 63, prolog size 4, PerfScore 63.25, instruction count 21, allocated bytes for code 63 (MethodHash=aa3edf5f) for method System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
; ============================================================ Unwind Info:

+21 (+33.33%) : 161240.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)

@@ -7,40 +7,46 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 5, 9 ) ref -> rcx class-hnd single-def <System.String> -; V01 loc0 [V01,T00] ( 6, 19 ) int -> rax
+; V00 arg0 [V00,T02] ( 5, 9 ) ref -> rcx class-hnd single-def <System.String> +;* V01 loc0 [V01,T05] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 6 ) int -> rdx "CSE - aggressive" -; V04 cse1 [V04,T03] ( 2, 2 ) int -> rdx "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 7, 23 ) long -> r8 "Widened primary induction variable" +; V04 cse0 [V04,T04] ( 3, 6 ) int -> rdx "CSE - aggressive" +; V05 cse1 [V05,T01] ( 5, 14 ) int -> r10 multi-def "CSE - aggressive" +; V06 cse2 [V06,T03] ( 4, 8 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M53831_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M53831_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M53831_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- xor eax, eax - mov edx, dword ptr [rcx+0x08] - dec edx
+ mov eax, dword ptr [rcx+0x08] + lea edx, [rax-0x01]
test edx, edx jle SHORT G_M53831_IG06
- ;; size=11 bbWeight=1 PerfScore 3.75
+ xor r8d, r8d + ;; size=13 bbWeight=1 PerfScore 4.00
G_M53831_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, eax
+ cmp r8d, eax + jae SHORT G_M53831_IG10
cmp word ptr [rcx+2*r8+0x0C], 46 jne SHORT G_M53831_IG05
- ;; size=12 bbWeight=4 PerfScore 17.00
+ ;; size=14 bbWeight=4 PerfScore 21.00
G_M53831_IG04: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- lea r8d, [rax+0x01] - cmp word ptr [rcx+2*r8+0x0C], 46
+ lea r10d, [r8+0x01] + cmp r10d, eax + jae SHORT G_M53831_IG10 + cmp word ptr [rcx+2*r10+0x0C], 46
je SHORT G_M53831_IG08
- ;; size=13 bbWeight=2 PerfScore 9.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M53831_IG05: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- inc eax - cmp edx, eax
+ lea r10d, [r8+0x01] + mov r8d, r10d + cmp edx, r8d
jg SHORT G_M53831_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M53831_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] xor eax, eax @@ -56,8 +62,13 @@ G_M53831_IG09: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M53831_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 63, prolog size 4, PerfScore 37.50, instruction count 21, allocated bytes for code 63 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 4, PerfScore 46.25, instruction count 27, allocated bytes for code 84 (MethodHash=36dc2db8) for method Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
; ============================================================ Unwind Info:

+30 (+33.33%) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,17 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> rsi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r11 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -40,47 +39,59 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG10 - mov ebx, r11d - movzx rbx, word ptr [rcx+2*rbx+0x0C]
+ jae SHORT G_M6389_IG11 + movzx rbx, word ptr [rcx+2*r11+0x0C]
lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG10 - movzx rsi, word ptr [rdx+2*rsi+0x0C] - cmp ebx, esi
+ jae SHORT G_M6389_IG11 + cmp bx, word ptr [rdx+2*rsi+0x0C]
je SHORT G_M6389_IG03
- ;; size=31 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx] - mov eax, ebx - sub eax, esi - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=27 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov esi, r11d + cmp esi, r10d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + cmp esi, eax + jae SHORT G_M6389_IG11 + mov eax, esi + movzx rax, word ptr [rcx+2*rax+0x0C] + add esi, r8d + cmp esi, dword ptr [rdx+0x08] + jae SHORT G_M6389_IG11 + mov r9d, esi + movzx rcx, word ptr [rdx+2*r9+0x0C] + ; gcrRegs -[rcx] + sub eax, ecx + ;; size=30 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx]
sub eax, r9d ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 120, prolog size 6, PerfScore 73.75, instruction count 44, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-6 (-10.00%) : 342068.dasm - System.Linq.SingleLinkedNode1[int]:FillReversed(System.Span1[int]):this (Tier1)

@@ -11,13 +11,14 @@ ; ; V00 this [V00,T03] ( 4, 4 ) ref -> rcx this class-hnd single-def <System.Linq.SingleLinkedNode`1[int]> ; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rdx ld-addr-op single-def
-; V02 loc0 [V02,T02] ( 5, 6.70) int -> r8 -; V03 loc1 [V03,T01] ( 5, 6.70) ref -> r10 class-hnd <System.Linq.SingleLinkedNode`1[int]>
+;* V02 loc0 [V02,T06] ( 0, 0 ) int -> zero-ref +; V03 loc1 [V03,T01] ( 5, 6.70) ref -> r8 class-hnd <System.Linq.SingleLinkedNode`1[int]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ; V06 tmp2 [V06,T05] ( 2, 2.43) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp3 [V07,T04] ( 3, 3.43) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
+; V07 tmp3 [V07,T04] ( 3, 3.01) int -> rdx "field V01._length (fldOffset=0x8)" P-INDEP
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[int]>
+; V09 tmp5 [V09,T02] ( 5, 6.29) long -> rcx "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -31,37 +32,38 @@ G_M40341_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, ; byrRegs +[rax] mov edx, dword ptr [rdx+0x08] ; byrRegs -[rdx]
- mov r8d, edx - mov r10, rcx - ; gcrRegs +[r10]
+ mov r8, rcx + ; gcrRegs +[r8]
test rcx, rcx
- je SHORT G_M40341_IG04 - ;; size=17 bbWeight=1 PerfScore 5.75 -G_M40341_IG03: ; bbWeight=1.43, gcrefRegs=0400 {r10}, byrefRegs=0001 {rax}, byref, isz
+ je SHORT G_M40341_IG05 + ;; size=14 bbWeight=1 PerfScore 5.50 +G_M40341_IG03: ; bbWeight=0.59, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rcx]
- dec r8d - cmp r8d, edx - jae SHORT G_M40341_IG05 - mov ecx, r8d - mov r9d, dword ptr [r10+0x10] - mov dword ptr [rax+4*rcx], r9d - mov r10, gword ptr [r10+0x08] - test r10, r10 - jne SHORT G_M40341_IG03 - ;; size=28 bbWeight=1.43 PerfScore 11.41 -G_M40341_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r10]
+ mov ecx, edx + ;; size=2 bbWeight=0.59 PerfScore 0.15 +G_M40341_IG04: ; bbWeight=1.43, gcrefRegs=0100 {r8}, byrefRegs=0001 {rax}, byref, isz + dec ecx + cmp ecx, edx + jae SHORT G_M40341_IG06 + mov r10d, dword ptr [r8+0x10] + mov dword ptr [rax+4*rcx], r10d + mov r8, gword ptr [r8+0x08] + test r8, r8 + jne SHORT G_M40341_IG04 + ;; size=23 bbWeight=1.43 PerfScore 11.05 +G_M40341_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r8]
; byrRegs -[rax] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M40341_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M40341_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 18.66, instruction count 20, allocated bytes for code 60 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
+; Total bytes of code 54, prolog size 4, PerfScore 18.20, instruction count 19, allocated bytes for code 54 (MethodHash=2db3626a) for method System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
; ============================================================ Unwind Info:

-33 (-9.09%) : 335254.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.ConcatKey2[int,int]]:Dispose():this (Tier1)

@@ -10,179 +10,183 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 8, 6.50) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]>
-; V01 loc0 [V01,T08] ( 8, 5 ) int -> rsi -; V02 loc1 [V02,T07] ( 6, 5.50) int -> rdi
+;* V01 loc0 [V01,T09] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T10] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> r15 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> rbp class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier>
-; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> -; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> -; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rbp "arr expr" -; V11 tmp8 [V11,T05] ( 3, 6 ) ref -> rcx "arr expr" -; V12 tmp9 [V12,T06] ( 3, 6 ) ref -> rcx "arr expr" -; V13 tmp10 [V13,T11] ( 2, 0 ) ref -> rdx "argument with side effect" -; V14 cse0 [V14,T09] ( 4, 3 ) long -> r14 "CSE - aggressive"
+; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> +; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> +; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rcx "arr expr" +; V11 tmp8 [V11,T06] ( 3, 6 ) ref -> rcx "arr expr" +; V12 tmp9 [V12,T07] ( 3, 6 ) ref -> rcx "arr expr" +; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect" +; V14 tmp11 [V14,T05] ( 10, 6.67) long -> rsi "Widened primary induction variable" +; V15 tmp12 [V15,T08] ( 6, 5.33) long -> rdi "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M52710_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50 -G_M52710_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=1 PerfScore 5.50 +G_M52710_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x44], 0
- jne G_M52710_IG11 - ;; size=10 bbWeight=1 PerfScore 4.00
+ jne SHORT G_M52710_IG04 + ;; size=6 bbWeight=1 PerfScore 4.00
G_M52710_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor esi, esi
mov rcx, gword ptr [rbx+0x30] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x08], 0
- jle G_M52710_IG11 - ;; size=16 bbWeight=0.50 PerfScore 3.12 -G_M52710_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - xor edi, edi - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp] - cmp esi, dword ptr [rbp+0x08] - jae G_M52710_IG13 - mov r14d, esi - mov rcx, gword ptr [rbp+8*r14+0x10] - ; gcrRegs +[rcx] - cmp dword ptr [rcx+0x08], 0 - jle G_M52710_IG10 - ;; size=33 bbWeight=0.50 PerfScore 6.25 -G_M52710_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx rbp] - mov rcx, gword ptr [rbx+0x30] - ; gcrRegs +[rcx] - cmp esi, dword ptr [rcx+0x08] - jae G_M52710_IG13 - mov rcx, gword ptr [rcx+8*r14+0x10] - cmp edi, dword ptr [rcx+0x08] - jae G_M52710_IG13 - mov edx, edi - mov r15, gword ptr [rcx+8*rdx+0x10] - ; gcrRegs +[r15] - test r15, r15 - je SHORT G_M52710_IG09 - cmp dword ptr [r15+0x3C], 0 - jne G_M52710_IG14 - ;; size=50 bbWeight=1 PerfScore 19.50 -G_M52710_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E ; System.Threading.Barrier - cmp qword ptr [r15], rcx - jne G_M52710_IG12 - cmp byte ptr [r15+0x40], 0 - jne SHORT G_M52710_IG08 - ;; size=26 bbWeight=1 PerfScore 8.25 -G_M52710_IG07: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rbp, gword ptr [r15+0x08] - ; gcrRegs +[rbp] - mov rcx, rbp - ; gcrRegs +[rcx] - mov edx, 1 - mov rax, qword ptr [rbp] - mov rax, qword ptr [rax+0x48] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rcx, rbp - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx rbp] - ; gcr arg pop 0 - mov rbp, gword ptr [r15+0x10] - ; gcrRegs +[rbp] - mov rcx, rbp - ; gcrRegs +[rcx] - mov edx, 1 - mov rax, qword ptr [rbp] - mov rax, qword ptr [rax+0x48] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rcx, rbp - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx rbp] - ; gcr arg pop 0 - mov byte ptr [r15+0x40], 1 - ;; size=67 bbWeight=1.01 PerfScore 22.77 -G_M52710_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rcx, r15 - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx r15] - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M52710_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - inc edi - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp] - cmp esi, dword ptr [rbp+0x08] - jae SHORT G_M52710_IG13 - mov rax, gword ptr [rbp+8*r14+0x10] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], edi - jg G_M52710_IG05 - ;; size=25 bbWeight=1 PerfScore 12.25 -G_M52710_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbp] - inc esi - mov rax, gword ptr [rbx+0x30] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], esi - jg G_M52710_IG04 - ;; size=15 bbWeight=0.50 PerfScore 3.12 -G_M52710_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rax rbx] - add rsp, 40
+ jg G_M52710_IG10 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M52710_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx rbx] + add rsp, 32
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M52710_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r15] - mov rcx, r15
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M52710_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx rbp] + mov rcx, 0xD1FFAB1E ; System.Threading.Barrier + cmp qword ptr [rbp], rcx + jne G_M52710_IG14 + cmp byte ptr [rbp+0x40], 0 + jne SHORT G_M52710_IG07 + ;; size=26 bbWeight=1 PerfScore 8.25 +G_M52710_IG06: ; bbWeight=1.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + mov r14, gword ptr [rbp+0x08] + ; gcrRegs +[r14] + mov rcx, r14
; gcrRegs +[rcx] mov edx, 1
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x48] + call [rax+0x28]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx r14] + ; gcr arg pop 0 + mov r14, gword ptr [rbp+0x10] + ; gcrRegs +[r14] + mov rcx, r14 + ; gcrRegs +[rcx] + mov edx, 1 + mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x48] + call [rax+0x28]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx r14] + ; gcr arg pop 0 + mov byte ptr [rbp+0x40], 1 + ;; size=64 bbWeight=1.01 PerfScore 22.77 +G_M52710_IG07: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + mov rcx, rbp + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx rbp] + ; gcr arg pop 0 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M52710_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + inc edi + mov rcx, gword ptr [rbx+0x30] + ; gcrRegs +[rcx] + cmp esi, dword ptr [rcx+0x08] + jae SHORT G_M52710_IG16 + mov rcx, gword ptr [rcx+8*rsi+0x10] + cmp dword ptr [rcx+0x08], edi + jg SHORT G_M52710_IG13 + ;; size=21 bbWeight=1 PerfScore 12.25 +G_M52710_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + jmp SHORT G_M52710_IG15 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M52710_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + xor esi, esi + ;; size=2 bbWeight=0.17 PerfScore 0.04 +G_M52710_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x30] + ; gcrRegs +[rcx] + cmp esi, dword ptr [rcx+0x08] + jae SHORT G_M52710_IG16 + mov rcx, gword ptr [rcx+8*rsi+0x10]
...

-33 (-9.09%) : 333823.dasm - System.Linq.Parallel.SortHelper2[int,System.Linq.Parallel.Pair2[int,int]]:Dispose():this (Tier1)

@@ -10,179 +10,183 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 8, 6.50) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]>
-; V01 loc0 [V01,T08] ( 8, 5 ) int -> rsi -; V02 loc1 [V02,T07] ( 6, 5.50) int -> rdi
+;* V01 loc0 [V01,T09] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T10] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> r15 class-hnd "dup spill" <System.Threading.Barrier>
+; V04 tmp1 [V04,T00] ( 12, 22.07) ref -> rbp class-hnd "dup spill" <System.Threading.Barrier>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
-; V06 tmp3 [V06,T10] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V06 tmp3 [V06,T11] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Barrier>
-; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> -; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> rbp class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> -; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rbp "arr expr" -; V11 tmp8 [V11,T05] ( 3, 6 ) ref -> rcx "arr expr" -; V12 tmp9 [V12,T06] ( 3, 6 ) ref -> rcx "arr expr" -; V13 tmp10 [V13,T11] ( 2, 0 ) ref -> rdx "argument with side effect" -; V14 cse0 [V14,T09] ( 4, 3 ) long -> r14 "CSE - aggressive"
+; V08 tmp5 [V08,T03] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> +; V09 tmp6 [V09,T04] ( 4, 8.10) ref -> r14 class-hnd "Inlining Arg" <System.Threading.ManualResetEventSlim> +; V10 tmp7 [V10,T01] ( 6, 9 ) ref -> rcx "arr expr" +; V11 tmp8 [V11,T06] ( 3, 6 ) ref -> rcx "arr expr" +; V12 tmp9 [V12,T07] ( 3, 6 ) ref -> rcx "arr expr" +; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> rdx "argument with side effect" +; V14 tmp11 [V14,T05] ( 10, 6.67) long -> rsi "Widened primary induction variable" +; V15 tmp12 [V15,T08] ( 6, 5.33) long -> rdi "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M38639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 6.50 -G_M38639_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=1 PerfScore 5.50 +G_M38639_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x44], 0
- jne G_M38639_IG11 - ;; size=10 bbWeight=1 PerfScore 4.00
+ jne SHORT G_M38639_IG04 + ;; size=6 bbWeight=1 PerfScore 4.00
G_M38639_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor esi, esi
mov rcx, gword ptr [rbx+0x30] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x08], 0
- jle G_M38639_IG11 - ;; size=16 bbWeight=0.50 PerfScore 3.12 -G_M38639_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - xor edi, edi - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp] - cmp esi, dword ptr [rbp+0x08] - jae G_M38639_IG13 - mov r14d, esi - mov rcx, gword ptr [rbp+8*r14+0x10] - ; gcrRegs +[rcx] - cmp dword ptr [rcx+0x08], 0 - jle G_M38639_IG10 - ;; size=33 bbWeight=0.50 PerfScore 6.25 -G_M38639_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx rbp] - mov rcx, gword ptr [rbx+0x30] - ; gcrRegs +[rcx] - cmp esi, dword ptr [rcx+0x08] - jae G_M38639_IG13 - mov rcx, gword ptr [rcx+8*r14+0x10] - cmp edi, dword ptr [rcx+0x08] - jae G_M38639_IG13 - mov edx, edi - mov r15, gword ptr [rcx+8*rdx+0x10] - ; gcrRegs +[r15] - test r15, r15 - je SHORT G_M38639_IG09 - cmp dword ptr [r15+0x3C], 0 - jne G_M38639_IG14 - ;; size=50 bbWeight=1 PerfScore 19.50 -G_M38639_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - mov rcx, 0xD1FFAB1E ; System.Threading.Barrier - cmp qword ptr [r15], rcx - jne G_M38639_IG12 - cmp byte ptr [r15+0x40], 0 - jne SHORT G_M38639_IG08 - ;; size=26 bbWeight=1 PerfScore 8.25 -G_M38639_IG07: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rbp, gword ptr [r15+0x08] - ; gcrRegs +[rbp] - mov rcx, rbp - ; gcrRegs +[rcx] - mov edx, 1 - mov rax, qword ptr [rbp] - mov rax, qword ptr [rax+0x48] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rcx, rbp - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx rbp] - ; gcr arg pop 0 - mov rbp, gword ptr [r15+0x10] - ; gcrRegs +[rbp] - mov rcx, rbp - ; gcrRegs +[rcx] - mov edx, 1 - mov rax, qword ptr [rbp] - mov rax, qword ptr [rax+0x48] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rcx, rbp - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx rbp] - ; gcr arg pop 0 - mov byte ptr [r15+0x40], 1 - ;; size=67 bbWeight=1.01 PerfScore 22.77 -G_M38639_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rcx, r15 - ; gcrRegs +[rcx] - call <unknown method> - ; gcrRegs -[rcx r15] - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M38639_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - inc edi - mov rbp, gword ptr [rbx+0x30] - ; gcrRegs +[rbp] - cmp esi, dword ptr [rbp+0x08] - jae SHORT G_M38639_IG13 - mov rax, gword ptr [rbp+8*r14+0x10] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], edi - jg G_M38639_IG05 - ;; size=25 bbWeight=1 PerfScore 12.25 -G_M38639_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbp] - inc esi - mov rax, gword ptr [rbx+0x30] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], esi - jg G_M38639_IG04 - ;; size=15 bbWeight=0.50 PerfScore 3.12 -G_M38639_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rax rbx] - add rsp, 40
+ jg G_M38639_IG10 + ;; size=14 bbWeight=0.50 PerfScore 3.00 +G_M38639_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx rbx] + add rsp, 32
pop rbx pop rbp pop rsi pop rdi pop r14
- pop r15
ret
- ;; size=13 bbWeight=1 PerfScore 4.25 -G_M38639_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r15] - mov rcx, r15
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M38639_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx rbp] + mov rcx, 0xD1FFAB1E ; System.Threading.Barrier + cmp qword ptr [rbp], rcx + jne G_M38639_IG14 + cmp byte ptr [rbp+0x40], 0 + jne SHORT G_M38639_IG07 + ;; size=26 bbWeight=1 PerfScore 8.25 +G_M38639_IG06: ; bbWeight=1.01, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + mov r14, gword ptr [rbp+0x08] + ; gcrRegs +[r14] + mov rcx, r14
; gcrRegs +[rcx] mov edx, 1
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x48] + call [rax+0x28]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx r14] + ; gcr arg pop 0 + mov r14, gword ptr [rbp+0x10] + ; gcrRegs +[r14] + mov rcx, r14 + ; gcrRegs +[rcx] + mov edx, 1 + mov rax, qword ptr [r14] + mov rax, qword ptr [rax+0x48] + call [rax+0x28]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0 + mov rcx, r14 + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx r14] + ; gcr arg pop 0 + mov byte ptr [rbp+0x40], 1 + ;; size=64 bbWeight=1.01 PerfScore 22.77 +G_M38639_IG07: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + mov rcx, rbp + ; gcrRegs +[rcx] + call <unknown method> + ; gcrRegs -[rcx rbp] + ; gcr arg pop 0 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M38639_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + inc edi + mov rcx, gword ptr [rbx+0x30] + ; gcrRegs +[rcx] + cmp esi, dword ptr [rcx+0x08] + jae SHORT G_M38639_IG16 + mov rcx, gword ptr [rcx+8*rsi+0x10] + cmp dword ptr [rcx+0x08], edi + jg SHORT G_M38639_IG13 + ;; size=21 bbWeight=1 PerfScore 12.25 +G_M38639_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + jmp SHORT G_M38639_IG15 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M38639_IG10: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + xor esi, esi + ;; size=2 bbWeight=0.17 PerfScore 0.04 +G_M38639_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+0x30] + ; gcrRegs +[rcx] + cmp esi, dword ptr [rcx+0x08] + jae SHORT G_M38639_IG16 + mov rcx, gword ptr [rcx+8*rsi+0x10]
...

+6 (+17.14%) : 357620.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)

@@ -9,11 +9,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T03] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T00] ( 5,555.53) int -> rdx
+;* V01 loc0 [V01,T04] ( 0, 0 ) int -> zero-ref
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 2,139.63) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T01] ( 3,140.63) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V04 tmp2 [V04,T01] ( 4,279.27) int -> rcx single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
+; V06 tmp4 [V06,T00] ( 6,694.16) long -> rdx "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -26,24 +27,32 @@ G_M58764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rax] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor edx, edx
test ecx, ecx
- jle SHORT G_M58764_IG04 - ;; size=12 bbWeight=1 PerfScore 5.50 -G_M58764_IG03: ; bbWeight=138.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz - mov r8d, edx - mov byte ptr [rax+r8], 204
+ jle SHORT G_M58764_IG05 + ;; size=10 bbWeight=1 PerfScore 5.25 +G_M58764_IG03: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref + xor edx, edx + ;; size=2 bbWeight=0.99 PerfScore 0.25 +G_M58764_IG04: ; bbWeight=138.63, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + cmp edx, ecx + jae SHORT G_M58764_IG06 + mov byte ptr [rax+rdx], 204
inc edx cmp edx, ecx
- jl SHORT G_M58764_IG03 - ;; size=14 bbWeight=138.63 PerfScore 381.24 -G_M58764_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M58764_IG04 + ;; size=14 bbWeight=138.63 PerfScore 519.88 +G_M58764_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M58764_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 4, PerfScore 388.24, instruction count 13, allocated bytes for code 35 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
+; Total bytes of code 41, prolog size 4, PerfScore 526.87, instruction count 16, allocated bytes for code 41 (MethodHash=de8b1a73) for method System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
; ============================================================ Unwind Info:

+16 (+21.05%) : 198786.dasm - System.Collections.Concurrent.BlockingCollection1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection1[int][],int):int (Tier1)

@@ -11,52 +11,57 @@ ; ; V00 arg0 [V00,T01] ( 5, 12.37) ref -> rcx class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[int][]> ; V01 arg1 [V01,T03] ( 3, 2.21) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 7, 40.42) int -> rbx
+; V02 loc0 [V02,T04] ( 4, 0.84) int -> rbx
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 1.26) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
+; V04 tmp1 [V04,T05] ( 3, 1.26) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken> ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T05] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP -; V09 cse0 [V09,T02] ( 3, 11.95) int -> rax "CSE - aggressive"
+;* V08 tmp5 [V08,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T00] ( 6, 39.77) long -> r8 "Widened primary induction variable" +; V10 cse0 [V10,T02] ( 4, 12.16) int -> r9 "CSE - aggressive"
; ; Lcl frame size = 32
-G_M41602_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M41602_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- xor ebx, ebx - mov eax, dword ptr [rcx+0x08] - test eax, eax - jle SHORT G_M41602_IG05 - ;; size=9 bbWeight=1 PerfScore 3.50 -G_M41602_IG03: ; bbWeight=9.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - mov r9d, ebx - mov r9, gword ptr [rcx+8*r9+0x10] - ; gcrRegs +[r9] - cmp gword ptr [r9+0x10], 0 - je SHORT G_M41602_IG07 - ;; size=15 bbWeight=9.16 PerfScore 57.24 -G_M41602_IG04: ; bbWeight=9.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r9] - inc ebx - cmp eax, ebx - jg SHORT G_M41602_IG03 - ;; size=6 bbWeight=9.95 PerfScore 14.92 -G_M41602_IG05: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9d, dword ptr [rcx+0x08] + test r9d, r9d + jle SHORT G_M41602_IG06 + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M41602_IG03: ; bbWeight=0.56, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + xor r8d, r8d + ;; size=3 bbWeight=0.56 PerfScore 0.14 +G_M41602_IG04: ; bbWeight=9.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + mov rax, gword ptr [rcx+8*r8+0x10] + ; gcrRegs +[rax] + cmp gword ptr [rax+0x10], 0 + je SHORT G_M41602_IG08 + ;; size=12 bbWeight=9.16 PerfScore 54.95 +G_M41602_IG05: ; bbWeight=9.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + inc r8d + cmp r9d, r8d + jg SHORT G_M41602_IG04 + ;; size=8 bbWeight=9.95 PerfScore 14.92 +G_M41602_IG06: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov eax, -1 ;; size=5 bbWeight=0.79 PerfScore 0.20
-G_M41602_IG06: ; bbWeight=0.79, epilog, nogc, extend
+G_M41602_IG07: ; bbWeight=0.79, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.79 PerfScore 1.38
-G_M41602_IG07: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M41602_IG08: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
+ mov ebx, r8d + cmp ebx, r9d + jae SHORT G_M41602_IG10
mov r9d, ebx mov rcx, gword ptr [rcx+8*r9+0x10] cmp byte ptr [rcx], cl @@ -67,14 +72,19 @@ G_M41602_IG07: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rcx r9] ; gcr arg pop 0 mov eax, ebx
- ;; size=24 bbWeight=0.21 PerfScore 1.89 -G_M41602_IG08: ; bbWeight=0.21, epilog, nogc, extend
+ ;; size=32 bbWeight=0.21 PerfScore 2.21 +G_M41602_IG09: ; bbWeight=0.21, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.21 PerfScore 0.37
+G_M41602_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 5, PerfScore 80.75, instruction count 27, allocated bytes for code 76 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
+; Total bytes of code 92, prolog size 5, PerfScore 78.67, instruction count 31, allocated bytes for code 92 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
; ============================================================ Unwind Info:

+30 (+33.33%) : 425263.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)

@@ -8,17 +8,16 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 26 ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 5.69) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 4, 7.38) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T05] ( 3, 4.69) int -> r8 single-def -; V03 arg3 [V03,T08] ( 5, 4.08) int -> r9 single-def -; V04 loc0 [V04,T04] ( 5, 6.77) int -> r10 -; V05 loc1 [V05,T00] ( 7, 15.38) int -> r11
+; V00 arg0 [V00,T03] ( 5, 6.62) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 9.23) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 5.62) int -> r8 single-def +; V03 arg3 [V03,T06] ( 5, 4.08) int -> r9 single-def +; V04 loc0 [V04,T04] ( 6, 7.77) int -> r10 +; V05 loc1 [V05,T08] ( 5, 4.77) int -> rsi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T06] ( 3, 6.31) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T07] ( 3, 6.31) int -> rbx "CSE - aggressive" -; V09 cse2 [V09,T02] ( 3, 8.08) int -> rsi "CSE - aggressive" -; V10 cse3 [V10,T09] ( 4, 4.77) int -> rax "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 16.38) long -> r11 "Widened primary induction variable" +; V08 cse0 [V08,T02] ( 6, 10.85) int -> rsi multi-def "CSE - aggressive" +; V09 cse1 [V09,T07] ( 5, 5.69) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -41,47 +40,59 @@ G_M6389_IG03: ; bbWeight=1.77, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 { ;; size=3 bbWeight=1.77 PerfScore 0.44 G_M6389_IG04: ; bbWeight=2.77, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=2.77 PerfScore 3.46 G_M6389_IG05: ; bbWeight=2.69, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG10 - mov ebx, r11d - movzx rbx, word ptr [rcx+2*rbx+0x0C]
+ jae SHORT G_M6389_IG11 + movzx rbx, word ptr [rcx+2*r11+0x0C]
lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG10 - movzx rsi, word ptr [rdx+2*rsi+0x0C] - cmp ebx, esi
+ jae SHORT G_M6389_IG11 + cmp bx, word ptr [rdx+2*rsi+0x0C]
je SHORT G_M6389_IG03
- ;; size=31 bbWeight=2.69 PerfScore 30.29 -G_M6389_IG06: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx] - mov eax, ebx - sub eax, esi - ;; size=4 bbWeight=0.92 PerfScore 0.46 -G_M6389_IG07: ; bbWeight=0.92, epilog, nogc, extend
+ ;; size=27 bbWeight=2.69 PerfScore 31.63 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov esi, r11d + cmp esi, r10d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.92, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + cmp esi, eax + jae SHORT G_M6389_IG11 + mov eax, esi + movzx rax, word ptr [rcx+2*rax+0x0C] + add esi, r8d + cmp esi, dword ptr [rdx+0x08] + jae SHORT G_M6389_IG11 + mov r9d, esi + movzx rcx, word ptr [rdx+2*r9+0x0C] + ; gcrRegs -[rcx] + sub eax, ecx + ;; size=30 bbWeight=0.92 PerfScore 9.46 +G_M6389_IG08: ; bbWeight=0.92, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.92 PerfScore 2.08
-G_M6389_IG08: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx]
sub eax, r9d ;; size=3 bbWeight=0.08 PerfScore 0.02
-G_M6389_IG09: ; bbWeight=0.08, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.08, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.08 PerfScore 0.17
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 6, PerfScore 44.17, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
+; Total bytes of code 120, prolog size 6, PerfScore 56.02, instruction count 44, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-29 (-13.24%) : 7661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)

@@ -10,19 +10,19 @@ ; ; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def ; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>> -; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>> +; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" -; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive" -; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive" -; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive" -; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive" -; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive" -; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable" +; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable" +; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive" +; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive" +; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive" +; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx ;; size=18 bbWeight=1 PerfScore 8.50 G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea edx, [rbx+0x0F] and edx, -16 movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class> - mov r15, 0xD1FFAB1E ; static handle - ; byrRegs +[r15] - ;; size=51 bbWeight=1 PerfScore 7.75 -G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25 +G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] ; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13] - mov r12d, dword ptr [rdi+0x08] - mov r8d, r12d
+ mov r14, rax + ; gcrRegs +[r14] + mov r15d, dword ptr [rdi+0x08] + mov r8d, r15d
mov rcx, rdi ; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov eax, dword ptr [r13+0x08] - mov dword ptr [rsp+0x34], eax - cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08] + cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00 -G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref - mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol - mov qword ptr [rsp+0x28], rdx - ;; size=15 bbWeight=2 PerfScore 2.50 -G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz - mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00 +G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref + mov r15d, r15d + mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol + ;; size=13 bbWeight=2 PerfScore 1.00 +G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r12
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d - mov ecx, r12d - lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d + lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r12d - mov r8d, dword ptr [rsp+0x34] - cmp r8d, r12d - mov rdx, qword ptr [rsp+0x28]
+ inc r15d + cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52 -G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04 +G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi ; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx] ; gcr arg pop 0 mov rdi, gword ptr [rsi] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03 - ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03 + ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdi]
- ; byrRegs -[r15] - add rsp, 56
+ add rsp, 40
pop rbx pop rbp pop rsi @@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================ Unwind Info: @@ -139,7 +131,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-29 (-13.24%) : 51683.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)

@@ -10,19 +10,19 @@ ; ; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def ; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>> -; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>> +; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" -; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive" -; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive" -; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive" -; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive" -; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive" -; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable" +; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable" +; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive" +; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive" +; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive" +; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx ;; size=18 bbWeight=1 PerfScore 8.50 G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea edx, [rbx+0x0F] and edx, -16 movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class> - mov r15, 0xD1FFAB1E ; static handle - ; byrRegs +[r15] - ;; size=51 bbWeight=1 PerfScore 7.75 -G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25 +G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] ; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13] - mov r12d, dword ptr [rdi+0x08] - mov r8d, r12d
+ mov r14, rax + ; gcrRegs +[r14] + mov r15d, dword ptr [rdi+0x08] + mov r8d, r15d
mov rcx, rdi ; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov eax, dword ptr [r13+0x08] - mov dword ptr [rsp+0x34], eax - cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08] + cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00 -G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref - mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol - mov qword ptr [rsp+0x28], rdx - ;; size=15 bbWeight=2 PerfScore 2.50 -G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz - mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00 +G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref + mov r15d, r15d + mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol + ;; size=13 bbWeight=2 PerfScore 1.00 +G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r12
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d - mov ecx, r12d - lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d + lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r12d - mov r8d, dword ptr [rsp+0x34] - cmp r8d, r12d - mov rdx, qword ptr [rsp+0x28]
+ inc r15d + cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52 -G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04 +G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi ; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx] ; gcr arg pop 0 mov rdi, gword ptr [rsi] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03 - ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03 + ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdi]
- ; byrRegs -[r15] - add rsp, 56
+ add rsp, 40
pop rbx pop rbp pop rsi @@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================ Unwind Info: @@ -139,7 +131,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-11 (-12.64%) : 1563.dasm - SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)

@@ -9,11 +9,12 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <SharedTypes.ComInterfaces.IIntArrayImpl> ; V01 arg1 [V01,T02] ( 9, 12.04) ref -> rdx class-hnd single-def <int[]>
-; V02 arg2 [V02,T04] ( 6, 8 ) int -> r8 single-def -; V03 loc0 [V03,T00] ( 11, 17.08) int -> rax
+; V02 arg2 [V02,T03] ( 6, 8 ) int -> r8 single-def +;* V03 loc0 [V03,T04] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 4, 16 ) int -> r10 "Strict ordering of exceptions for Array store" -; V06 cse0 [V06,T03] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V05 tmp1 [V05,T01] ( 4, 16 ) int -> rcx "Strict ordering of exceptions for Array store" +; V06 tmp2 [V06,T05] ( 7, 0.25) long -> rax "Widened primary induction variable" +; V07 tmp3 [V07,T00] ( 6, 20.80) long -> rax "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -22,52 +23,52 @@ G_M50668_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=4 bbWeight=1 PerfScore 0.25 G_M50668_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx]
- xor eax, eax
test r8d, r8d
- jle SHORT G_M50668_IG06
+ jle SHORT G_M50668_IG07
test rdx, rdx je SHORT G_M50668_IG05 cmp dword ptr [rdx+0x08], r8d jl SHORT G_M50668_IG05
+ xor eax, eax
;; size=18 bbWeight=1 PerfScore 6.75 G_M50668_IG03: ; bbWeight=3.96, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov ecx, eax - mov r10d, dword ptr [rdx+4*rcx+0x10] - add r10d, r10d - mov dword ptr [rdx+4*rcx+0x10], r10d
+ mov ecx, dword ptr [rdx+4*rax+0x10] + add ecx, ecx + mov dword ptr [rdx+4*rax+0x10], ecx
inc eax cmp eax, r8d jl SHORT G_M50668_IG03
- ;; size=22 bbWeight=3.96 PerfScore 19.80
+ ;; size=17 bbWeight=3.96 PerfScore 18.81
G_M50668_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx]
- jmp SHORT G_M50668_IG06
+ jmp SHORT G_M50668_IG07
;; size=2 bbWeight=1 PerfScore 2.00
-G_M50668_IG05: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M50668_IG05: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
+ xor eax, eax + ;; size=2 bbWeight=0.01 PerfScore 0.00 +G_M50668_IG06: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [rdx+0x08]
- jae SHORT G_M50668_IG07 - mov r10d, eax - mov r10d, dword ptr [rdx+4*r10+0x10] - add r10d, r10d - mov ecx, eax - mov dword ptr [rdx+4*rcx+0x10], r10d
+ jae SHORT G_M50668_IG08 + mov ecx, dword ptr [rdx+4*rax+0x10] + add ecx, ecx + mov dword ptr [rdx+4*rax+0x10], ecx
inc eax cmp eax, r8d
- jl SHORT G_M50668_IG05 - ;; size=30 bbWeight=0.04 PerfScore 0.37 -G_M50668_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jl SHORT G_M50668_IG06 + ;; size=22 bbWeight=0.04 PerfScore 0.35 +G_M50668_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M50668_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50668_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 4, PerfScore 30.42, instruction count 30, allocated bytes for code 87 (MethodHash=34df3a13) for method SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
+; Total bytes of code 76, prolog size 4, PerfScore 29.41, instruction count 28, allocated bytes for code 76 (MethodHash=34df3a13) for method SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
; ============================================================ Unwind Info:

+8 (+18.60%) : 123295.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -10,14 +10,15 @@ ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx single-def ; V01 loc0 [V01,T02] ( 4, 10 ) int -> rax ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> r8
+;* V03 loc2 [V03,T05] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP ; V08 tmp3 [V08,T04] ( 2, 5 ) byref -> rdx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V09 tmp4 [V09,T03] ( 3, 6 ) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
+; V09 tmp4 [V09,T03] ( 4, 10 ) int -> rcx "field V02._length (fldOffset=0x8)" P-INDEP
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V11 tmp6 [V11,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -31,25 +32,31 @@ G_M59336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr ; byrRegs +[rdx] mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx]
- xor r8d, r8d
test ecx, ecx jle SHORT G_M59336_IG04
+ xor r8d, r8d
;; size=15 bbWeight=1 PerfScore 5.75 G_M59336_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rdx+r10]
+ cmp r8d, ecx + jae SHORT G_M59336_IG05 + movzx r10, byte ptr [rdx+r8]
add eax, r10d inc r8d cmp r8d, ecx jl SHORT G_M59336_IG03
- ;; size=19 bbWeight=4 PerfScore 16.00
+ ;; size=21 bbWeight=4 PerfScore 20.00
G_M59336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rdx] add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M59336_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 43, prolog size 4, PerfScore 23.25, instruction count 15, allocated bytes for code 43 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 51, prolog size 4, PerfScore 27.25, instruction count 18, allocated bytes for code 51 (MethodHash=54651837) for method System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info:

+16 (+21.05%) : 69368.dasm - System.Collections.Concurrent.BlockingCollection1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection1[int][],int):int (FullOpts)

@@ -10,40 +10,40 @@ ; ; V00 arg0 [V00,T01] ( 5, 7.50) ref -> rcx class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[int][]> ; V01 arg1 [V01,T03] ( 3, 2.50) int -> rdx single-def
-; V02 loc0 [V02,T00] ( 7, 18 ) int -> rbx
+; V02 loc0 [V02,T04] ( 4, 2 ) int -> rbx
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
+; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.BlockingCollection`1[int]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken> ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T05] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP -; V09 cse0 [V09,T02] ( 3, 6 ) int -> rax "CSE - aggressive"
+;* V08 tmp5 [V08,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._source (fldOffset=0x0)" P-INDEP +; V09 tmp6 [V09,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V10 cse0 [V10,T02] ( 4, 6.50) int -> r9 "CSE - aggressive"
; ; Lcl frame size = 32
-G_M41602_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M41602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx sub rsp, 32 ;; size=5 bbWeight=1 PerfScore 1.25 G_M41602_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx]
- xor ebx, ebx - mov eax, dword ptr [rcx+0x08] - test eax, eax
+ mov r9d, dword ptr [rcx+0x08] + test r9d, r9d
jle SHORT G_M41602_IG04
- ;; size=9 bbWeight=1 PerfScore 3.50
+ xor r8d, r8d + ;; size=12 bbWeight=1 PerfScore 3.50
G_M41602_IG03: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, ebx - mov r9, gword ptr [rcx+8*r9+0x10] - ; gcrRegs +[r9] - cmp gword ptr [r9+0x10], 0
+ mov rax, gword ptr [rcx+8*r8+0x10] + ; gcrRegs +[rax] + cmp gword ptr [rax+0x10], 0
je SHORT G_M41602_IG06
- inc ebx - cmp eax, ebx
+ inc r8d + cmp r9d, r8d
jg SHORT G_M41602_IG03
- ;; size=21 bbWeight=4 PerfScore 31.00
+ ;; size=20 bbWeight=4 PerfScore 30.00
G_M41602_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx r9]
+ ; gcrRegs -[rax rcx]
mov eax, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M41602_IG05: ; bbWeight=0.50, epilog, nogc, extend @@ -51,8 +51,11 @@ G_M41602_IG05: ; bbWeight=0.50, epilog, nogc, extend pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
+ mov ebx, r8d + cmp ebx, r9d + jae SHORT G_M41602_IG08
mov r9d, ebx mov rcx, gword ptr [rcx+8*r9+0x10] cmp byte ptr [rcx], cl @@ -63,14 +66,19 @@ G_M41602_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rcx r9] ; gcr arg pop 0 mov eax, ebx
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
G_M41602_IG07: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
+G_M41602_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 5, PerfScore 42.12, instruction count 27, allocated bytes for code 76 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
+; Total bytes of code 92, prolog size 5, PerfScore 41.88, instruction count 31, allocated bytes for code 92 (MethodHash=30625d7d) for method System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
; ============================================================ Unwind Info:

+30 (+33.33%) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)

@@ -7,17 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 4, 7 ) ref -> rcx class-hnd single-def <System.String> -; V01 arg1 [V01,T02] ( 4, 10 ) ref -> rdx class-hnd single-def <System.String> -; V02 arg2 [V02,T07] ( 3, 6 ) int -> r8 single-def -; V03 arg3 [V03,T08] ( 5, 4.50) int -> r9 single-def -; V04 loc0 [V04,T01] ( 5, 12 ) int -> r10 -; V05 loc1 [V05,T00] ( 7, 25 ) int -> r11
+; V00 arg0 [V00,T04] ( 5, 7.50) ref -> rcx class-hnd single-def <System.String> +; V01 arg1 [V01,T02] ( 6, 11 ) ref -> rdx class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 6.50) int -> r8 single-def +; V03 arg3 [V03,T07] ( 5, 4.50) int -> r9 single-def +; V04 loc0 [V04,T03] ( 6, 13 ) int -> r10 +; V05 loc1 [V05,T08] ( 5, 3.50) int -> rsi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T05] ( 3, 8.50) int -> rsi "CSE - aggressive" -; V08 cse1 [V08,T06] ( 3, 8.50) int -> rbx "CSE - aggressive" -; V09 cse2 [V09,T09] ( 4, 6.50) int -> rax "CSE - aggressive" -; V10 cse3 [V10,T03] ( 3, 12 ) int -> rsi "CSE - aggressive"
+; V07 tmp1 [V07,T00] ( 8, 26 ) long -> r11 "Widened primary induction variable" +; V08 cse0 [V08,T01] ( 6, 13.50) int -> rsi multi-def "CSE - aggressive" +; V09 cse1 [V09,T06] ( 5, 7 ) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40 @@ -40,47 +39,59 @@ G_M6389_IG03: ; bbWeight=2, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ;; size=3 bbWeight=2 PerfScore 0.50 G_M6389_IG04: ; bbWeight=8, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, r10d
- jge SHORT G_M6389_IG08
+ jge SHORT G_M6389_IG06
;; size=5 bbWeight=8 PerfScore 10.00 G_M6389_IG05: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz cmp r11d, eax
- jae SHORT G_M6389_IG10 - mov ebx, r11d - movzx rbx, word ptr [rcx+2*rbx+0x0C]
+ jae SHORT G_M6389_IG11 + movzx rbx, word ptr [rcx+2*r11+0x0C]
lea esi, [r8+r11] cmp esi, dword ptr [rdx+0x08]
- jae SHORT G_M6389_IG10 - movzx rsi, word ptr [rdx+2*rsi+0x0C] - cmp ebx, esi
+ jae SHORT G_M6389_IG11 + cmp bx, word ptr [rdx+2*rsi+0x0C]
je SHORT G_M6389_IG03
- ;; size=31 bbWeight=4 PerfScore 45.00 -G_M6389_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx] - mov eax, ebx - sub eax, esi - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M6389_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=27 bbWeight=4 PerfScore 47.00 +G_M6389_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov esi, r11d + cmp esi, r10d + jge SHORT G_M6389_IG09 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M6389_IG07: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + cmp esi, eax + jae SHORT G_M6389_IG11 + mov eax, esi + movzx rax, word ptr [rcx+2*rax+0x0C] + add esi, r8d + cmp esi, dword ptr [rdx+0x08] + jae SHORT G_M6389_IG11 + mov r9d, esi + movzx rcx, word ptr [rdx+2*r9+0x0C] + ; gcrRegs -[rcx] + sub eax, ecx + ;; size=30 bbWeight=0.50 PerfScore 5.12 +G_M6389_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx]
sub eax, r9d ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M6389_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6389_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M6389_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6389_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 6, PerfScore 65.38, instruction count 35, allocated bytes for code 90 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
+; Total bytes of code 120, prolog size 6, PerfScore 73.75, instruction count 44, allocated bytes for code 120 (MethodHash=2d88e70a) for method System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-29 (-13.24%) : 24368.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)

@@ -10,19 +10,19 @@ ; ; V00 arg0 [V00,T07] ( 5, 8 ) int -> rbx single-def ; V01 loc0 [V01,T04] ( 7, 22 ) ref -> rdi class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r13 class-hnd exact <<unknown class>> -; V03 loc2 [V03,T01] ( 7, 87.20) int -> r12
+; V02 loc1 [V02,T02] ( 5, 31.84) ref -> r14 class-hnd exact <<unknown class>> +; V03 loc2 [V03,T08] ( 3, 10 ) int -> r15
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 3, 95.04) ref -> rax class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol>
-; V06 cse0 [V06,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" -; V07 cse1 [V07,T03] ( 3, 23.84) int -> [rsp+0x34] spill-single-def "CSE - aggressive" -; V08 cse2 [V08,T05] ( 2, 17.84) long -> [rsp+0x28] spill-single-def hoist "CSE - aggressive" -; V09 cse3 [V09,T11] ( 2, 5 ) long -> r14 hoist "CSE - aggressive" -; V10 cse4 [V10,T09] ( 2, 5 ) byref -> r15 hoist "CSE - aggressive" -; V11 cse5 [V11,T08] ( 3, 6 ) long -> rsi "CSE - aggressive" -; V12 cse6 [V12,T06] ( 3, 12 ) int -> r12 "CSE - aggressive"
+;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "Widened primary induction variable" +; V07 tmp3 [V07,T01] ( 6, 81.20) long -> r15 "Widened primary induction variable" +; V08 cse0 [V08,T10] ( 2, 5 ) long -> rbp hoist "CSE - aggressive" +; V09 cse1 [V09,T03] ( 3, 23.84) int -> r13 "CSE - aggressive" +; V10 cse2 [V10,T05] ( 2, 17.84) long -> r12 hoist "CSE - aggressive" +; V11 cse3 [V11,T09] ( 3, 6 ) long -> rsi "CSE - aggressive" +; V12 cse4 [V12,T06] ( 3, 12 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -33,7 +33,7 @@ G_M65390_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 56
+ sub rsp, 40
mov ebx, ecx ;; size=18 bbWeight=1 PerfScore 8.50 G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -45,76 +45,68 @@ G_M65390_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref lea edx, [rbx+0x0F] and edx, -16 movsxd rbp, edx
- mov r14, 0xD1FFAB1E ; <unknown class> - mov r15, 0xD1FFAB1E ; static handle - ; byrRegs +[r15] - ;; size=51 bbWeight=1 PerfScore 7.75 -G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.25 +G_M65390_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] ; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13] - mov r12d, dword ptr [rdi+0x08] - mov r8d, r12d
+ mov r14, rax + ; gcrRegs +[r14] + mov r15d, dword ptr [rdi+0x08] + mov r8d, r15d
mov rcx, rdi ; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov eax, dword ptr [r13+0x08] - mov dword ptr [rsp+0x34], eax - cmp eax, r12d
+ mov r13d, dword ptr [r14+0x08] + cmp r13d, r15d
jle SHORT G_M65390_IG06
- ;; size=46 bbWeight=4 PerfScore 47.00 -G_M65390_IG04: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref - mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol - mov qword ptr [rsp+0x28], rdx - ;; size=15 bbWeight=2 PerfScore 2.50 -G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref, isz - mov rcx, rdx
+ ;; size=49 bbWeight=4 PerfScore 43.00 +G_M65390_IG04: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref + mov r15d, r15d + mov r12, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol + ;; size=13 bbWeight=2 PerfScore 1.00 +G_M65390_IG05: ; bbWeight=15.84, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz + mov rcx, r12
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov dword ptr [rax+0x20], r12d - mov ecx, r12d - lea rcx, bword ptr [r13+8*rcx+0x10]
+ mov dword ptr [rax+0x20], r15d + lea rcx, bword ptr [r14+8*r15+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r12d - mov r8d, dword ptr [rsp+0x34] - cmp r8d, r12d - mov rdx, qword ptr [rsp+0x28]
+ inc r15d + cmp r13d, r15d
jg SHORT G_M65390_IG05
- ;; size=46 bbWeight=15.84 PerfScore 146.52 -G_M65390_IG06: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=8000 {r15}, byref
+ ;; size=33 bbWeight=15.84 PerfScore 95.04 +G_M65390_IG06: ; bbWeight=4, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov r8, rdi ; gcrRegs +[r8]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, 0xD1FFAB1E ; static handle
; byrRegs +[rcx] call <unknown method>
- ; gcrRegs -[rdx rdi r8 r13] +[rax]
+ ; gcrRegs -[rdx rdi r8 r14] +[rax]
; byrRegs -[rcx] ; gcr arg pop 0 mov rdi, gword ptr [rsi] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], ebx
- jl G_M65390_IG03 - ;; size=26 bbWeight=4 PerfScore 31.00
+ jl SHORT G_M65390_IG03 + ;; size=29 bbWeight=4 PerfScore 31.00
G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rax rdi]
- ; byrRegs -[r15] - add rsp, 56
+ add rsp, 40
pop rbx pop rbp pop rsi @@ -126,7 +118,7 @@ G_M65390_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 219, prolog size 18, PerfScore 248.52, instruction count 63, allocated bytes for code 219 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
+; Total bytes of code 190, prolog size 18, PerfScore 191.04, instruction count 57, allocated bytes for code 190 (MethodHash=ce860091) for method Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
; ============================================================ Unwind Info: @@ -139,7 +131,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-24 (-11.82%) : 19002.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T06] ( 5, 11 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer> ; V01 arg1 [V01,T11] ( 4, 6.50) int -> rsi single-def ; V02 loc0 [V02,T10] ( 4, 9 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]>
-; V03 loc1 [V03,T00] ( 9, 32.50) int -> r14
+;* V03 loc1 [V03,T16] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 2, 16 ) ref -> rcx class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> ; V06 tmp2 [V06,T04] ( 2, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo> @@ -22,25 +22,25 @@ ; V11 tmp7 [V11,T02] ( 3, 24 ) ref -> rdx "arr expr" ;* V12 tmp8 [V12,T13] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp9 [V13,T05] ( 2, 16 ) int -> rdx "argument with side effect"
-; V14 cse0 [V14,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" -; V15 cse1 [V15,T15] ( 3, 1.50) int -> rdi "CSE - moderate" -; V16 cse2 [V16,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V17 cse3 [V17,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" -; V18 cse4 [V18,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V14 tmp10 [V14,T00] ( 9, 32.50) long -> rdi "Widened primary induction variable" +; V15 cse0 [V15,T07] ( 3, 12 ) ref -> rdx "CSE - aggressive" +; V16 cse1 [V16,T15] ( 3, 1.50) int -> rdi "CSE - moderate" +; V17 cse2 [V17,T08] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V18 cse3 [V18,T09] ( 2, 8 ) ref -> rdx "CSE - aggressive" +; V19 cse4 [V19,T14] ( 4, 3 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M22286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx] mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=13 bbWeight=1 PerfScore 4.75
G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] @@ -49,7 +49,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ;; size=13 bbWeight=1 PerfScore 3.25 G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz test esi, esi
- jle G_M22286_IG07
+ jle SHORT G_M22286_IG07
mov edi, dword ptr [rcx+0x10] movsxd rdx, edi mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[] @@ -59,21 +59,20 @@ G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- xor r14d, r14d
test edi, edi jle SHORT G_M22286_IG05
- ;; size=39 bbWeight=0.50 PerfScore 3.25
+ xor edi, edi + ;; size=34 bbWeight=0.50 PerfScore 3.25
G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rdx, gword ptr [rbx+0x10] ; gcrRegs +[rdx]
- cmp r14d, dword ptr [rdx+0x10]
+ cmp edi, dword ptr [rdx+0x10]
jae SHORT G_M22286_IG12 mov rdx, gword ptr [rdx+0x08]
- cmp r14d, dword ptr [rdx+0x08]
+ cmp edi, dword ptr [rdx+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - mov rdx, gword ptr [rdx+8*rcx+0x10]
+ mov rdx, gword ptr [rdx+8*rdi+0x10]
mov rcx, rdx ; gcrRegs +[rcx] mov eax, esi @@ -83,64 +82,60 @@ G_M22286_IG04: ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, call [Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:WithOffset(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- cmp r14d, dword ptr [rbp+0x08]
+ cmp edi, dword ptr [rbp+0x08]
jae SHORT G_M22286_IG11
- mov ecx, r14d - lea rcx, bword ptr [rbp+8*rcx+0x10]
+ lea rcx, bword ptr [rbp+8*rdi+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- inc r14d
+ inc edi
mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x10]
jl SHORT G_M22286_IG04
- ;; size=79 bbWeight=4 PerfScore 139.00
+ ;; size=68 bbWeight=4 PerfScore 137.00
G_M22286_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rax, rbp ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M22286_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbp] +[rcx] cmp dword ptr [rcx], ecx ;; size=2 bbWeight=0.50 PerfScore 1.50 G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
tail.jmp [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rcx] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax] call CORINFO_HELP_RNGCHKFAIL @@ -152,7 +147,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 203, prolog size 15, PerfScore 159.12, instruction count 71, allocated bytes for code 203 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
+; Total bytes of code 179, prolog size 13, PerfScore 155.38, instruction count 65, allocated bytes for code 179 (MethodHash=5d74a8f1) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
; ============================================================ Unwind Info: @@ -160,14 +155,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

-29 (-8.24%) : 20238.dasm - System.Number:g_ProcessChunk|124(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)

@@ -17,12 +17,12 @@ ;* V06 loc2 [V06,T22] ( 0, 0 ) ubyte -> zero-ref ; V07 loc3 [V07,T03] ( 6, 13.50) int -> r13 ; V08 loc4 [V08,T02] ( 6, 15.50) int -> r12
-; V09 loc5 [V09,T08] ( 4, 9.50) int -> [rsp+0x24] -; V10 loc6 [V10,T00] ( 6, 21 ) int -> [rsp+0x20]
+; V09 loc5 [V09,T08] ( 4, 9.50) int -> [rsp+0x34] +;* V10 loc6 [V10,T25] ( 0, 0 ) int -> zero-ref
; V11 loc7 [V11,T04] ( 3, 12 ) ushort -> r9 ;* V12 loc8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V13 loc9 [V13,T01] ( 6, 20.50) int -> registers -; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> rax
+;* V13 loc9 [V13,T26] ( 0, 0 ) int -> zero-ref +; V14 loc10 [V14,T05] ( 3, 12 ) ushort -> rdx
; V15 OutArgs [V15 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V16 tmp1 [V16,T18] ( 3, 3 ) int -> r15 "Inline return value spill temp" ; V17 tmp2 [V17,T14] ( 3, 6 ) int -> r15 "Inlining Arg" @@ -45,8 +45,10 @@ ; V34 tmp19 [V34,T23] ( 2, 1 ) byref -> rdi single-def "field V23._reference (fldOffset=0x0)" P-INDEP ; V35 tmp20 [V35,T24] ( 2, 1 ) int -> r14 "field V23._length (fldOffset=0x8)" P-INDEP ;* V36 tmp21 [V36 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V37 tmp22 [V37,T00] ( 6, 21 ) long -> [rsp+0x28] "Widened primary induction variable" +; V38 tmp23 [V38,T01] ( 6, 20.50) long -> rax "Widened primary induction variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M15568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -57,7 +59,7 @@ G_M15568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 56
mov rdi, rdx ; byrRegs +[rdi] mov rbx, r8 @@ -79,7 +81,7 @@ G_M15568_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00CA {rcx rbx r cmp r15d, r14d cmovg r15d, r14d cmp r15d, r14d
- ja G_M15568_IG19
+ ja G_M15568_IG16
mov ecx, r15d not ecx shr ecx, 31 @@ -88,26 +90,25 @@ G_M15568_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00CA {rcx rbx r mov r13d, dword ptr [rsi] mov r12d, dword ptr [rsi+0x04] mov ecx, dword ptr [rbx+0x0C]
- xor eax, eax
test r15d, r15d jle SHORT G_M15568_IG07
+ xor eax, eax
;; size=71 bbWeight=1 PerfScore 23.00 G_M15568_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz cmp eax, r14d
- jae G_M15568_IG18 - mov dword ptr [rsp+0x20], eax - mov r9d, eax - movzx r9, byte ptr [r9+rbp]
+ jae G_M15568_IG15 + mov qword ptr [rsp+0x28], rax + movzx r9, byte ptr [rax+rbp]
test r9d, r9d je SHORT G_M15568_IG08 lea r8d, [r13+4*r13] lea r13d, [r9+2*r8-0x30] inc r12d inc ecx
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
cmp r12d, 9 jne SHORT G_M15568_IG05
- ;; size=51 bbWeight=4 PerfScore 46.00
+ ;; size=49 bbWeight=4 PerfScore 45.00
G_M15568_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref mov rcx, rdi ; byrRegs +[rcx] @@ -122,19 +123,19 @@ G_M15568_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp r xor r12d, r12d ;; size=26 bbWeight=2 PerfScore 9.00 G_M15568_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00E8 {rbx rbp rsi rdi}, byref, isz
- mov eax, dword ptr [rsp+0x20]
+ mov rax, qword ptr [rsp+0x28]
inc eax cmp eax, r15d
- mov ecx, dword ptr [rsp+0x24]
+ mov ecx, dword ptr [rsp+0x34]
jl SHORT G_M15568_IG03
- ;; size=15 bbWeight=4 PerfScore 14.00
+ ;; size=16 bbWeight=4 PerfScore 14.00
G_M15568_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz ; byrRegs -[rdi]
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
jmp SHORT G_M15568_IG10 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M15568_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
- mov dword ptr [rsp+0x24], ecx
+ mov dword ptr [rsp+0x34], ecx
jmp SHORT G_M15568_IG10 ;; size=6 bbWeight=0.50 PerfScore 1.50 G_M15568_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref @@ -145,7 +146,7 @@ G_M15568_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs mov eax, 1 ;; size=15 bbWeight=0.50 PerfScore 1.62 G_M15568_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 56
pop rbx pop rbp pop rsi @@ -168,51 +169,33 @@ G_M15568_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; byrRegs -[rbp] ; gcr arg pop 0
- xor ecx, ecx
test r14d, r14d
- jle SHORT G_M15568_IG15 - ;; size=30 bbWeight=0.50 PerfScore 3.12
+ mov ecx, dword ptr [rsp+0x34] + jle SHORT G_M15568_IG08 + xor eax, eax + ;; size=34 bbWeight=0.50 PerfScore 3.62
G_M15568_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
- cmp ecx, r14d - jae SHORT G_M15568_IG18 - mov eax, ecx - movzx rax, byte ptr [rdi+rax] - test eax, eax - je SHORT G_M15568_IG14 - mov edx, ecx - mov ecx, dword ptr [rsp+0x24] - cmp eax, 48 - jne SHORT G_M15568_IG16 - inc edx - cmp edx, r14d - mov dword ptr [rsp+0x24], ecx - jl SHORT G_M15568_IG13 - ;; size=37 bbWeight=4 PerfScore 39.00
+ cmp eax, r14d + jae SHORT G_M15568_IG15 + movzx rdx, byte ptr [rdi+rax] + test edx, edx + je SHORT G_M15568_IG08 + cmp edx, 48 + jne SHORT G_M15568_IG13 + inc eax + cmp eax, r14d + jl SHORT G_M15568_IG11 + ;; size=25 bbWeight=4 PerfScore 29.00
G_M15568_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz ; byrRegs -[rdi]
- mov ecx, dword ptr [rsp+0x24]
jmp SHORT G_M15568_IG08
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M15568_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz - ; byrRegs +[rdi] - mov ecx, edx - jmp SHORT G_M15568_IG11 - ;; size=4 bbWeight=2 PerfScore 4.50 -G_M15568_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz - ; byrRegs -[rdi] - mov ecx, dword ptr [rsp+0x24] - jmp SHORT G_M15568_IG08 - ;; size=6 bbWeight=2 PerfScore 6.00 -G_M15568_IG15: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz - mov ecx, dword ptr [rsp+0x24] - jmp SHORT G_M15568_IG08 - ;; size=6 bbWeight=0.25 PerfScore 0.75 -G_M15568_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M15568_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx rsi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15568_IG17: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 40
+G_M15568_IG14: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 56
pop rbx pop rbp pop rsi @@ -223,17 +206,17 @@ G_M15568_IG17: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M15568_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15568_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M15568_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15568_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 25, PerfScore 165.88, instruction count 123, allocated bytes for code 352 (MethodHash=5cdec32f) for method System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
+; Total bytes of code 323, prolog size 25, PerfScore 143.62, instruction count 112, allocated bytes for code 323 (MethodHash=5cdec32f) for method System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -246,7 +229,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

+8 (+14.81%) : 31044.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

@@ -9,11 +9,12 @@ ; ; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def ; V01 loc0 [V01,T02] ( 4, 10 ) int -> rdx
-; V02 loc1 [V02,T00] ( 5, 17 ) int -> r8
+;* V02 loc1 [V02,T05] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 2, 5 ) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V05 tmp2 [V05,T03] ( 3, 6 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
+; V05 tmp2 [V05,T03] ( 4, 10 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
+; V07 tmp4 [V07,T00] ( 6, 21 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -27,19 +28,20 @@ G_M53167_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr mov ecx, dword ptr [rcx+0x08] ; byrRegs -[rcx] mov edx, 0xD1FFAB1E
- xor r8d, r8d
test ecx, ecx jle SHORT G_M53167_IG04
+ xor r8d, r8d
;; size=18 bbWeight=1 PerfScore 5.75 G_M53167_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- mov r10d, r8d - movzx r10, byte ptr [rax+r10]
+ cmp r8d, ecx + jae SHORT G_M53167_IG06 + movzx r10, byte ptr [rax+r8]
xor edx, r10d imul edx, edx, 0xD1FFAB1E inc r8d cmp r8d, ecx jl SHORT G_M53167_IG03
- ;; size=25 bbWeight=4 PerfScore 24.00
+ ;; size=27 bbWeight=4 PerfScore 28.00
G_M53167_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rax] mov eax, edx @@ -48,8 +50,13 @@ G_M53167_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
+G_M53167_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 4, PerfScore 31.50, instruction count 17, allocated bytes for code 54 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
+; Total bytes of code 62, prolog size 4, PerfScore 35.50, instruction count 20, allocated bytes for code 62 (MethodHash=48b13050) for method System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
; ============================================================ Unwind Info:

+9 (+15.00%) : 14537.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (FullOpts)

@@ -10,39 +10,41 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M19580_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov rcx, gword ptr [rcx+0x08]
- xor eax, eax - mov r8d, dword ptr [rcx+0x08] - test r8d, r8d
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M19580_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d + ;; size=14 bbWeight=1 PerfScore 5.50
G_M19580_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax - cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M19580_IG05
- inc eax - cmp r8d, eax
+ inc r8d + cmp eax, r8d
jg SHORT G_M19580_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M19580_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax + jae SHORT G_M19580_IG07 + mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -50,13 +52,18 @@ G_M19580_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M19580_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M19580_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
; ============================================================ Unwind Info:

+9 (+15.00%) : 18835.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:FreeSlow(System.Canon):this (FullOpts)

@@ -10,39 +10,41 @@ ; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T04] ( 3, 2.50) ref -> rdx class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T01] ( 4, 6.50) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 6, 17.50) int -> rax
+; V03 loc1 [V03,T05] ( 3, 1.50) int -> r8
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 3, 6 ) int -> r8 "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 6, 17.50) long -> r8 "Widened primary induction variable" +; V06 cse0 [V06,T02] ( 4, 6.50) int -> rax "CSE - aggressive"
; ; Lcl frame size = 40
-G_M50542_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M50542_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25 G_M50542_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] mov rcx, gword ptr [rcx+0x10]
- xor eax, eax - mov r8d, dword ptr [rcx+0x08] - test r8d, r8d
+ mov eax, dword ptr [rcx+0x08] + test eax, eax
jle SHORT G_M50542_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
+ xor r8d, r8d + ;; size=14 bbWeight=1 PerfScore 5.50
G_M50542_IG03: ; bbWeight=4, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
- mov r10d, eax - cmp gword ptr [rcx+8*r10+0x10], 0
+ cmp gword ptr [rcx+8*r8+0x10], 0
je SHORT G_M50542_IG05
- inc eax - cmp r8d, eax
+ inc r8d + cmp eax, r8d
jg SHORT G_M50542_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
+ ;; size=16 bbWeight=4 PerfScore 22.00
G_M50542_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[rcx rdx] add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rdx]
- mov eax, eax
+ cmp r8d, eax + jae SHORT G_M50542_IG07 + mov eax, r8d
lea rcx, bword ptr [rcx+8*rax+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -50,13 +52,18 @@ G_M50542_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=0.50 PerfScore 1.25
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
G_M50542_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M50542_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 4, PerfScore 31.25, instruction count 20, allocated bytes for code 60 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
+; Total bytes of code 69, prolog size 4, PerfScore 30.88, instruction count 23, allocated bytes for code 69 (MethodHash=cfc63a91) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
; ============================================================ Unwind Info:

smoke_tests.nativeaot.windows.x64.checked.mch

-30 (-10.38%) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList1[System.__Canon]:Filter(System.Func2[System.Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.Canon]:this (FullOpts)

@@ -14,17 +14,18 @@ ; V03 loc1 [V03,T12] ( 3, 4 ) ref -> rbp class-hnd exact single-def <System.__Canon[]> ; V04 loc2 [V04,T11] ( 4, 6 ) int -> r13 ; V05 loc3 [V05,T04] ( 7, 12 ) int -> r12
-; V06 loc4 [V06,T00] ( 9, 27 ) int -> [rsp+0x2C] -; V07 loc5 [V07,T07] ( 3, 10 ) ref -> rdi class-hnd <System.__Canon>
+;* V06 loc4 [V06,T16] ( 0, 0 ) int -> zero-ref +; V07 loc5 [V07,T07] ( 3, 10 ) ref -> [rsp+0x28] class-hnd spill-single-def <System.__Canon>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T08] ( 2, 8 ) int -> rcx "Strict ordering of exceptions for Array store" ; V10 tmp2 [V10,T05] ( 6, 12 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]> ; V11 tmp3 [V11,T01] ( 3, 24 ) ref -> rdx "arr expr" ;* V12 tmp4 [V12,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect" ; V13 tmp5 [V13,T06] ( 3, 12 ) ref -> rcx "arr expr"
-; V14 cse0 [V14,T13] ( 3, 3 ) long -> r15 "CSE - moderate" -; V15 cse1 [V15,T14] ( 3, 3 ) long -> rbp "CSE - moderate" -; V16 cse2 [V16,T15] ( 3, 3 ) int -> rdi "CSE - moderate"
+; V14 tmp6 [V14,T00] ( 9, 27 ) long -> rdi "Widened primary induction variable" +; V15 cse0 [V15,T13] ( 3, 3 ) long -> r15 "CSE - moderate" +; V16 cse1 [V16,T14] ( 3, 3 ) long -> rbp "CSE - moderate" +; V17 cse2 [V17,T15] ( 3, 3 ) int -> rdi "CSE - moderate"
; ; Lcl frame size = 56 @@ -44,7 +45,7 @@ G_M51283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, rdx ; gcrRegs +[rsi] ;; size=27 bbWeight=1 PerfScore 9.75
-G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x18] movsxd rbp, edi mov rdx, rbp @@ -64,64 +65,60 @@ G_M51283_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs +[rbp] xor r13d, r13d xor r12d, r12d
- xor r8d, r8d
test edi, edi
- jle G_M51283_IG06 - ;; size=63 bbWeight=1 PerfScore 13.75
+ jle SHORT G_M51283_IG06 + xor edi, edi + ;; size=58 bbWeight=1 PerfScore 13.75
G_M51283_IG03: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx]
- cmp r8d, dword ptr [rdx+0x08] - jae G_M51283_IG09 - mov dword ptr [rsp+0x2C], r8d - mov ecx, r8d - mov rdi, gword ptr [rdx+8*rcx+0x10] - ; gcrRegs +[rdi] - mov rdx, rdi
+ cmp edi, dword ptr [rdx+0x08] + jae G_M51283_IG08 + mov r8, gword ptr [rdx+8*rdi+0x10] + ; gcrRegs +[r8] + mov gword ptr [rsp+0x28], r8 + ; GC ptr vars +{V07} + mov rdx, r8
mov rcx, gword ptr [rsi+0x08] ; gcrRegs +[rcx] mov rax, qword ptr [rsi+0x20] call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rcx rdx r8]
; gcr arg pop 0 test eax, eax je SHORT G_M51283_IG05
- ;; size=48 bbWeight=4 PerfScore 71.00 -G_M51283_IG04: ; bbWeight=2, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=4 PerfScore 70.00 +G_M51283_IG04: ; bbWeight=2, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
movsxd rdx, r12d mov rcx, rbp ; gcrRegs +[rcx]
- mov r8, rdi
+ mov r8, gword ptr [rsp+0x28]
; gcrRegs +[r8]
+ ; GC ptr vars -{V07}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx rdi r8]
+ ; gcrRegs -[rcx r8]
; gcr arg pop 0 mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx]
- mov edi, dword ptr [rsp+0x2C]
cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M51283_IG09 - mov eax, edi - mov ecx, dword ptr [rcx+4*rax+0x10]
+ jae SHORT G_M51283_IG08 + mov ecx, dword ptr [rcx+4*rdi+0x10]
; gcrRegs -[rcx] cmp r12d, dword ptr [r14+0x08]
- jae SHORT G_M51283_IG09
+ jae SHORT G_M51283_IG08
mov eax, r12d mov dword ptr [r14+4*rax+0x10], ecx inc r12d cmp edi, dword ptr [rbx+0x1C]
- jge SHORT G_M51283_IG08
+ jge SHORT G_M51283_IG05
inc r13d
- mov dword ptr [rsp+0x2C], edi - ;; size=62 bbWeight=2 PerfScore 43.50
+ ;; size=54 bbWeight=2 PerfScore 40.50
G_M51283_IG05: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rsp+0x2C]
inc edi cmp edi, dword ptr [rbx+0x18]
- mov r8d, edi
jl SHORT G_M51283_IG03
- ;; size=14 bbWeight=4 PerfScore 22.00
+ ;; size=7 bbWeight=4 PerfScore 17.00
G_M51283_IG06: ; bbWeight=1, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi] mov rcx, qword ptr [r15] @@ -161,19 +158,14 @@ G_M51283_IG07: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M51283_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rbp r14] - mov dword ptr [rsp+0x2C], edi - jmp SHORT G_M51283_IG05 - ;; size=6 bbWeight=1 PerfScore 3.00 -G_M51283_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp rsi r14]
+G_M51283_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rsi]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 289, prolog size 21, PerfScore 177.25, instruction count 91, allocated bytes for code 289 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 259, prolog size 21, PerfScore 165.25, instruction count 83, allocated bytes for code 259 (MethodHash=aa3837ac) for method System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info:

-11 (-8.33%) : 13817.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> -; V01 loc0 [V01,T06] ( 5, 17 ) int -> rsi -; V02 loc1 [V02,T02] ( 6, 84 ) int -> rbp
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> +;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rcx "Inlining Arg" @@ -20,103 +20,101 @@ ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rcx "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> rdi "CSE - aggressive" -; V14 cse1 [V14,T04] ( 4, 40 ) long -> r14 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> rdi "Widened primary induction variable" +; V14 tmp11 [V14,T02] ( 6, 82 ) long -> rbp "Widened primary induction variable" +; V15 cse0 [V15,T06] ( 3, 6 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor esi, esi - mov edi, dword ptr [rbx+0x08] - test edi, edi - jle SHORT G_M29788_IG09
+ mov esi, dword ptr [rbx+0x08] + test esi, esi + jle SHORT G_M29788_IG10 + xor edi, edi
;; size=9 bbWeight=1 PerfScore 3.50 G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp - mov r14d, esi - mov rcx, gword ptr [rbx+8*r14+0x10]
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx] cmp dword ptr [rcx+0x08], 0
- jle SHORT G_M29788_IG08 - ;; size=16 bbWeight=4 PerfScore 26.00 -G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09 + ;; size=11 bbWeight=4 PerfScore 24.00 +G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ xor ebp, ebp + ;; size=2 bbWeight=2 PerfScore 0.50 +G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx] cmp ebp, dword ptr [rcx+0x08]
- jae SHORT G_M29788_IG13 - mov eax, ebp - movzx rcx, word ptr [rcx+2*rax+0x0C]
+ jae SHORT G_M29788_IG14 + movzx rcx, word ptr [rcx+2*rbp+0x0C]
; gcrRegs -[rcx] cmp ecx, 256
- jae SHORT G_M29788_IG06 - ;; size=25 bbWeight=16 PerfScore 152.00 -G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07 + ;; size=23 bbWeight=16 PerfScore 148.00 +G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte ; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 ;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc ebp
- mov rax, gword ptr [rbx+8*r14+0x10]
+ mov rax, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rax] cmp dword ptr [rax+0x08], ebp
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=16 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc esi - cmp edi, esi
+ inc edi + cmp esi, edi
jg SHORT G_M29788_IG03 ;; size=6 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 13, PerfScore 349.00, instruction count 53, allocated bytes for code 132 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 121, prolog size 11, PerfScore 342.00, instruction count 48, allocated bytes for code 121 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -124,14 +122,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

-11 (-8.33%) : 8186.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)

@@ -8,9 +8,9 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> -; V01 loc0 [V01,T06] ( 5, 17 ) int -> rsi -; V02 loc1 [V02,T02] ( 6, 84 ) int -> rbp
+; V00 arg0 [V00,T04] ( 6, 39 ) ref -> rbx class-hnd single-def <System.String[]> +;* V01 loc0 [V01,T08] ( 0, 0 ) int -> zero-ref +;* V02 loc1 [V02,T07] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 32 ) ubyte -> rax "Inline return value spill temp" ; V05 tmp2 [V05,T00] ( 4, 96 ) ushort -> rcx "Inlining Arg" @@ -21,103 +21,101 @@ ;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V12 tmp9 [V12,T01] ( 3, 96 ) ref -> rcx "arr expr"
-; V13 cse0 [V13,T07] ( 3, 6 ) int -> rdi "CSE - aggressive" -; V14 cse1 [V14,T04] ( 4, 40 ) long -> r14 "CSE - aggressive"
+; V13 tmp10 [V13,T03] ( 7, 49 ) long -> rdi "Widened primary induction variable" +; V14 tmp11 [V14,T02] ( 6, 82 ) long -> rbp "Widened primary induction variable" +; V15 cse0 [V15,T06] ( 3, 6 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M29788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M29788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor esi, esi - mov edi, dword ptr [rbx+0x08] - test edi, edi - jle SHORT G_M29788_IG09
+ mov esi, dword ptr [rbx+0x08] + test esi, esi + jle SHORT G_M29788_IG10 + xor edi, edi
;; size=9 bbWeight=1 PerfScore 3.50 G_M29788_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp - mov r14d, esi - mov rcx, gword ptr [rbx+8*r14+0x10]
+ mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx] cmp dword ptr [rcx+0x08], 0
- jle SHORT G_M29788_IG08 - ;; size=16 bbWeight=4 PerfScore 26.00 -G_M29788_IG04: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M29788_IG09 + ;; size=11 bbWeight=4 PerfScore 24.00 +G_M29788_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rcx, gword ptr [rbx+8*r14+0x10]
+ xor ebp, ebp + ;; size=2 bbWeight=2 PerfScore 0.50 +G_M29788_IG05: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rcx] cmp ebp, dword ptr [rcx+0x08]
- jae SHORT G_M29788_IG13 - mov eax, ebp - movzx rcx, word ptr [rcx+2*rax+0x0C]
+ jae SHORT G_M29788_IG14 + movzx rcx, word ptr [rcx+2*rbp+0x0C]
; gcrRegs -[rcx] cmp ecx, 256
- jae SHORT G_M29788_IG06 - ;; size=25 bbWeight=16 PerfScore 152.00 -G_M29788_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M29788_IG07 + ;; size=23 bbWeight=16 PerfScore 148.00 +G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call System.Char:IsWhiteSpaceLatin1(ushort):ubyte ; gcr arg pop 0
- jmp SHORT G_M29788_IG07
+ jmp SHORT G_M29788_IG08
;; size=7 bbWeight=8 PerfScore 24.00
-G_M29788_IG06: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29788_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte ; gcr arg pop 0 ;; size=5 bbWeight=8 PerfScore 8.00
-G_M29788_IG07: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG08: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29788_IG11
+ jne SHORT G_M29788_IG12
inc ebp
- mov rax, gword ptr [rbx+8*r14+0x10]
+ mov rax, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rax] cmp dword ptr [rax+0x08], ebp
- jg SHORT G_M29788_IG04
+ jg SHORT G_M29788_IG05
;; size=16 bbWeight=16 PerfScore 120.00
-G_M29788_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29788_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- inc esi - cmp edi, esi
+ inc edi + cmp esi, edi
jg SHORT G_M29788_IG03 ;; size=6 bbWeight=4 PerfScore 6.00
-G_M29788_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29788_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG10: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32
+G_M29788_IG11: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M29788_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M29788_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29788_IG12: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32
+G_M29788_IG13: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M29788_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62 +G_M29788_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 13, PerfScore 349.00, instruction count 53, allocated bytes for code 132 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
+; Total bytes of code 121, prolog size 11, PerfScore 342.00, instruction count 48, allocated bytes for code 121 (MethodHash=bfc38ba3) for method System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -125,14 +123,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+13 (+22.81%) : 17479.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -7,24 +7,24 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def -; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def +; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -46,18 +46,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test esi, esi
+ mov edx, esi + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d + ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi + jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8] mov word ptr [rcx+2*r8], r10w
- inc edx - cmp edx, esi
+ inc r8d + cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx rbx] add rsp, 40 @@ -65,8 +67,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info:

+13 (+22.81%) : 2396.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -7,24 +7,24 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def -; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def +; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -46,18 +46,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test esi, esi
+ mov edx, esi + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d + ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi + jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8] mov word ptr [rcx+2*r8], r10w
- inc edx - cmp edx, esi
+ inc r8d + cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx rbx] add rsp, 40 @@ -65,8 +67,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info:

+13 (+22.81%) : 7812.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)

@@ -8,24 +8,24 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def -; V01 loc0 [V01,T07] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def +; V01 loc0 [V01,T06] ( 4, 4 ) ref -> rax class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
-; V03 loc2 [V03,T00] ( 5, 17 ) int -> rdx
+;* V03 loc2 [V03,T10] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-;* V06 tmp2 [V06,T10] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V07 tmp3 [V07,T08] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+;* V06 tmp2 [V06,T09] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T05] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP -; V11 tmp7 [V11,T04] ( 3, 3 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP -; V12 tmp8 [V12,T06] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rsi "field V02._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp6 [V10,T04] ( 2, 5 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP +; V11 tmp7 [V11,T02] ( 4, 7 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP +; V12 tmp8 [V12,T05] ( 2, 5 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T03] ( 3, 6 ) int -> rdx "field V02._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T08] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
-; V17 cse0 [V17,T01] ( 3, 12 ) long -> r8 "CSE - aggressive"
+; V17 tmp13 [V17,T00] ( 7, 25 ) long -> r8 "Widened primary induction variable"
; ; Lcl frame size = 40 @@ -47,18 +47,20 @@ G_M6504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byre cmp byte ptr [rax], al lea rcx, bword ptr [rax+0x0C] ; byrRegs +[rcx]
- xor edx, edx - test esi, esi
+ mov edx, esi + test edx, edx
jle SHORT G_M6504_IG04
- ;; size=25 bbWeight=1 PerfScore 10.25
+ xor r8d, r8d + ;; size=28 bbWeight=1 PerfScore 10.50
G_M6504_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=000A {rcx rbx}, byref, isz
- mov r8d, edx
+ cmp r8d, esi + jae SHORT G_M6504_IG05
movzx r10, byte ptr [rbx+r8] mov word ptr [rcx+2*r8], r10w
- inc edx - cmp edx, esi
+ inc r8d + cmp r8d, edx
jl SHORT G_M6504_IG03
- ;; size=19 bbWeight=4 PerfScore 19.00
+ ;; size=23 bbWeight=4 PerfScore 23.00
G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rcx rbx] add rsp, 40 @@ -66,8 +68,14 @@ G_M6504_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
+G_M6504_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + int3 + ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 57, prolog size 6, PerfScore 33.75, instruction count 22, allocated bytes for code 57 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
+; Total bytes of code 70, prolog size 6, PerfScore 38.00, instruction count 26, allocated bytes for code 70 (MethodHash=e20be697) for method System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 3,539 1,935 1,278 326 -11,413 +17,306
benchmarks.run.windows.x64.checked.mch 1,649 1,199 379 71 -7,956 +5,239
benchmarks.run_pgo.windows.x64.checked.mch 5,263 3,142 1,965 156 -24,052 +21,229
benchmarks.run_tiered.windows.x64.checked.mch 541 375 133 33 -6,183 +1,416
coreclr_tests.run.windows.x64.checked.mch 20,716 18,656 1,910 150 -92,387 +19,418
libraries.crossgen2.windows.x64.checked.mch 5,442 3,870 1,302 270 -19,460 +17,937
libraries.pmi.windows.x64.checked.mch 7,013 4,881 1,710 422 -24,484 +22,770
libraries_tests.run.windows.x64.Release.mch 20,325 11,125 8,339 861 -72,625 +138,547
librariestestsnotieredcompilation.run.windows.x64.Release.mch 8,806 6,243 2,200 363 -34,550 +29,543
realworld.run.windows.x64.checked.mch 1,511 990 438 83 -5,439 +6,546
smoke_tests.nativeaot.windows.x64.checked.mch 1,321 982 301 38 -4,217 +2,605
76,126 53,398 19,955 2,773 -302,766 +282,556

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,267 61,702 67,565 22 (0.02%) 23 (0.02%)
benchmarks.run.windows.x64.checked.mch 27,925 4 27,921 1 (0.00%) 1 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 103,108 50,327 52,781 75 (0.07%) 75 (0.07%)
benchmarks.run_tiered.windows.x64.checked.mch 53,511 36,872 16,639 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 574,279 341,481 232,798 106 (0.02%) 106 (0.02%)
libraries.crossgen2.windows.x64.checked.mch 243,730 15 243,715 1 (0.00%) 1 (0.00%)
libraries.pmi.windows.x64.checked.mch 309,224 6 309,218 4 (0.00%) 4 (0.00%)
libraries_tests.run.windows.x64.Release.mch 680,716 485,046 195,670 708 (0.10%) 708 (0.10%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,533 21,924 298,609 3 (0.00%) 3 (0.00%)
realworld.run.windows.x64.checked.mch 36,609 3 36,606 1 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 31,939 11 31,928 449 (1.39%) 449 (1.39%)
2,510,841 997,391 1,513,450 1,370 (0.05%) 1,371 (0.05%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47016272 (overridden on cmd)
Total bytes of diff: 47022165 (overridden on cmd)
Total bytes of delta: 5893 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         295 : 128921.dasm (2.36 % of base)
         291 : 118096.dasm (1.97 % of base)
         274 : 97597.dasm (1.85 % of base)
         274 : 128127.dasm (1.85 % of base)
         240 : 118861.dasm (4.90 % of base)
         186 : 101272.dasm (1.49 % of base)
         152 : 71319.dasm (2.74 % of base)
         144 : 63296.dasm (0.86 % of base)
         121 : 77241.dasm (2.02 % of base)
         121 : 29905.dasm (2.02 % of base)
         121 : 56313.dasm (2.02 % of base)
         121 : 57478.dasm (2.02 % of base)
         121 : 34329.dasm (2.02 % of base)
         102 : 27565.dasm (3.07 % of base)
         100 : 125826.dasm (5.80 % of base)
          97 : 117304.dasm (1.60 % of base)
          97 : 12903.dasm (1.60 % of base)
          97 : 116345.dasm (1.60 % of base)
          97 : 20206.dasm (1.60 % of base)
          93 : 22528.dasm (1.54 % of base)

Top file improvements (bytes):
        -186 : 123319.dasm (-3.96 % of base)
         -83 : 120502.dasm (-4.87 % of base)
         -59 : 124582.dasm (-1.78 % of base)
         -57 : 47760.dasm (-1.69 % of base)
         -56 : 58860.dasm (-1.76 % of base)
         -56 : 69160.dasm (-1.76 % of base)
         -56 : 77252.dasm (-1.72 % of base)
         -56 : 35121.dasm (-1.76 % of base)
         -56 : 57537.dasm (-1.72 % of base)
         -56 : 78251.dasm (-1.76 % of base)
         -52 : 13883.dasm (-1.60 % of base)
         -52 : 20217.dasm (-1.60 % of base)
         -51 : 85128.dasm (-0.80 % of base)
         -48 : 128902.dasm (-3.35 % of base)
         -48 : 101240.dasm (-3.35 % of base)
         -45 : 58927.dasm (-2.75 % of base)
         -45 : 42893.dasm (-2.75 % of base)
         -44 : 9245.dasm (-4.31 % of base)
         -42 : 76319.dasm (-1.38 % of base)
         -42 : 76326.dasm (-3.47 % of base)

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

Top method regressions (bytes):
         295 (2.36 % of base) : 128921.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         291 (1.97 % of base) : 118096.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         274 (1.85 % of base) : 97597.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         274 (1.85 % of base) : 128127.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         240 (4.90 % of base) : 118861.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseHeaders:SetValueFast(System.String,Microsoft.Extensions.Primitives.StringValues):this (Tier1)
         186 (1.49 % of base) : 101272.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         152 (2.74 % of base) : 71319.dasm - Microsoft.AspNetCore.Routing.Matching.DfaMatcher:MatchAsync(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         144 (0.86 % of base) : 63296.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
         121 (2.02 % of base) : 77241.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         121 (2.02 % of base) : 29905.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         121 (2.02 % of base) : 56313.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         121 (2.02 % of base) : 57478.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         121 (2.02 % of base) : 34329.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         102 (3.07 % of base) : 27565.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders:ParseConnection(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders):int (Instrumented Tier1)
         100 (5.80 % of base) : 125826.dasm - Castle.DynamicProxy.Generators.BaseProxyGenerator:GenerateConstructor(Castle.DynamicProxy.Generators.Emitters.ClassEmitter,System.Reflection.ConstructorInfo,Castle.DynamicProxy.Generators.Emitters.SimpleAST.FieldReference[]):this (FullOpts)
          97 (1.60 % of base) : 117304.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
          97 (1.60 % of base) : 12903.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
          97 (1.60 % of base) : 116345.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
          97 (1.60 % of base) : 20206.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
          93 (1.54 % of base) : 22528.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)

Top method improvements (bytes):
        -186 (-3.96 % of base) : 123319.dasm - Jint.Native.Global.GlobalObject:.cctor() (FullOpts)
         -83 (-4.87 % of base) : 120502.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
         -59 (-1.78 % of base) : 124582.dasm - Jint.Runtime.Interop.DefaultTypeConverter:TryConvert(System.Object,System.Type,System.IFormatProvider,ubyte,byref,byref):ubyte:this (FullOpts)
         -57 (-1.69 % of base) : 47760.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Instrumented Tier1)
         -56 (-1.76 % of base) : 58860.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -56 (-1.76 % of base) : 69160.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -56 (-1.72 % of base) : 77252.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -56 (-1.76 % of base) : 35121.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -56 (-1.72 % of base) : 57537.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -56 (-1.76 % of base) : 78251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -52 (-1.60 % of base) : 13883.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -52 (-1.60 % of base) : 20217.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         -51 (-0.80 % of base) : 85128.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (Tier1)
         -48 (-3.35 % of base) : 128902.dasm - Castle.DynamicProxy.DefaultProxyBuilder:AssertValidTypeForTarget(System.Type,System.Type,System.String):this (Tier1)
         -48 (-3.35 % of base) : 101240.dasm - Castle.DynamicProxy.DefaultProxyBuilder:AssertValidTypeForTarget(System.Type,System.Type,System.String):this (Tier1)
         -45 (-2.75 % of base) : 58927.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilderContext):System.Object:this (Tier1-OSR)
         -45 (-2.75 % of base) : 42893.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilderContext):System.Object:this (Tier1-OSR)
         -44 (-4.31 % of base) : 9245.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Tier1-OSR)
         -42 (-3.47 % of base) : 76326.dasm - System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this (Tier1)
         -42 (-1.38 % of base) : 76319.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)

Top method regressions (percentages):
          10 (15.38 % of base) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 127141.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 114077.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (12.50 % of base) : 128889.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
           8 (12.50 % of base) : 101153.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
           8 (12.50 % of base) : 114417.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:GetCount(ubyte):int:this (Tier1)
           8 (11.94 % of base) : 118816.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 119370.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 101923.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 129217.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 116843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (11.94 % of base) : 85126.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
           8 (10.81 % of base) : 123484.dasm - Jint.Pooling.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this (FullOpts)
          13 (9.63 % of base) : 125757.dasm - Castle.DynamicProxy.Generators.Emitters.ArgumentsUtil:InitializeAndConvert(Castle.DynamicProxy.Generators.Emitters.SimpleAST.ArgumentReference[]):System.Type[] (FullOpts)
           8 (7.92 % of base) : 85125.dasm - System.Reflection.Internal.PooledStringBuilder:Free():this (Tier1)
          30 (7.67 % of base) : 119065.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
          30 (7.67 % of base) : 128772.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
          30 (7.67 % of base) : 100880.dasm - System.Collections.Frozen.LengthBucketsFrozenDictionary`1[System.__Canon]:GetValueRefOrNullRefCore(System.String):byref:this (Tier1)
          20 (7.46 % of base) : 128907.dasm - Castle.DynamicProxy.Internal.TypeUtil:GetAllInterfaces(System.Type[]):System.Type[] (Tier1)

Top method improvements (percentages):
         -12 (-12.90 % of base) : 35709.dasm - System.Xml.ValidateNames:ParseNCName(System.String,int):int (Tier1-OSR)
         -27 (-10.93 % of base) : 69155.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
         -27 (-10.93 % of base) : 34958.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:Fill(System.__Canon[],System.Span`1[System.__Canon]):this (Tier1-OSR)
         -15 (-10.27 % of base) : 15656.dasm - System.Reflection.Metadata.MetadataReader:CombineRowCounts(int[],int[],ubyte):int[] (Tier1-OSR)
         -27 (-9.28 % of base) : 30164.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (Tier1-OSR)
         -17 (-7.91 % of base) : 13814.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1-OSR)
          -7 (-7.22 % of base) : 35898.dasm - System.Xml.XmlWellFormedWriter:CheckNCName(System.String) (Tier1-OSR)
         -24 (-6.63 % of base) : 123302.dasm - Jint.Runtime.TypeConverter:.cctor() (FullOpts)
          -3 (-6.38 % of base) : 90588.dasm - Jint.Extensions.Hash:CombineFNVHash(int,System.String):int (FullOpts)
          -3 (-6.00 % of base) : 125762.dasm - Castle.DynamicProxy.Generators.Emitters.ArgumentsUtil:InitializeArgumentsByPosition(Castle.DynamicProxy.Generators.Emitters.SimpleAST.ArgumentReference[],ubyte) (FullOpts)
          -3 (-6.00 % of base) : 76358.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
          -4 (-5.88 % of base) : 114752.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
          -4 (-5.88 % of base) : 61351.dasm - System.Linq.EnumerableSorter`1[System.ValueTuple`2[System.__Canon,int]]:ComputeMap(System.ValueTuple`2[System.__Canon,int][],int):int[]:this (FullOpts)
          -4 (-5.88 % of base) : 76901.dasm - System.Linq.EnumerableSorter`1[System.ValueTuple`2[System.__Canon,int]]:ComputeMap(System.ValueTuple`2[System.__Canon,int][],int):int[]:this (Tier1)
          -3 (-5.66 % of base) : 63823.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder+GeneratedMethod]:GetCountNoLocks():int:this (FullOpts)
          -3 (-5.66 % of base) : 8805.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:GetCountNoLocks():int:this (FullOpts)
          -3 (-5.66 % of base) : 113761.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.__Canon]:GetCountNoLocks():int:this (Tier1)
          -3 (-5.66 % of base) : 113778.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetCountNoLocks():int:this (Tier1)
          -3 (-5.56 % of base) : 119349.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (Tier1)
          -3 (-5.56 % of base) : 12332.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (Tier1)


benchmarks.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 8741804 (overridden on cmd)
Total bytes of diff: 8739087 (overridden on cmd)
Total bytes of delta: -2717 (-0.03 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         184 : 8652.dasm (6.53 % of base)
         162 : 7054.dasm (4.07 % of base)
         154 : 7090.dasm (1.46 % of base)
         153 : 20723.dasm (6.55 % of base)
         145 : 12543.dasm (5.40 % of base)
         145 : 19820.dasm (5.43 % of base)
         139 : 14903.dasm (2.06 % of base)
         100 : 19523.dasm (1.30 % of base)
          91 : 13361.dasm (9.53 % of base)
          71 : 7079.dasm (3.86 % of base)
          61 : 19770.dasm (2.11 % of base)
          61 : 317.dasm (4.02 % of base)
          53 : 2086.dasm (4.80 % of base)
          50 : 3471.dasm (1.81 % of base)
          48 : 6986.dasm (2.39 % of base)
          48 : 8595.dasm (2.13 % of base)
          47 : 1683.dasm (1.74 % of base)
          45 : 20769.dasm (3.27 % of base)
          44 : 25297.dasm (0.41 % of base)
          44 : 11936.dasm (0.92 % of base)

Top file improvements (bytes):
        -555 : 18176.dasm (-17.70 % of base)
        -534 : 17451.dasm (-15.55 % of base)
        -447 : 18907.dasm (-5.37 % of base)
        -184 : 25336.dasm (-1.78 % of base)
        -132 : 18228.dasm (-3.98 % of base)
        -117 : 15589.dasm (-7.26 % of base)
         -97 : 18175.dasm (-9.20 % of base)
         -88 : 24049.dasm (-9.06 % of base)
         -83 : 9099.dasm (-4.90 % of base)
         -82 : 18908.dasm (-5.55 % of base)
         -78 : 24341.dasm (-4.80 % of base)
         -74 : 1589.dasm (-4.69 % of base)
         -74 : 18177.dasm (-8.17 % of base)
         -68 : 9887.dasm (-4.43 % of base)
         -61 : 27393.dasm (-0.58 % of base)
         -58 : 8653.dasm (-5.61 % of base)
         -56 : 17841.dasm (-6.97 % of base)
         -55 : 18174.dasm (-5.40 % of base)
         -45 : 14862.dasm (-6.13 % of base)
         -40 : 16534.dasm (-5.15 % of base)

91 total files with Code Size differences (50 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         184 (6.53 % of base) : 8652.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         162 (4.07 % of base) : 7054.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
         154 (1.46 % of base) : 7090.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         153 (6.55 % of base) : 20723.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         145 (5.43 % of base) : 19820.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         145 (5.40 % of base) : 12543.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         139 (2.06 % of base) : 14903.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
         100 (1.30 % of base) : 19523.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
          91 (9.53 % of base) : 13361.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
          71 (3.86 % of base) : 7079.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
          61 (2.11 % of base) : 19770.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)
          61 (4.02 % of base) : 317.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
          53 (4.80 % of base) : 2086.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          50 (1.81 % of base) : 3471.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          48 (2.13 % of base) : 8595.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
          48 (2.39 % of base) : 6986.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
          47 (1.74 % of base) : 1683.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
          45 (3.27 % of base) : 20769.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte (FullOpts)
          44 (0.41 % of base) : 25297.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
          44 (0.92 % of base) : 11936.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)

Top method improvements (bytes):
        -555 (-17.70 % of base) : 18176.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -534 (-15.55 % of base) : 17451.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -447 (-5.37 % of base) : 18907.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -184 (-1.78 % of base) : 25336.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -132 (-3.98 % of base) : 18228.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
        -117 (-7.26 % of base) : 15589.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)
         -97 (-9.20 % of base) : 18175.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -88 (-9.06 % of base) : 24049.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -83 (-4.90 % of base) : 9099.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
         -82 (-5.55 % of base) : 18908.dasm - Benchstone.BenchF.LLoops:Init():this (FullOpts)
         -78 (-4.80 % of base) : 24341.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -74 (-8.17 % of base) : 18177.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
         -74 (-4.69 % of base) : 1589.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -68 (-4.43 % of base) : 9887.dasm - SciMark2.LU:factor(double[][],int[]):int (FullOpts)
         -61 (-0.58 % of base) : 27393.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
         -58 (-5.61 % of base) : 8653.dasm - System.IPv6AddressHelper:Parse(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],int,byref) (FullOpts)
         -56 (-6.97 % of base) : 17841.dasm - Benchstone.BenchF.InProd:Test():ubyte:this (FullOpts)
         -55 (-5.40 % of base) : 18174.dasm - LUDecomp:build_problem(double[][],int,double[]) (FullOpts)
         -45 (-6.13 % of base) : 14862.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (FullOpts)
         -40 (-5.15 % of base) : 16534.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)

Top method regressions (percentages):
          13 (27.08 % of base) : 23431.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          13 (27.08 % of base) : 25567.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          11 (25.58 % of base) : 25750.dasm - System.Collections.IterateFor`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
          13 (20.63 % of base) : 5956.dasm - System.Collections.IterateFor`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
          13 (20.63 % of base) : 26566.dasm - System.Collections.IterateForEach`1[System.__Canon]:ReadOnlySpan():System.__Canon:this (FullOpts)
           8 (20.51 % of base) : 17393.dasm - Struct.SpanWrapper:SumSpan(System.ReadOnlySpan`1[int]):int:this (FullOpts)
          35 (19.44 % of base) : 27725.dasm - Benchstone.BenchI.BubbleSort2:Test():ubyte:this (FullOpts)
          13 (18.84 % of base) : 24589.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
           8 (18.60 % of base) : 14521.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (16.67 % of base) : 23933.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (16.67 % of base) : 24231.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (16.67 % of base) : 2789.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           9 (16.67 % of base) : 23387.dasm - System.Collections.IterateFor`1[int]:ReadOnlySpan():int:this (FullOpts)
           9 (16.67 % of base) : 23109.dasm - System.Collections.IterateFor`1[int]:Span():int:this (FullOpts)
           9 (16.67 % of base) : 27584.dasm - System.Collections.IterateForEach`1[int]:ReadOnlySpan():int:this (FullOpts)
           9 (16.67 % of base) : 27245.dasm - System.Collections.IterateForEach`1[int]:Span():int:this (FullOpts)
          10 (16.13 % of base) : 26061.dasm - Span.IndexerBench:TestKnownSizeCtor(ubyte[]):ubyte (FullOpts)
           9 (15.00 % of base) : 19719.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 4463.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
           8 (14.81 % of base) : 21612.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

Top method improvements (percentages):
        -555 (-17.70 % of base) : 18176.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -534 (-15.55 % of base) : 17451.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -26 (-14.77 % of base) : 15892.dasm - Span.Sorting:TestBubbleSortArray(int[]) (FullOpts)
         -24 (-11.82 % of base) : 19209.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
          -6 (-10.00 % of base) : 17145.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
         -10 (-9.80 % of base) : 14750.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
         -97 (-9.20 % of base) : 18175.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -16 (-9.09 % of base) : 27375.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
         -88 (-9.06 % of base) : 24049.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
          -7 (-8.86 % of base) : 25365.dasm - StoreBlock.AnyLocation:InitBlockAllOnes128():this (FullOpts)
          -7 (-8.86 % of base) : 25133.dasm - StoreBlock.AnyLocation:InitBlockAllZeros128():this (FullOpts)
         -74 (-8.17 % of base) : 18177.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (FullOpts)
          -4 (-8.00 % of base) : 7399.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateByteArray(int):ubyte[] (FullOpts)
          -5 (-7.94 % of base) : 24320.dasm - StoreBlock.AnyLocation:InitBlockAllOnes64():this (FullOpts)
          -5 (-7.94 % of base) : 24172.dasm - StoreBlock.AnyLocation:InitBlockAllZeros64():this (FullOpts)
          -3 (-7.69 % of base) : 24549.dasm - System.Collections.IndexerSet`1[int]:Array():int[]:this (FullOpts)
         -11 (-7.53 % of base) : 6290.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -28 (-7.41 % of base) : 17674.dasm - Neural:adjust_out_wts() (FullOpts)
         -35 (-7.38 % of base) : 26885.dasm - Benchstone.BenchI.Array2:VerifyCopy(int[][][],int[][][]):ubyte (FullOpts)
          -6 (-7.32 % of base) : 13489.dasm - IfStatements.IfStatements:Or():this (FullOpts)


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36134420 (overridden on cmd)
Total bytes of diff: 36131597 (overridden on cmd)
Total bytes of delta: -2823 (-0.01 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         171 : 23710.dasm (5.73 % of base)
          86 : 51879.dasm (3.32 % of base)
          67 : 12369.dasm (3.91 % of base)
          64 : 56047.dasm (1.28 % of base)
          62 : 79528.dasm (3.61 % of base)
          57 : 45817.dasm (4.09 % of base)
          57 : 50810.dasm (4.09 % of base)
          57 : 26454.dasm (4.09 % of base)
          57 : 34646.dasm (4.09 % of base)
          57 : 37244.dasm (4.09 % of base)
          57 : 39707.dasm (4.09 % of base)
          57 : 101467.dasm (4.09 % of base)
          57 : 79194.dasm (4.09 % of base)
          57 : 85464.dasm (3.17 % of base)
          57 : 89606.dasm (3.17 % of base)
          57 : 94050.dasm (4.09 % of base)
          57 : 97090.dasm (4.09 % of base)
          54 : 53784.dasm (6.03 % of base)
          54 : 70733.dasm (6.03 % of base)
          54 : 77637.dasm (6.03 % of base)

Top file improvements (bytes):
        -567 : 53949.dasm (-17.86 % of base)
        -477 : 50682.dasm (-14.25 % of base)
        -441 : 70535.dasm (-4.69 % of base)
        -433 : 70549.dasm (-4.57 % of base)
        -431 : 70548.dasm (-5.13 % of base)
        -383 : 53955.dasm (-6.23 % of base)
        -278 : 87236.dasm (-2.43 % of base)
        -252 : 87246.dasm (-2.21 % of base)
        -172 : 53957.dasm (-7.18 % of base)
        -168 : 87245.dasm (-1.62 % of base)
        -154 : 71783.dasm (-12.43 % of base)
        -152 : 46235.dasm (-8.61 % of base)
        -146 : 46234.dasm (-7.86 % of base)
        -132 : 53453.dasm (-3.88 % of base)
        -125 : 50661.dasm (-8.39 % of base)
        -114 : 50667.dasm (-7.71 % of base)
        -111 : 53921.dasm (-8.77 % of base)
        -111 : 53946.dasm (-8.77 % of base)
        -108 : 87244.dasm (-2.97 % of base)
        -108 : 87235.dasm (-2.97 % of base)

93 total files with Code Size differences (53 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         171 (5.73 % of base) : 23710.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          86 (3.32 % of base) : 51879.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],int,System.Span`1[uint]):System.Span`1[uint] (Tier1-OSR)
          67 (3.91 % of base) : 12369.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
          64 (1.28 % of base) : 56047.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
          62 (3.61 % of base) : 79528.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
          57 (4.09 % of base) : 45817.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 50810.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 26454.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 34646.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 37244.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 39707.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 101467.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 79194.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 94050.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (4.09 % of base) : 97090.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
          57 (3.17 % of base) : 85464.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
          57 (3.17 % of base) : 89606.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscapeValue(System.ReadOnlySpan`1[ubyte],int):this (Tier1)
          54 (6.03 % of base) : 53784.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
          54 (6.03 % of base) : 70733.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
          54 (6.03 % of base) : 77637.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)

Top method improvements (bytes):
        -567 (-17.86 % of base) : 53949.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -477 (-14.25 % of base) : 50682.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -441 (-4.69 % of base) : 70535.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -433 (-4.57 % of base) : 70549.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -431 (-5.13 % of base) : 70548.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -383 (-6.23 % of base) : 53955.dasm - LUDecomp:Run():double:this (Tier1)
        -278 (-2.43 % of base) : 87236.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        -252 (-2.21 % of base) : 87246.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        -172 (-7.18 % of base) : 53957.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -168 (-1.62 % of base) : 87245.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -154 (-12.43 % of base) : 71783.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
        -152 (-8.61 % of base) : 46235.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -146 (-7.86 % of base) : 46234.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -132 (-3.88 % of base) : 53453.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
        -125 (-8.39 % of base) : 50661.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -114 (-7.71 % of base) : 50667.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -111 (-8.77 % of base) : 53921.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -111 (-8.77 % of base) : 53946.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -108 (-2.97 % of base) : 87244.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
        -108 (-2.97 % of base) : 87235.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)

Top method regressions (percentages):
           8 (18.60 % of base) : 42090.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (17.39 % of base) : 101490.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           8 (17.39 % of base) : 27384.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           9 (15.00 % of base) : 67400.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 73094.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (14.81 % of base) : 68438.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (13.79 % of base) : 23540.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 29872.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 8104.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 83574.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 88018.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 8906.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 92785.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 97963.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (12.50 % of base) : 100563.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (12.50 % of base) : 27070.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (12.50 % of base) : 39924.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (11.59 % of base) : 65421.dasm - Microsoft.CodeAnalysis.DiagnosticBag:AddRange[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier1)
           7 (10.61 % of base) : 74528.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
           8 (10.53 % of base) : 64808.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)

Top method improvements (percentages):
        -567 (-17.86 % of base) : 53949.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
         -41 (-16.94 % of base) : 102719.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
        -477 (-14.25 % of base) : 50682.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -154 (-12.43 % of base) : 71783.dasm - Benchstone.BenchI.Puzzle:Trial(int):ubyte:this (Tier1)
         -27 (-11.54 % of base) : 100092.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
         -19 (-11.24 % of base) : 44085.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
         -26 (-11.16 % of base) : 44071.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
         -14 (-10.00 % of base) : 38412.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
         -14 (-10.00 % of base) : 38420.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
         -10 (-9.80 % of base) : 38421.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
        -111 (-8.77 % of base) : 53921.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -111 (-8.77 % of base) : 53946.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -152 (-8.61 % of base) : 46235.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -125 (-8.39 % of base) : 50661.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
         -29 (-8.33 % of base) : 32716.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (Tier1-OSR)
         -29 (-8.33 % of base) : 32714.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (Tier1-OSR)
         -12 (-8.11 % of base) : 34497.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
         -12 (-8.11 % of base) : 31146.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
         -12 (-8.11 % of base) : 37770.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
         -12 (-8.11 % of base) : 84990.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)


benchmarks.run_tiered.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 12416717 (overridden on cmd)
Total bytes of diff: 12411950 (overridden on cmd)
Total bytes of delta: -4767 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         184 : 18259.dasm (6.53 % of base)
          61 : 50175.dasm (4.21 % of base)
          48 : 43039.dasm (2.38 % of base)
          42 : 41803.dasm (6.30 % of base)
          42 : 50771.dasm (3.15 % of base)
          33 : 50757.dasm (2.22 % of base)
          31 : 19452.dasm (0.62 % of base)
          31 : 28986.dasm (3.15 % of base)
          30 : 41935.dasm (1.85 % of base)
          28 : 2437.dasm (2.26 % of base)
          28 : 50761.dasm (11.97 % of base)
          28 : 50781.dasm (12.12 % of base)
          25 : 42660.dasm (4.62 % of base)
          23 : 14348.dasm (3.55 % of base)
          20 : 20663.dasm (5.04 % of base)
          18 : 33151.dasm (2.12 % of base)
          18 : 7263.dasm (2.30 % of base)
          17 : 32174.dasm (0.77 % of base)
          16 : 5092.dasm (6.43 % of base)
          15 : 32779.dasm (3.95 % of base)

Top file improvements (bytes):
        -555 : 33483.dasm (-17.70 % of base)
        -534 : 32421.dasm (-15.55 % of base)
        -478 : 32420.dasm (-15.12 % of base)
        -447 : 34845.dasm (-5.37 % of base)
        -440 : 33474.dasm (-15.03 % of base)
        -184 : 48745.dasm (-1.78 % of base)
        -166 : 34843.dasm (-5.08 % of base)
        -143 : 29943.dasm (-7.78 % of base)
        -132 : 33393.dasm (-3.91 % of base)
        -117 : 29944.dasm (-7.26 % of base)
        -115 : 48743.dasm (-3.21 % of base)
         -97 : 33487.dasm (-9.20 % of base)
         -82 : 34844.dasm (-5.55 % of base)
         -74 : 33484.dasm (-8.17 % of base)
         -74 : 20290.dasm (-4.69 % of base)
         -58 : 46881.dasm (-6.46 % of base)
         -58 : 28367.dasm (-7.39 % of base)
         -55 : 33486.dasm (-5.40 % of base)
         -43 : 34842.dasm (-3.20 % of base)
         -40 : 30272.dasm (-5.15 % of base)

82 total files with Code Size differences (46 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         184 (6.53 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          61 (4.21 % of base) : 50175.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
          48 (2.38 % of base) : 43039.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier1)
          42 (6.30 % of base) : 41803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
          42 (3.15 % of base) : 50771.dasm - System.Numerics.BigInteger:Subtract(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          33 (2.22 % of base) : 50757.dasm - System.Numerics.BigInteger:Add(System.ReadOnlySpan`1[uint],int,System.ReadOnlySpan`1[uint],int):System.Numerics.BigInteger (Tier1)
          31 (3.15 % of base) : 28986.dasm - Fourier:DoFPUTransIteration(double[],double[],int):long (Tier1)
          31 (0.62 % of base) : 19452.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
          30 (1.85 % of base) : 41935.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (Tier1)
          28 (11.97 % of base) : 50761.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          28 (12.12 % of base) : 50781.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          28 (2.26 % of base) : 2437.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixText|41_3(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
          25 (4.62 % of base) : 42660.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (Tier1)
          23 (3.55 % of base) : 14348.dasm - System.Text.Json.Tests.Perf_Strings:WriteStringsUtf8():this (Tier1-OSR)
          20 (5.04 % of base) : 20663.dasm - System.Buffers.StringSearchValues:AnalyzeValues(System.ReadOnlySpan`1[System.String],byref,byref,byref,byref,byref) (Tier1)
          18 (2.12 % of base) : 33151.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[uint],int,System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint],int,System.Span`1[uint]):System.Span`1[uint] (Tier1-OSR)
          18 (2.30 % of base) : 7263.dasm - System.Reflection.AssemblyNameParser:ParseVersion(System.String):System.Version:this (Tier0-FullOpts)
          17 (0.77 % of base) : 32174.dasm - System.Numerics.BigIntegerCalculator:MultiplyNearLength(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier0-FullOpts)
          16 (6.43 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          15 (3.95 % of base) : 32779.dasm - Benchstone.BenchF.InProd:Test():ubyte:this (Tier1-OSR)

Top method improvements (bytes):
        -555 (-17.70 % of base) : 33483.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -534 (-15.55 % of base) : 32421.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -478 (-15.12 % of base) : 32420.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -447 (-5.37 % of base) : 34845.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1)
        -440 (-15.03 % of base) : 33474.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
        -184 (-1.78 % of base) : 48745.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1)
        -166 (-5.08 % of base) : 34843.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier1-OSR)
        -143 (-7.78 % of base) : 29943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -132 (-3.91 % of base) : 33393.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
        -117 (-7.26 % of base) : 29944.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -115 (-3.21 % of base) : 48743.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
         -97 (-9.20 % of base) : 33487.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -82 (-5.55 % of base) : 34844.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1)
         -74 (-8.17 % of base) : 33484.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
         -74 (-4.69 % of base) : 20290.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -58 (-6.46 % of base) : 46881.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
         -58 (-7.39 % of base) : 28367.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
         -55 (-5.40 % of base) : 33486.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1)
         -43 (-3.20 % of base) : 34842.dasm - Benchstone.BenchF.LLoops:Init():this (Tier1-OSR)
         -40 (-5.15 % of base) : 30272.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)

Top method regressions (percentages):
           9 (15.00 % of base) : 39133.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (14.81 % of base) : 42770.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (12.50 % of base) : 20613.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
          28 (12.12 % of base) : 50781.dasm - System.Numerics.BigIntegerCalculator:Subtract(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
          28 (11.97 % of base) : 50761.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
           7 (11.11 % of base) : 41378.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
           6 (10.71 % of base) : 6432.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (10.53 % of base) : 37528.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
          14 (8.92 % of base) : 53175.dasm - IfStatements.IfStatements:AndAndAnd():this (Tier1-OSR)
           7 (7.61 % of base) : 28242.dasm - System.Text.RegularExpressions.Symbolic.CharSetSolver:Or(System.ReadOnlySpan`1[System.Text.RegularExpressions.Symbolic.BDD]):System.Text.RegularExpressions.Symbolic.BDD:this (Tier1)
          10 (7.41 % of base) : 52598.dasm - IfStatements.IfStatements:AndAnd():this (Tier1-OSR)
          10 (7.41 % of base) : 27325.dasm - IfStatements.IfStatements:AndOr():this (Tier1-OSR)
          10 (7.41 % of base) : 26252.dasm - IfStatements.IfStatements:OrOr():this (Tier1-OSR)
          12 (6.78 % of base) : 24435.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
          12 (6.78 % of base) : 655.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
         184 (6.53 % of base) : 18259.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          16 (6.43 % of base) : 5092.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (Tier1)
          14 (6.36 % of base) : 43390.dasm - Benchstone.BenchI.Puzzle:Place(int,int):int:this (Tier1)
          42 (6.30 % of base) : 41803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
           8 (5.88 % of base) : 29839.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
        -555 (-17.70 % of base) : 33483.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -534 (-15.55 % of base) : 32421.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
        -478 (-15.12 % of base) : 32420.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
        -440 (-15.03 % of base) : 33474.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
         -26 (-14.77 % of base) : 29738.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1)
         -33 (-13.92 % of base) : 29736.dasm - Span.Sorting:TestBubbleSortArray(int[]) (Tier1-OSR)
         -27 (-12.92 % of base) : 53142.dasm - Benchstone.BenchI.BubbleSort2:Inner(int[]) (Tier1-OSR)
         -30 (-12.77 % of base) : 53046.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (Tier1-OSR)
         -12 (-10.43 % of base) : 1953.dasm - System.Random+CompatPrng:NextBytes(System.Span`1[ubyte]):this (Tier1-OSR)
         -14 (-10.14 % of base) : 27185.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
         -10 (-9.80 % of base) : 27187.dasm - Span.Sorting:TestBubbleSortSpan(System.Span`1[int]) (Tier1)
         -97 (-9.20 % of base) : 33487.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
         -38 (-8.86 % of base) : 53121.dasm - SciMark2.SparseCompRow:matmult(double[],double[],int[],int[],double[],int) (Tier1-OSR)
         -12 (-8.63 % of base) : 28851.dasm - System.Linq.Enumerable+SelectRangeIterator`1[ubyte]:Fill(System.Span`1[ubyte],int,System.Func`2[int,ubyte]) (Tier1-OSR)
         -74 (-8.17 % of base) : 33484.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1)
         -12 (-8.11 % of base) : 24816.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
         -28 (-8.09 % of base) : 25780.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAtv(int,double[],double[]):this (Tier1-OSR)
         -28 (-8.09 % of base) : 25778.dasm - BenchmarksGame.SpectralNorm_1:MultiplyAv(int,double[],double[]):this (Tier1-OSR)
        -143 (-7.78 % of base) : 29943.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
         -17 (-7.56 % of base) : 33904.dasm - Benchstone.BenchI.Permutate:Test():ubyte:this (Tier1-OSR)


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 393035946 (overridden on cmd)
Total bytes of diff: 392962977 (overridden on cmd)
Total bytes of delta: -72969 (-0.02 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         522 : 367996.dasm (3.12 % of base)
         155 : 476174.dasm (5.66 % of base)
         153 : 477191.dasm (6.53 % of base)
         119 : 510762.dasm (3.11 % of base)
          81 : 336016.dasm (4.89 % of base)
          75 : 510052.dasm (2.43 % of base)
          75 : 504314.dasm (2.43 % of base)
          72 : 370834.dasm (1.89 % of base)
          61 : 476108.dasm (2.11 % of base)
          59 : 476178.dasm (2.57 % of base)
          55 : 370890.dasm (0.49 % of base)
          53 : 120689.dasm (3.36 % of base)
          52 : 475810.dasm (0.67 % of base)
          50 : 481405.dasm (1.77 % of base)
          49 : 193157.dasm (4.45 % of base)
          49 : 35675.dasm (3.08 % of base)
          48 : 368584.dasm (2.54 % of base)
          48 : 479451.dasm (2.13 % of base)
          46 : 368588.dasm (2.15 % of base)
          46 : 501239.dasm (4.12 % of base)

Top file improvements (bytes):
        -555 : 479401.dasm (-17.70 % of base)
        -534 : 480819.dasm (-15.55 % of base)
        -531 : 228271.dasm (-16.73 % of base)
        -447 : 480718.dasm (-5.36 % of base)
        -430 : 228281.dasm (-6.96 % of base)
        -266 : 464409.dasm (-8.73 % of base)
        -182 : 480775.dasm (-1.76 % of base)
        -171 : 228005.dasm (-8.95 % of base)
        -169 : 557626.dasm (-2.07 % of base)
        -161 : 228275.dasm (-6.75 % of base)
        -159 : 228006.dasm (-8.97 % of base)
        -152 : 445080.dasm (-1.02 % of base)
        -152 : 445083.dasm (-1.02 % of base)
        -148 : 479356.dasm (-7.06 % of base)
        -141 : 510208.dasm (-3.66 % of base)
        -141 : 504692.dasm (-3.66 % of base)
        -126 : 366869.dasm (-1.39 % of base)
        -120 : 367690.dasm (-1.53 % of base)
        -120 : 504667.dasm (-7.48 % of base)
        -117 : 479332.dasm (-7.26 % of base)

92 total files with Code Size differences (52 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         522 (3.12 % of base) : 367996.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
         155 (5.66 % of base) : 476174.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         153 (6.53 % of base) : 477191.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         119 (3.11 % of base) : 510762.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
          81 (4.89 % of base) : 336016.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier1)
          75 (2.43 % of base) : 510052.dasm - Test_jaggedarr_InnerProd.doublemm:TestEntryPoint():int (FullOpts)
          75 (2.43 % of base) : 504314.dasm - Test_jaggedarr_InnerProd.doublemm:TestEntryPoint():int (FullOpts)
          72 (1.89 % of base) : 370834.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
          61 (2.11 % of base) : 476108.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)
          59 (2.57 % of base) : 476178.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
          55 (0.49 % of base) : 370890.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier1)
          53 (3.36 % of base) : 120689.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
          52 (0.67 % of base) : 475810.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
          50 (1.77 % of base) : 481405.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
          49 (3.08 % of base) : 35675.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
          49 (4.45 % of base) : 193157.dasm - System.RuntimeType:GetMethodCandidates(System.String,int,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.MethodInfo]:this (Instrumented Tier1)
          48 (2.13 % of base) : 479451.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
          48 (2.54 % of base) : 368584.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
          46 (2.15 % of base) : 368588.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1)
          46 (4.12 % of base) : 501239.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)

Top method improvements (bytes):
        -555 (-17.70 % of base) : 479401.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -534 (-15.55 % of base) : 480819.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -531 (-16.73 % of base) : 228271.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -447 (-5.36 % of base) : 480718.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
        -430 (-6.96 % of base) : 228281.dasm - LUDecomp:Run():double:this (Tier1)
        -266 (-8.73 % of base) : 464409.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -182 (-1.76 % of base) : 480775.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
        -171 (-8.95 % of base) : 228005.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
        -169 (-2.07 % of base) : 557626.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
        -161 (-6.75 % of base) : 228275.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
        -159 (-8.97 % of base) : 228006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -152 (-1.02 % of base) : 445080.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftLeftLogicalVariable() (FullOpts)
        -152 (-1.02 % of base) : 445083.dasm - IntelHardwareIntrinsicTest._Avx2.Program:ShiftRightLogicalVariable() (FullOpts)
        -148 (-7.06 % of base) : 479356.dasm - Huffman:DoHuffIteration(ubyte[],ubyte[],ubyte[],int,int,huff_node[]):long (FullOpts)
        -141 (-3.66 % of base) : 510208.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -141 (-3.66 % of base) : 504692.dasm - Test_structarr_InnerProd.intmm:TestEntryPoint():int (FullOpts)
        -126 (-1.39 % of base) : 366869.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier1)
        -120 (-7.48 % of base) : 504667.dasm - string1:ProcessJagged3DArray(System.String[][]) (FullOpts)
        -120 (-1.53 % of base) : 367690.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]) (Tier1)
        -117 (-7.26 % of base) : 479332.dasm - AssignJagged:second_assignments(int[][],short[][]) (FullOpts)

Top method regressions (percentages):
          13 (27.08 % of base) : 480554.dasm - Span.IndexerBench:TestIndexer1(System.Span`1[ubyte]):ubyte (FullOpts)
          13 (27.08 % of base) : 480573.dasm - Span.IndexerBench:TestReadOnlyIndexer1(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           8 (19.05 % of base) : 518237.dasm - GitHub_5556:SpanAsParam(System.Span`1[long]):long (FullOpts)
           8 (19.05 % of base) : 518238.dasm - GitHub_5556:SpanWithLocalCopy(System.Span`1[long]):long (FullOpts)
          13 (18.84 % of base) : 480563.dasm - Span.IndexerBench:TestIndexer4(System.Span`1[ubyte],int):ubyte (FullOpts)
           7 (17.95 % of base) : 493674.dasm - CreateSpanTest:Main():int (FullOpts)
           6 (17.65 % of base) : 481431.dasm - Span.SpanBench:TestFillAllSpan(System.Span`1[ubyte]) (FullOpts)
           8 (17.39 % of base) : 336020.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (Tier1)
           8 (16.67 % of base) : 480557.dasm - Span.IndexerBench:TestIndexer2(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (16.67 % of base) : 480560.dasm - Span.IndexerBench:TestIndexer3(System.Span`1[ubyte]):ubyte (FullOpts)
           8 (16.67 % of base) : 480576.dasm - Span.IndexerBench:TestReadOnlyIndexer2(System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
          21 (16.03 % of base) : 480592.dasm - Span.IndexerBench:TestKnownSizeCtor2(ubyte[],int):ubyte (FullOpts)
           9 (15.00 % of base) : 476054.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 511235.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
           8 (14.81 % of base) : 478089.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (14.06 % of base) : 474464.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[float]:ReturnArrays(int):this (FullOpts)
           8 (13.79 % of base) : 231976.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 264368.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 363084.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 245628.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

Top method improvements (percentages):
        -555 (-17.70 % of base) : 479401.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
        -531 (-16.73 % of base) : 228271.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
        -534 (-15.55 % of base) : 480819.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -26 (-14.77 % of base) : 481453.dasm - Span.SpanBench:TestBubbleSortArray(int[]) (FullOpts)
          -4 (-12.50 % of base) : 481434.dasm - Span.SpanBench:TestFillAllArray(ubyte[]) (FullOpts)
          -8 (-11.94 % of base) : 465355.dasm - MarshalArrayAsParam.Default.ArrayMarshal:GetExpectedOutBoolArray(int):ubyte[] (FullOpts)
          -8 (-11.94 % of base) : 465347.dasm - MarshalArrayAsParam.Default.ArrayMarshal:InitBoolArray(int):ubyte[] (FullOpts)
         -24 (-11.82 % of base) : 475482.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -14 (-10.00 % of base) : 231720.dasm - Span.SpanBench:TestBubbleSortSpan(System.Span`1[int]) (Tier1-OSR)
         -10 (-9.80 % of base) : 481447.dasm - Span.SpanBench:TestBubbleSortSpan(System.Span`1[int]) (FullOpts)
          -4 (-9.76 % of base) : 466973.dasm - MiscMethods:Sum(double[]):double:this (FullOpts)
          -4 (-9.76 % of base) : 466969.dasm - MiscMethods:Sum(float[]):float:this (FullOpts)
         -97 (-9.20 % of base) : 479400.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
         -16 (-9.09 % of base) : 479461.dasm - Benchstone.BenchI.BubbleSort:SortArray(int[],int) (FullOpts)
         -88 (-9.06 % of base) : 480425.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (FullOpts)
         -18 (-9.00 % of base) : 503998.dasm - class1:Init3DMatrix(double[,,],double[][]) (FullOpts)
         -18 (-9.00 % of base) : 504315.dasm - Test_jaggedarr_InnerProd.doublemm:Init3DMatrix(double[,,],double[][]) (FullOpts)
        -159 (-8.97 % of base) : 228006.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1)
        -171 (-8.95 % of base) : 228005.dasm - AssignJagged:second_assignments(int[][],short[][]) (Tier1-OSR)
          -4 (-8.89 % of base) : 466581.dasm - BringUpTest_DblArray:DblArray(double[],double):double (FullOpts)


libraries.crossgen2.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39485796 (overridden on cmd)
Total bytes of diff: 39484273 (overridden on cmd)
Total bytes of delta: -1523 (-0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         436 : 37848.dasm (1.70 % of base)
         259 : 38875.dasm (7.26 % of base)
         231 : 96805.dasm (8.62 % of base)
         208 : 146569.dasm (10.26 % of base)
         184 : 117196.dasm (4.18 % of base)
         162 : 228828.dasm (6.51 % of base)
         146 : 16197.dasm (1.48 % of base)
         143 : 35063.dasm (4.36 % of base)
         140 : 201185.dasm (5.83 % of base)
         122 : 189336.dasm (3.47 % of base)
         119 : 100702.dasm (4.32 % of base)
         117 : 38577.dasm (2.90 % of base)
         110 : 175679.dasm (4.69 % of base)
          96 : 98975.dasm (4.11 % of base)
          93 : 210848.dasm (15.71 % of base)
          92 : 100384.dasm (4.48 % of base)
          88 : 68023.dasm (1.73 % of base)
          88 : 66398.dasm (1.89 % of base)
          82 : 218345.dasm (3.54 % of base)
          81 : 60242.dasm (1.69 % of base)

Top file improvements (bytes):
        -213 : 195717.dasm (-6.19 % of base)
        -171 : 3952.dasm (-2.42 % of base)
        -136 : 31107.dasm (-4.39 % of base)
        -114 : 92820.dasm (-2.25 % of base)
         -93 : 116388.dasm (-6.73 % of base)
         -89 : 38994.dasm (-8.21 % of base)
         -83 : 231975.dasm (-6.61 % of base)
         -80 : 37649.dasm (-3.86 % of base)
         -78 : 171122.dasm (-4.81 % of base)
         -74 : 163937.dasm (-3.86 % of base)
         -74 : 188760.dasm (-3.86 % of base)
         -74 : 133369.dasm (-8.04 % of base)
         -65 : 117065.dasm (-3.29 % of base)
         -65 : 101707.dasm (-8.35 % of base)
         -63 : 214952.dasm (-3.95 % of base)
         -63 : 231601.dasm (-3.90 % of base)
         -62 : 3382.dasm (-5.44 % of base)
         -60 : 122423.dasm (-4.49 % of base)
         -60 : 16199.dasm (-4.67 % of base)
         -58 : 31116.dasm (-3.18 % of base)

96 total files with Code Size differences (56 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         436 (1.70 % of base) : 37848.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         259 (7.26 % of base) : 38875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         231 (8.62 % of base) : 96805.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
         208 (10.26 % of base) : 146569.dasm - System.Dynamic.Utils.DelegateHelpers:CreateObjectArrayDelegateRefEmit(System.Type,System.Func`2[System.Object[],System.Object]):System.Delegate (FullOpts)
         184 (4.18 % of base) : 117196.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         162 (6.51 % of base) : 228828.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         146 (1.48 % of base) : 16197.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         143 (4.36 % of base) : 35063.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
         140 (5.83 % of base) : 201185.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
         122 (3.47 % of base) : 189336.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)
         119 (4.32 % of base) : 100702.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:AddGroupClassMembersIfNeeded(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
         117 (2.90 % of base) : 38577.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
         110 (4.69 % of base) : 175679.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
          96 (4.11 % of base) : 98975.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
          93 (15.71 % of base) : 210848.dasm - System.Diagnostics.LegacyPropagator:TryExtractBaggage(System.String,byref):ubyte (FullOpts)
          92 (4.48 % of base) : 100384.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          88 (1.73 % of base) : 68023.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
          88 (1.89 % of base) : 66398.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          82 (3.54 % of base) : 218345.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
          81 (1.69 % of base) : 60242.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

Top method improvements (bytes):
        -213 (-6.19 % of base) : 195717.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
        -171 (-2.42 % of base) : 3952.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
        -136 (-4.39 % of base) : 31107.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
        -114 (-2.25 % of base) : 92820.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)
         -93 (-6.73 % of base) : 116388.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
         -89 (-8.21 % of base) : 38994.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
         -83 (-6.61 % of base) : 231975.dasm - System.Reflection.TypeLoading.Ecma.EcmaMethodBody:get_ExceptionHandlingClauses():System.Collections.Generic.IList`1[System.Reflection.ExceptionHandlingClause]:this (FullOpts)
         -80 (-3.86 % of base) : 37649.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
         -78 (-4.81 % of base) : 171122.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
         -74 (-3.86 % of base) : 163937.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -74 (-3.86 % of base) : 188760.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -74 (-8.04 % of base) : 133369.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:CalculateHeapSizes(System.Collections.Generic.IReadOnlyList`1[int],System.Collections.Generic.IReadOnlyList`1[System.Reflection.Metadata.MetadataReader]):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]] (FullOpts)
         -65 (-3.29 % of base) : 117065.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         -65 (-8.35 % of base) : 101707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
         -63 (-3.95 % of base) : 214952.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -63 (-3.90 % of base) : 231601.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -62 (-5.44 % of base) : 3382.dasm - System.Data.DataRelationCollection+DataSetRelationCollection:FinishInitRelations():this (FullOpts)
         -60 (-4.49 % of base) : 122423.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:AddLambdaToGraph(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+ArgumentNode,Microsoft.CodeAnalysis.VisualBasic.Binder):this (FullOpts)
         -60 (-4.67 % of base) : 16199.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -58 (-3.18 % of base) : 31116.dasm - System.Reflection.MethodInvoker:InvokeWithManyArgs(System.Object,System.Span`1[System.Object]):System.Object:this (FullOpts)

Top method regressions (percentages):
          30 (32.97 % of base) : 127433.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          14 (28.00 % of base) : 153152.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          14 (28.00 % of base) : 178190.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          14 (28.00 % of base) : 220145.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          14 (24.14 % of base) : 36231.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          18 (21.69 % of base) : 178189.dasm - Roslyn.Utilities.StringExtensions:GetCaseInsensitivePrefixLength(System.String,System.String):int (FullOpts)
          18 (21.69 % of base) : 153151.dasm - Roslyn.Utilities.StringExtensions:GetCaseInsensitivePrefixLength(System.String,System.String):int (FullOpts)
          29 (21.17 % of base) : 152756.dasm - Xunit.Sdk.DisplayNameFormatter+ReplaceEscapeSequenceRule:HexToInt32(ushort[]):int (FullOpts)
           9 (20.93 % of base) : 124206.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (20.00 % of base) : 203843.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          57 (19.39 % of base) : 30512.dasm - System.Globalization.UmAlQuraCalendar:InitDateMapping():System.Globalization.UmAlQuraCalendar+DateMapping[] (FullOpts)
           9 (19.15 % of base) : 194581.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           9 (18.37 % of base) : 178102.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           9 (18.37 % of base) : 153064.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
          21 (17.65 % of base) : 11961.dasm - Microsoft.FSharp.Collections.ArrayModule:TryFindIndex[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
           9 (17.65 % of base) : 215957.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (17.65 % of base) : 232521.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (16.67 % of base) : 133016.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          10 (16.39 % of base) : 163347.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
          10 (16.39 % of base) : 188164.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)

Top method improvements (percentages):
         -31 (-18.34 % of base) : 176304.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
         -15 (-12.50 % of base) : 1002.dasm - System.Data.FillErrorEventArgs:get_Values():System.Object[]:this (FullOpts)
          -9 (-10.34 % of base) : 3973.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -14 (-10.07 % of base) : 133351.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
         -10 (-8.70 % of base) : 153385.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
         -10 (-8.70 % of base) : 178312.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
         -13 (-8.67 % of base) : 95073.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearShortByte(short[],int):ubyte[] (FullOpts)
         -65 (-8.35 % of base) : 101707.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:SubstituteCustomModifiers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]:this (FullOpts)
          -4 (-8.33 % of base) : 127742.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule:ResetSchedule():this (FullOpts)
         -11 (-8.33 % of base) : 95071.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearByteShort(ubyte[],int):short[] (FullOpts)
         -10 (-8.26 % of base) : 238989.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
         -12 (-8.22 % of base) : 3356.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -89 (-8.21 % of base) : 38994.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
         -11 (-8.15 % of base) : 37249.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -74 (-8.04 % of base) : 133369.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator:CalculateHeapSizes(System.Collections.Generic.IReadOnlyList`1[int],System.Collections.Generic.IReadOnlyList`1[System.Reflection.Metadata.MetadataReader]):System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]] (FullOpts)
         -19 (-7.95 % of base) : 241248.dasm - System.Number:ParseFormatSpecifier(System.ReadOnlySpan`1[ushort],byref):ushort (FullOpts)
          -8 (-7.84 % of base) : 238988.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInDomainLiterals():ubyte[] (FullOpts)
          -8 (-7.84 % of base) : 238987.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInQuotedStrings():ubyte[] (FullOpts)
         -17 (-7.80 % of base) : 23552.dasm - System.Reflection.RuntimeEventInfo:GetOtherMethods(ubyte):System.Reflection.MethodInfo[]:this (FullOpts)
          -6 (-7.79 % of base) : 166465.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)


libraries.pmi.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61660326 (overridden on cmd)
Total bytes of diff: 61658612 (overridden on cmd)
Total bytes of delta: -1714 (-0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         969 : 57942.dasm (3.42 % of base)
         717 : 100117.dasm (4.01 % of base)
         216 : 127338.dasm (4.46 % of base)
         208 : 293843.dasm (6.25 % of base)
         191 : 292028.dasm (6.70 % of base)
         155 : 93213.dasm (5.66 % of base)
         147 : 105649.dasm (7.36 % of base)
         145 : 218951.dasm (3.89 % of base)
         139 : 293969.dasm (8.26 % of base)
         136 : 100158.dasm (0.59 % of base)
         120 : 88647.dasm (5.28 % of base)
         118 : 123224.dasm (1.92 % of base)
         114 : 126034.dasm (3.42 % of base)
         113 : 218952.dasm (3.89 % of base)
         110 : 127336.dasm (2.23 % of base)
         109 : 123566.dasm (6.07 % of base)
          99 : 65926.dasm (1.61 % of base)
          95 : 17108.dasm (1.12 % of base)
          95 : 280771.dasm (2.59 % of base)
          93 : 67583.dasm (1.36 % of base)

Top file improvements (bytes):
        -282 : 57949.dasm (-9.38 % of base)
        -266 : 131471.dasm (-8.69 % of base)
        -169 : 304762.dasm (-2.06 % of base)
        -137 : 65742.dasm (-3.27 % of base)
        -135 : 296449.dasm (-3.88 % of base)
        -109 : 57944.dasm (-2.36 % of base)
        -100 : 18511.dasm (-1.54 % of base)
        -100 : 122280.dasm (-3.86 % of base)
         -83 : 151174.dasm (-4.87 % of base)
         -82 : 162825.dasm (-1.98 % of base)
         -82 : 59586.dasm (-1.36 % of base)
         -80 : 217132.dasm (-3.87 % of base)
         -80 : 67504.dasm (-3.82 % of base)
         -80 : 269623.dasm (-2.40 % of base)
         -79 : 67459.dasm (-3.17 % of base)
         -75 : 57674.dasm (-5.99 % of base)
         -73 : 21073.dasm (-2.54 % of base)
         -70 : 57956.dasm (-1.16 % of base)
         -69 : 123653.dasm (-1.81 % of base)
         -67 : 254911.dasm (-4.00 % of base)

97 total files with Code Size differences (57 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         969 (3.42 % of base) : 57942.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         717 (4.01 % of base) : 100117.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
         216 (4.46 % of base) : 127338.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         208 (6.25 % of base) : 293843.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         191 (6.70 % of base) : 292028.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         155 (5.66 % of base) : 93213.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         147 (7.36 % of base) : 105649.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution:Create(Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution (FullOpts)
         145 (3.89 % of base) : 218951.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
         139 (8.26 % of base) : 293969.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
         136 (0.59 % of base) : 100158.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
         120 (5.28 % of base) : 88647.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         118 (1.92 % of base) : 123224.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
         114 (3.42 % of base) : 126034.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BuildJoinSelector(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         113 (3.89 % of base) : 218952.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         110 (2.23 % of base) : 127336.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
         109 (6.07 % of base) : 123566.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
          99 (1.61 % of base) : 65926.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          95 (1.12 % of base) : 17108.dasm - System.Data.XmlTreeGen:SchemaTree(System.Xml.XmlDocument,System.Xml.XmlWriter,System.Data.DataSet,System.Data.DataTable,ubyte):this (FullOpts)
          95 (2.59 % of base) : 280771.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
          93 (1.36 % of base) : 67583.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)

Top method improvements (bytes):
        -282 (-9.38 % of base) : 57949.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -266 (-8.69 % of base) : 131471.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -169 (-2.06 % of base) : 304762.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
        -137 (-3.27 % of base) : 65742.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)
        -135 (-3.88 % of base) : 296449.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
        -109 (-2.36 % of base) : 57944.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
        -100 (-3.86 % of base) : 122280.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitAnonymousTypeCreationExpression(Microsoft.CodeAnalysis.VisualBasic.BoundAnonymousTypeCreationExpression):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
        -100 (-1.54 % of base) : 18511.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -83 (-4.87 % of base) : 151174.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
         -82 (-1.98 % of base) : 162825.dasm - Microsoft.Build.BackEnd.TaskHost+<BuildProjectFilesInParallelAsync>d__81:MoveNext():this (FullOpts)
         -82 (-1.36 % of base) : 59586.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -80 (-3.82 % of base) : 67504.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -80 (-2.40 % of base) : 269623.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
         -80 (-3.87 % of base) : 217132.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
         -79 (-3.17 % of base) : 67459.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteArgumentsForComCall(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression[],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (FullOpts)
         -75 (-5.99 % of base) : 57674.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
         -73 (-2.54 % of base) : 21073.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
         -70 (-1.16 % of base) : 57956.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         -69 (-1.81 % of base) : 123653.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeUnification:CanUnifyHelper(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,byref):ubyte (FullOpts)
         -67 (-4.00 % of base) : 254911.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method regressions (percentages):
          21 (33.33 % of base) : 161240.dasm - Microsoft.Build.Shared.FileMatcher:HasDotDot(System.String):ubyte (FullOpts)
          30 (33.33 % of base) : 230348.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          13 (26.00 % of base) : 132688.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          13 (26.00 % of base) : 166701.dasm - Roslyn.Utilities.StringExtensions:GetCaseSensitivePrefixLength(System.String,System.String):int (FullOpts)
          13 (26.00 % of base) : 250744.dasm - System.CommandLine.Invocation.ParseErrorAction:<WriteTypoCorrectionSuggestions>g__GetStartsWithDistance|11_1(System.String,System.String):int (FullOpts)
          16 (21.05 % of base) : 257822.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
          16 (21.05 % of base) : 257873.dasm - System.Collections.Concurrent.BlockingCollection`1[long]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[long][],long):int (FullOpts)
          16 (21.05 % of base) : 257856.dasm - System.Collections.Concurrent.BlockingCollection`1[System.Numerics.Vector`1[float]]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[System.Numerics.Vector`1[float]][],System.Numerics.Vector`1[float]):int (FullOpts)
          16 (20.25 % of base) : 257839.dasm - System.Collections.Concurrent.BlockingCollection`1[double]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[double][],double):int (FullOpts)
          16 (20.25 % of base) : 257758.dasm - System.Collections.Concurrent.BlockingCollection`1[ubyte]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[ubyte][],ubyte):int (FullOpts)
          16 (20.00 % of base) : 257805.dasm - System.Collections.Concurrent.BlockingCollection`1[short]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[short][],short):int (FullOpts)
           8 (18.60 % of base) : 129307.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          14 (18.18 % of base) : 257695.dasm - System.Collections.Concurrent.BlockingCollection`1[System.__Canon]:TryAddToAnyFast(System.__Canon[],System.__Canon):int (FullOpts)
           8 (17.78 % of base) : 235727.dasm - System.Text.RegularExpressions.Symbolic.UInt64Solver:Or(System.ReadOnlySpan`1[ulong]):ulong:this (FullOpts)
          25 (16.78 % of base) : 215064.dasm - System.Xml.Xsl.XPathConvert+BigInteger:CompareTo(System.Object):int:this (FullOpts)
           8 (16.33 % of base) : 132166.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (16.33 % of base) : 166041.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (16.00 % of base) : 203033.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           8 (15.69 % of base) : 255411.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           8 (15.69 % of base) : 294877.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)

Top method improvements (percentages):
         -31 (-18.24 % of base) : 216873.dasm - System.Xml.Xsl.Runtime.NumberFormatterBase:ConvertToRoman(System.Text.StringBuilder,double,ubyte) (FullOpts)
         -24 (-11.82 % of base) : 77822.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -15 (-11.11 % of base) : 17976.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
          -9 (-10.34 % of base) : 17391.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
          -6 (-9.84 % of base) : 283761.dasm - System.Linq.SingleLinkedNode`1[ubyte]:FillReversed(System.Span`1[ubyte]):this (FullOpts)
        -282 (-9.38 % of base) : 57949.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
        -266 (-8.69 % of base) : 131471.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
          -4 (-8.51 % of base) : 190369.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySchedule:ResetSchedule():this (FullOpts)
         -12 (-8.33 % of base) : 17969.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -14 (-8.33 % of base) : 222546.dasm - System.Reflection.Metadata.MetadataReader:ComputeCodedTokenSize(int,int[],ulong):int:this (FullOpts)
         -27 (-8.31 % of base) : 103280.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
         -31 (-8.27 % of base) : 18171.dasm - System.Data.DataRow:SetKeyValues(System.Data.DataKey,System.Object[]):this (FullOpts)
         -13 (-8.23 % of base) : 97866.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearShortByte(short[],int):ubyte[] (FullOpts)
         -10 (-7.94 % of base) : 132968.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
         -10 (-7.94 % of base) : 166861.dasm - Microsoft.Cci.CustomDebugInfoWriter:<SerializeDynamicLocalInfo>g__GetDynamicFlags|10_0(Microsoft.Cci.ILocalDefinition):ubyte[] (FullOpts)
          -6 (-7.89 % of base) : 131834.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)
          -6 (-7.89 % of base) : 165711.dasm - Roslyn.Utilities.ArrayExtensions:ReverseContents[ubyte](ubyte[],int,int) (FullOpts)
         -11 (-7.86 % of base) : 97864.dasm - System.Speech.Internal.Synthesis.AudioFormatConverter:ConvertLinear8LinearByteShort(ubyte[],int):short[] (FullOpts)
          -3 (-7.69 % of base) : 138290.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Validate(System.Object):this (FullOpts)
          -3 (-7.69 % of base) : 172097.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Validate(System.Object):this (FullOpts)


libraries_tests.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 280853081 (overridden on cmd)
Total bytes of diff: 280919003 (overridden on cmd)
Total bytes of delta: 65922 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         779 : 387325.dasm (5.72 % of base)
         555 : 473076.dasm (3.65 % of base)
         532 : 189992.dasm (5.50 % of base)
         354 : 508170.dasm (2.82 % of base)
         341 : 404866.dasm (2.65 % of base)
         339 : 69096.dasm (2.23 % of base)
         327 : 479068.dasm (2.18 % of base)
         300 : 330534.dasm (2.25 % of base)
         284 : 82392.dasm (2.21 % of base)
         282 : 593216.dasm (4.64 % of base)
         281 : 141179.dasm (1.91 % of base)
         265 : 594149.dasm (4.42 % of base)
         264 : 316914.dasm (2.14 % of base)
         257 : 174705.dasm (3.01 % of base)
         250 : 178550.dasm (2.00 % of base)
         238 : 301720.dasm (1.82 % of base)
         234 : 563496.dasm (1.77 % of base)
         229 : 341984.dasm (2.08 % of base)
         222 : 116585.dasm (1.76 % of base)
         221 : 512689.dasm (1.76 % of base)

Top file improvements (bytes):
        -606 : 361858.dasm (-4.51 % of base)
        -516 : 85011.dasm (-2.71 % of base)
        -507 : 57968.dasm (-2.66 % of base)
        -421 : 92259.dasm (-5.54 % of base)
        -339 : 217924.dasm (-2.14 % of base)
        -318 : 333758.dasm (-5.26 % of base)
        -297 : 356409.dasm (-2.98 % of base)
        -256 : 643639.dasm (-2.37 % of base)
        -234 : 471003.dasm (-1.70 % of base)
        -218 : 625924.dasm (-6.49 % of base)
        -204 : 334628.dasm (-3.25 % of base)
        -201 : 635819.dasm (-2.23 % of base)
        -196 : 77828.dasm (-1.87 % of base)
        -196 : 37565.dasm (-1.87 % of base)
        -183 : 167549.dasm (-3.68 % of base)
        -160 : 323655.dasm (-0.99 % of base)
        -151 : 334721.dasm (-2.90 % of base)
        -144 : 335252.dasm (-2.20 % of base)
        -142 : 619668.dasm (-1.62 % of base)
        -135 : 76917.dasm (-3.98 % of base)

99 total files with Code Size differences (59 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         779 (5.72 % of base) : 387325.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         555 (3.65 % of base) : 473076.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (Tier1-OSR)
         532 (5.50 % of base) : 189992.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         354 (2.82 % of base) : 508170.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         341 (2.65 % of base) : 404866.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         339 (2.23 % of base) : 69096.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         327 (2.18 % of base) : 479068.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         300 (2.25 % of base) : 330534.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         284 (2.21 % of base) : 82392.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         282 (4.64 % of base) : 593216.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWriting(ushort,System.Text.Encodings.Web.JavaScriptEncoder,ubyte):this (Tier1-OSR)
         281 (1.91 % of base) : 141179.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         265 (4.42 % of base) : 594149.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWritingSurrogate(System.Text.Encodings.Web.JavaScriptEncoder):this (Tier1-OSR)
         264 (2.14 % of base) : 316914.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         257 (3.01 % of base) : 174705.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:IntroSort(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],int,System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]) (Tier1)
         250 (2.00 % of base) : 178550.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         238 (1.82 % of base) : 301720.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         234 (1.77 % of base) : 563496.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         229 (2.08 % of base) : 341984.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
         222 (1.76 % of base) : 116585.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         221 (1.76 % of base) : 512689.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -606 (-4.51 % of base) : 361858.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -516 (-2.71 % of base) : 85011.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
        -507 (-2.66 % of base) : 57968.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
        -421 (-5.54 % of base) : 92259.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
        -339 (-2.14 % of base) : 217924.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:Write(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo):this (Tier1)
        -318 (-5.26 % of base) : 333758.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -297 (-2.98 % of base) : 356409.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
        -256 (-2.37 % of base) : 643639.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
        -234 (-1.70 % of base) : 471003.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -218 (-6.49 % of base) : 625924.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindSubcaptures[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong]](System.ReadOnlySpan`1[ushort],int,int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+Registers[ulong]:this (Tier1)
        -204 (-3.25 % of base) : 334628.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -201 (-2.23 % of base) : 635819.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
        -196 (-1.87 % of base) : 77828.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -196 (-1.87 % of base) : 37565.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
        -183 (-3.68 % of base) : 167549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:EqualsComplicatedCases(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,int):ubyte:this (Tier1)
        -160 (-0.99 % of base) : 323655.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
        -151 (-2.90 % of base) : 334721.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],int]:MergeSortCooperatively():this (Tier1)
        -144 (-2.20 % of base) : 335252.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:MergeSortCooperatively():this (Tier1)
        -142 (-1.62 % of base) : 619668.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (Tier1)
        -135 (-3.98 % of base) : 76917.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)

Top method regressions (percentages):
          30 (33.33 % of base) : 425263.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (Tier1)
          16 (21.05 % of base) : 198786.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (Tier1)
         102 (19.21 % of base) : 429709.dasm - System.Text.EncodingTable:InternalGetCodePageFromName(System.String):int (Tier1)
           6 (17.14 % of base) : 357620.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (Tier1)
           8 (16.33 % of base) : 615509.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (16.33 % of base) : 82667.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (16.33 % of base) : 172392.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (16.33 % of base) : 57031.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.ReadOnlySpan`1[ushort]):int (Tier1)
           9 (16.07 % of base) : 63774.dasm - <PrivateImplementationDetails>:ComputeStringHash(System.String):uint (Tier1)
          10 (15.38 % of base) : 59319.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 614408.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 653465.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 106999.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 49334.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 82178.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           9 (15.00 % of base) : 165674.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
           8 (14.81 % of base) : 617628.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (14.81 % of base) : 170911.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (Tier1)
           8 (13.79 % of base) : 679256.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
           8 (13.79 % of base) : 680616.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)

Top method improvements (percentages):
          -6 (-10.00 % of base) : 342068.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (Tier1)
         -33 (-9.09 % of base) : 335254.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:Dispose():this (Tier1)
         -33 (-9.09 % of base) : 333823.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
         -33 (-9.09 % of base) : 334711.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],int]:Dispose():this (Tier1)
         -33 (-9.09 % of base) : 334648.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,int],System.Linq.Parallel.Pair`2[int,int]]:Dispose():this (Tier1)
          -4 (-8.51 % of base) : 470271.dasm - System.Numerics.Tests.MyBigIntImp:IsZero(ubyte[]):ubyte (Tier1)
         -11 (-8.46 % of base) : 288551.dasm - System.Formats.Asn1.AsnDecoder:ReverseBitsPerByte(System.Span`1[ubyte]) (Tier1-OSR)
         -25 (-8.45 % of base) : 178355.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -25 (-8.45 % of base) : 360855.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -25 (-8.45 % of base) : 385175.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -25 (-8.45 % of base) : 235038.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -25 (-8.45 % of base) : 590533.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -24 (-8.14 % of base) : 103600.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -24 (-8.14 % of base) : 141254.dasm - System.MulticastDelegate:GetInvocationList():System.Delegate[]:this (Tier1)
         -12 (-8.11 % of base) : 312242.dasm - System.Linq.Enumerable+ListPartition`1[ubyte]:Fill(System.Collections.Generic.IList`1[ubyte],System.Span`1[ubyte],int) (Tier1-OSR)
         -76 (-7.76 % of base) : 524392.dasm - System.Numerics.BigIntegerCalculator:Divide(System.Span`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
         -31 (-7.64 % of base) : 68157.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Tier1)
          -8 (-7.55 % of base) : 471817.dasm - System.Text.ValueStringBuilder:Append(ulong,int):this (Tier1-OSR)
          -8 (-7.55 % of base) : 471589.dasm - System.Text.ValueStringBuilder:Append(ulong,int):this (Tier1-OSR)
         -25 (-7.46 % of base) : 297811.dasm - System.Globalization.DateTimeFormatInfoScanner:GetFormatFlagUseSpaceInDayNames(System.String[],System.String[]):int (Tier1)


librariestestsnotieredcompilation.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 137059674 (overridden on cmd)
Total bytes of diff: 137054667 (overridden on cmd)
Total bytes of delta: -5007 (-0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         795 : 60087.dasm (2.80 % of base)
         292 : 271634.dasm (2.37 % of base)
         251 : 186242.dasm (8.40 % of base)
         217 : 315592.dasm (5.12 % of base)
         191 : 156575.dasm (6.70 % of base)
         178 : 18981.dasm (9.09 % of base)
         177 : 18971.dasm (7.43 % of base)
         173 : 7093.dasm (2.82 % of base)
         156 : 125512.dasm (7.94 % of base)
         155 : 44030.dasm (5.66 % of base)
         155 : 49742.dasm (5.66 % of base)
         155 : 5589.dasm (5.66 % of base)
         153 : 46611.dasm (6.14 % of base)
         153 : 7157.dasm (6.53 % of base)
         145 : 63095.dasm (3.89 % of base)
         142 : 50959.dasm (2.33 % of base)
         139 : 187521.dasm (8.26 % of base)
         132 : 187762.dasm (3.39 % of base)
         117 : 45098.dasm (1.85 % of base)
         115 : 52477.dasm (3.08 % of base)

Top file improvements (bytes):
       -1052 : 183325.dasm (-6.88 % of base)
        -163 : 190612.dasm (-2.68 % of base)
        -148 : 315809.dasm (-4.31 % of base)
        -135 : 22145.dasm (-3.96 % of base)
        -120 : 25343.dasm (-4.24 % of base)
        -111 : 95661.dasm (-1.05 % of base)
        -106 : 152070.dasm (-6.17 % of base)
        -106 : 153651.dasm (-6.15 % of base)
        -100 : 99636.dasm (-1.54 % of base)
         -83 : 21546.dasm (-4.87 % of base)
         -80 : 179022.dasm (-3.95 % of base)
         -78 : 7085.dasm (-3.07 % of base)
         -75 : 58812.dasm (-5.99 % of base)
         -70 : 60086.dasm (-1.16 % of base)
         -67 : 50857.dasm (-2.78 % of base)
         -67 : 45021.dasm (-2.80 % of base)
         -67 : 187918.dasm (-4.06 % of base)
         -65 : 203123.dasm (-4.30 % of base)
         -62 : 203122.dasm (-4.14 % of base)
         -60 : 100110.dasm (-2.22 % of base)

97 total files with Code Size differences (56 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         795 (2.80 % of base) : 60087.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         292 (2.37 % of base) : 271634.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteNumbers(System.Text.Json.JsonWriterOptions,System.String):this (FullOpts)
         251 (8.40 % of base) : 186242.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
         217 (5.12 % of base) : 315592.dasm - System.Threading.Tasks.Tests.TaskRtTests:RunFromResult() (FullOpts)
         191 (6.70 % of base) : 156575.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
         178 (9.09 % of base) : 18981.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsRef2D_ClearMarshalling(byref,int,int[]) (FullOpts)
         177 (7.43 % of base) : 18971.dasm - LibraryImportGenerator.IntegrationTests.NativeExportsNE+MarshallingFails:NegateBoolsOut2D(SharedTypes.BoolStruct[][],int,int[],byref) (FullOpts)
         173 (2.82 % of base) : 7093.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
         156 (7.94 % of base) : 125512.dasm - System.Globalization.Tests.PersianCalendarTests:CalendarConversion():this (FullOpts)
         155 (5.66 % of base) : 44030.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         155 (5.66 % of base) : 49742.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         155 (5.66 % of base) : 5589.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         153 (6.14 % of base) : 46611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         153 (6.53 % of base) : 7157.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         145 (3.89 % of base) : 63095.dasm - System.Xml.Serialization.TempAssembly:GenerateSerializerToStream(System.Xml.Serialization.XmlMapping[],System.Type[],System.String,System.Reflection.Assembly,System.Collections.Hashtable,System.IO.Stream):ubyte (FullOpts)
         142 (2.33 % of base) : 50959.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         139 (8.26 % of base) : 187521.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
         132 (3.39 % of base) : 187762.dasm - System.Reflection.TypeLoading.RoType:GetMemberImpl(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
         117 (1.85 % of base) : 45098.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         115 (3.08 % of base) : 52477.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetRewrittenAttributeConstructorArguments(byref,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]:this (FullOpts)

Top method improvements (bytes):
       -1052 (-6.88 % of base) : 183325.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
        -163 (-2.68 % of base) : 190612.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateMethodDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
        -148 (-4.31 % of base) : 315809.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
        -135 (-3.96 % of base) : 22145.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
        -120 (-4.24 % of base) : 25343.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
        -111 (-1.05 % of base) : 95661.dasm - System.Data.Tests.DataTableTest2:GetChanges_ByDataRowState():this (FullOpts)
        -106 (-6.17 % of base) : 152070.dasm - System.SpanTests.ReadOnlySpanTests:OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared(int) (FullOpts)
        -106 (-6.15 % of base) : 153651.dasm - System.SpanTests.SpanTests:OnSequenceEqualOfEqualSpansMakeSureEveryElementIsCompared(int) (FullOpts)
        -100 (-1.54 % of base) : 99636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -83 (-4.87 % of base) : 21546.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (FullOpts)
         -80 (-3.95 % of base) : 179022.dasm - System.Xml.Xsl.Runtime.XmlQueryContext:InvokeXsltLateBoundFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem][]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]:this (FullOpts)
         -78 (-3.07 % of base) : 7085.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
         -75 (-5.99 % of base) : 58812.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:FilterInvalidMembers(System.Reflection.MemberInfo[]):System.Reflection.MemberInfo[] (FullOpts)
         -70 (-1.16 % of base) : 60086.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         -67 (-2.78 % of base) : 50857.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
         -67 (-2.80 % of base) : 45021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
         -67 (-4.06 % of base) : 187918.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -65 (-4.30 % of base) : 203123.dasm - System.Numerics.BigInteger:RotateLeft(System.Numerics.BigInteger,int):System.Numerics.BigInteger (FullOpts)
         -62 (-4.14 % of base) : 203122.dasm - System.Numerics.BigInteger:RotateRight(System.Numerics.BigInteger,int):System.Numerics.BigInteger (FullOpts)
         -60 (-2.22 % of base) : 100110.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)

Top method regressions (percentages):
          30 (33.33 % of base) : 99226.dasm - System.Text.EncodingTable:CompareOrdinal(System.String,System.String,int,int):int (FullOpts)
          16 (21.05 % of base) : 69368.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:TryAddToAnyFast(System.Collections.Concurrent.BlockingCollection`1[int][],int):int (FullOpts)
           8 (18.60 % of base) : 123295.dasm - System.Formats.Tar.TarHeader:Checksum(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           6 (17.65 % of base) : 235356.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:SequenceFill(System.Span`1[ubyte]) (FullOpts)
           6 (17.14 % of base) : 151136.dasm - System.Buffers.Text.Tests.FormatterTests:CanaryFill(System.Span`1[ubyte]) (FullOpts)
           8 (16.00 % of base) : 208070.dasm - System.Runtime.Serialization.ObjectToIdCache:GetPrime(int):int (FullOpts)
           8 (15.69 % of base) : 187134.dasm - System.Reflection.TypeLoading.GetTypeCoreCache:ComputeHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           9 (15.00 % of base) : 48484.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 49413.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 5165.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 2433.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 42834.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 43742.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 16843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
           8 (14.81 % of base) : 47358.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
           6 (13.95 % of base) : 142621.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
           8 (12.50 % of base) : 137135.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (12.50 % of base) : 308402.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           8 (12.50 % of base) : 281426.dasm - System.Text.RegularExpressions.RegexCharClass:ParticipatesInCaseConversion(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (12.00 % of base) : 4411.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (percentages):
         -29 (-13.24 % of base) : 51683.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
         -29 (-13.24 % of base) : 7661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
         -11 (-12.64 % of base) : 1563.dasm - SharedTypes.ComInterfaces.IIntArrayImpl:Double(int[],int):this (FullOpts)
         -24 (-11.82 % of base) : 4870.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -24 (-11.82 % of base) : 49142.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -24 (-11.82 % of base) : 43488.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
          -4 (-11.43 % of base) : 137873.dasm - System.IO.Tests.MemoryStream_TryGetBufferTests:FillWithData(ubyte[]):ubyte[] (FullOpts)
         -15 (-11.11 % of base) : 94221.dasm - System.Data.DataKey:GetKeyValues(int):System.Object[]:this (FullOpts)
          -9 (-10.34 % of base) : 94203.dasm - System.Data.ConstraintCollection:CompareArrays(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
          -6 (-10.00 % of base) : 144400.dasm - System.Linq.SingleLinkedNode`1[int]:FillReversed(System.Span`1[int]):this (FullOpts)
          -4 (-8.51 % of base) : 203058.dasm - System.Numerics.Tests.MyBigIntImp:IsZero(ubyte[]):ubyte (FullOpts)
         -12 (-8.33 % of base) : 94169.dasm - System.Data.DataKey:ColumnsEqual(System.Data.DataColumn[],System.Data.DataColumn[]):ubyte (FullOpts)
         -31 (-8.27 % of base) : 96079.dasm - System.Data.DataRow:SetKeyValues(System.Data.DataKey,System.Object[]):this (FullOpts)
          -4 (-8.16 % of base) : 161081.dasm - System.Net.Mail.Tests.MessageEncodeHeadersTest:ContainsNonAscii(System.String):ubyte:this (FullOpts)
         -10 (-7.69 % of base) : 161015.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
         -10 (-7.69 % of base) : 160268.dasm - System.Net.Mime.MailBnfHelper:CreateCharactersAllowedInComments():ubyte[] (FullOpts)
         -22 (-7.67 % of base) : 11659.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (FullOpts)
         -42 (-7.55 % of base) : 81339.dasm - System.ComponentModel.AttributeCollection:FromExisting(System.ComponentModel.AttributeCollection,System.Attribute[]):System.ComponentModel.AttributeCollection (FullOpts)
          -4 (-7.55 % of base) : 102765.dasm - System.Diagnostics.PerformanceData.PerfProviderCollection:ValidateCounterType(int):ubyte (FullOpts)
          -6 (-7.50 % of base) : 152249.dasm - System.SpanTests.SpanTests:ArrayReverse[ubyte](ubyte[],int,int) (FullOpts)


realworld.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14130524 (overridden on cmd)
Total bytes of diff: 14131631 (overridden on cmd)
Total bytes of delta: 1107 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         170 : 18453.dasm (3.28 % of base)
         157 : 17123.dasm (1.97 % of base)
         154 : 34521.dasm (1.46 % of base)
         153 : 23449.dasm (6.55 % of base)
         146 : 16352.dasm (1.80 % of base)
         118 : 16855.dasm (3.16 % of base)
         116 : 21051.dasm (4.47 % of base)
          99 : 22233.dasm (1.64 % of base)
          94 : 20558.dasm (1.25 % of base)
          94 : 3169.dasm (1.54 % of base)
          91 : 20272.dasm (9.53 % of base)
          84 : 5330.dasm (1.33 % of base)
          84 : 22079.dasm (2.17 % of base)
          65 : 20191.dasm (7.60 % of base)
          63 : 27981.dasm (1.12 % of base)
          63 : 34999.dasm (3.42 % of base)
          61 : 21005.dasm (2.11 % of base)
          61 : 317.dasm (4.02 % of base)
          60 : 15694.dasm (2.69 % of base)
          60 : 30168.dasm (3.69 % of base)

Top file improvements (bytes):
        -137 : 28257.dasm (-3.30 % of base)
         -88 : 32754.dasm (-1.25 % of base)
         -74 : 2167.dasm (-4.69 % of base)
         -73 : 17028.dasm (-1.85 % of base)
         -67 : 22072.dasm (-2.77 % of base)
         -59 : 18444.dasm (-1.97 % of base)
         -54 : 2949.dasm (-0.47 % of base)
         -53 : 23516.dasm (-6.39 % of base)
         -47 : 21802.dasm (-2.48 % of base)
         -47 : 32750.dasm (-2.59 % of base)
         -43 : 16202.dasm (-0.51 % of base)
         -41 : 17033.dasm (-1.14 % of base)
         -40 : 23620.dasm (-1.93 % of base)
         -37 : 33243.dasm (-0.61 % of base)
         -37 : 23995.dasm (-0.56 % of base)
         -35 : 32435.dasm (-0.57 % of base)
         -34 : 17035.dasm (-3.44 % of base)
         -34 : 36325.dasm (-3.32 % of base)
         -34 : 15134.dasm (-1.20 % of base)
         -31 : 28009.dasm (-0.69 % of base)

92 total files with Code Size differences (52 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         170 (3.28 % of base) : 18453.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
         157 (1.97 % of base) : 17123.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         154 (1.46 % of base) : 34521.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         153 (6.55 % of base) : 23449.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnification(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         146 (1.80 % of base) : 16352.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         118 (3.16 % of base) : 16855.dasm - Microsoft.ML.Transforms.NormalizingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.NormalizingEstimator+ColumnOptionsBase[]):Microsoft.ML.Transforms.NormalizingTransformer (FullOpts)
         116 (4.47 % of base) : 21051.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
          99 (1.64 % of base) : 22233.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
          94 (1.54 % of base) : 3169.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
          94 (1.25 % of base) : 20558.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
          91 (9.53 % of base) : 20272.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
          84 (1.33 % of base) : 5330.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
          84 (2.17 % of base) : 22079.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
          65 (7.60 % of base) : 20191.dasm - Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString:FromSource(System.String):Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString (FullOpts)
          63 (1.12 % of base) : 27981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
          63 (3.42 % of base) : 34999.dasm - System.Management.Automation.MemberInvocationLoggingOps:LogMemberInvocation(System.String,System.String,System.Object[]) (FullOpts)
          61 (2.11 % of base) : 21005.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)
          61 (4.02 % of base) : 317.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
          60 (3.69 % of base) : 30168.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          60 (2.69 % of base) : 15694.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)

Top method improvements (bytes):
        -137 (-3.30 % of base) : 28257.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)
         -88 (-1.25 % of base) : 32754.dasm - System.Management.Automation.LanguagePrimitives:RebuildConversionCache() (FullOpts)
         -74 (-4.69 % of base) : 2167.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -73 (-1.85 % of base) : 17028.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
         -67 (-2.77 % of base) : 22072.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveWorseMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):this (FullOpts)
         -59 (-1.97 % of base) : 18444.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+Options,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
         -54 (-0.47 % of base) : 2949.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
         -53 (-6.39 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintKindsForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
         -47 (-2.48 % of base) : 21802.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttributes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData[],Microsoft.CodeAnalysis.CSharp.BoundAttribute[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -47 (-2.59 % of base) : 32750.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
         -43 (-0.51 % of base) : 16202.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
         -41 (-1.14 % of base) : 17033.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
         -40 (-1.93 % of base) : 23620.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintTypesForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
         -37 (-0.56 % of base) : 23995.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference,Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+FieldInfo]) (FullOpts)
         -37 (-0.61 % of base) : 33243.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -35 (-0.57 % of base) : 32435.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         -34 (-3.44 % of base) : 17035.dasm - Microsoft.ML.Numeric.Optimizer+OptimizerState:MapDirByInverseHessian():this (FullOpts)
         -34 (-1.20 % of base) : 15134.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerUtilities:SecondPass[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle) (FullOpts)
         -34 (-3.32 % of base) : 36325.dasm - System.Management.Automation.ComInterop.ComBinderHelpers:ProcessArgumentsForCom(System.Management.Automation.ComInterop.ComMethodDesc,byref,System.Collections.Generic.List`1[System.Linq.Expressions.ParameterExpression],System.Collections.Generic.List`1[System.Linq.Expressions.Expression]):ubyte[] (FullOpts)
         -31 (-0.69 % of base) : 28009.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeTestsAndBindingsForRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundDagTemp,Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundPatternBinding]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests:this (FullOpts)

Top method regressions (percentages):
           9 (15.00 % of base) : 18835.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (FullOpts)
           9 (15.00 % of base) : 14537.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (FullOpts)
           8 (14.81 % of base) : 31044.dasm - System.Reflection.Internal.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          23 (14.74 % of base) : 13917.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilder:TryGetSlotOfFileName(System.String):Microsoft.FSharp.Core.FSharpOption`1[int]:this (FullOpts)
           9 (14.06 % of base) : 16548.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (FullOpts)
           6 (13.95 % of base) : 1008.dasm - System.Linq.Enumerable:Sum[double,double](System.ReadOnlySpan`1[double]):double (FullOpts)
           8 (13.79 % of base) : 16144.dasm - Microsoft.ML.Internal.Utilities.HashArray`1+HashHelpers[float]:GetPrime(int):int (FullOpts)
          17 (12.69 % of base) : 5193.dasm - Microsoft.FSharp.Collections.ArrayModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):ubyte (FullOpts)
           6 (12.00 % of base) : 18677.dasm - Microsoft.CodeAnalysis.CommandLineParser:<IsOptionName>g__isAllAscii|17_0(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           7 (11.11 % of base) : 20898.dasm - Roslyn.Utilities.StringTable:TextEqualsASCII(System.String,System.ReadOnlySpan`1[ubyte]):ubyte (FullOpts)
           6 (10.71 % of base) : 384.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          24 (10.67 % of base) : 36090.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
           8 (10.53 % of base) : 20896.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
           8 (10.13 % of base) : 1499.dasm - DemoBenchmarks.CollisionBatcherTaskBenchmarks:<Setup>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
           8 (10.13 % of base) : 1099.dasm - DemoBenchmarks.Sweeper:<.ctor>g__GetRandomShapeTypeIndex|6_0(System.Span`1[float],byref):BepuPhysics.Collidables.TypedIndex (FullOpts)
          11 (10.00 % of base) : 16654.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.ReadOnlyMemory`1[ushort]]:ToArray():System.ReadOnlyMemory`1[ushort][]:this (FullOpts)
          91 (9.53 % of base) : 20272.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (FullOpts)
          21 (9.42 % of base) : 6102.dasm - FSharp.Compiler.TypedTreeBasics:arrayPathEq(System.String[],System.String[]):ubyte (FullOpts)
           6 (8.70 % of base) : 16327.dasm - Microsoft.ML.Internal.Utilities.FloatUtils:IsFinite(System.ReadOnlySpan`1[float]):ubyte (FullOpts)
           8 (8.33 % of base) : 18476.dasm - System.Linq.Enumerable:Sum[int,int](System.ReadOnlySpan`1[int]):int (FullOpts)

Top method improvements (percentages):
         -29 (-13.24 % of base) : 24368.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.IndexedTypeParameterSymbol:GrowPool(int) (FullOpts)
         -24 (-11.82 % of base) : 19002.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AbstractLexer:GetErrors(int):Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]:this (FullOpts)
         -29 (-8.24 % of base) : 20238.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|12_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
         -22 (-7.67 % of base) : 26048.dasm - Microsoft.CodeAnalysis.BitVector:IntersectWith(byref):ubyte:this (FullOpts)
         -15 (-6.44 % of base) : 16830.dasm - Microsoft.ML.Internal.Utilities.NormStr+Pool:GrowTable():this (FullOpts)
         -53 (-6.39 % of base) : 23516.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MergeConstraintKindsForPartialDeclarations(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause]:this (FullOpts)
          -3 (-6.38 % of base) : 21175.dasm - Roslyn.Utilities.Hash:CombineFNVHash(int,System.String):int (FullOpts)
          -3 (-6.12 % of base) : 16839.dasm - Microsoft.ML.Data.VectorDataViewType:ComputeSize(System.Collections.Immutable.ImmutableArray`1[int]):int (FullOpts)
         -16 (-6.06 % of base) : 16096.dasm - Microsoft.ML.Data.TextLoader+Parser:ProcessItems(Microsoft.ML.Data.TextLoader+RowSet,int,ubyte[],Microsoft.ML.Data.TextLoader+Parser+FieldSet,int,long):this (FullOpts)
          -3 (-6.00 % of base) : 30396.dasm - Roslyn.Utilities.Hash:GetFNVHashCode(System.Collections.Immutable.ImmutableArray`1[ubyte]):int (FullOpts)
         -10 (-5.92 % of base) : 14524.dasm - System.Reflection.Metadata.MetadataReader:CombineRowCounts(int[],int[],ubyte):int[] (FullOpts)
          -4 (-5.88 % of base) : 1001.dasm - System.Linq.EnumerableSorter`1[double]:ComputeMap(double[],int):int[]:this (FullOpts)
          -4 (-5.88 % of base) : 600.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (FullOpts)
          -4 (-5.80 % of base) : 33223.dasm - System.Globalization.CultureData:ReescapeWin32Strings(System.String[]):System.String[] (FullOpts)
          -3 (-5.77 % of base) : 345.dasm - System.Enum:AreSequentialFromZero[uint](uint[]):ubyte (FullOpts)
          -3 (-5.66 % of base) : 3066.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:GetCountNoLocks():int:this (FullOpts)
          -3 (-5.66 % of base) : 22356.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,ubyte]:GetCountNoLocks():int:this (FullOpts)
          -3 (-5.66 % of base) : 891.dasm - System.Reflection.Emit.DynamicResolver:CalculateNumberOfExceptions(System.Reflection.Emit.__ExceptionInfo[]):int (FullOpts)
          -3 (-5.56 % of base) : 31999.dasm - System.Reflection.Metadata.Ecma335.MetadataSizes:ComputeNonEmptyTableMask(System.Collections.Immutable.ImmutableArray`1[int]):ulong (FullOpts)
          -3 (-5.56 % of base) : 1853.dasm - System.Resources.FastResourceComparer:HashFunction(System.String):int (FullOpts)


smoke_tests.nativeaot.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 4880142 (overridden on cmd)
Total bytes of diff: 4878530 (overridden on cmd)
Total bytes of delta: -1612 (-0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         138 : 11387.dasm (1.59 % of base)
          76 : 6274.dasm (6.99 % of base)
          54 : 11965.dasm (5.00 % of base)
          38 : 19731.dasm (8.46 % of base)
          38 : 6434.dasm (8.46 % of base)
          38 : 14893.dasm (8.44 % of base)
          38 : 22367.dasm (8.46 % of base)
          38 : 17084.dasm (8.46 % of base)
          38 : 2056.dasm (8.46 % of base)
          28 : 6493.dasm (11.81 % of base)
          25 : 5649.dasm (4.84 % of base)
          25 : 17769.dasm (4.84 % of base)
          25 : 20404.dasm (4.84 % of base)
          25 : 23050.dasm (4.84 % of base)
          25 : 2660.dasm (4.84 % of base)
          24 : 11442.dasm (10.76 % of base)
          24 : 7362.dasm (13.87 % of base)
          24 : 12457.dasm (13.87 % of base)
          22 : 23332.dasm (5.77 % of base)
          22 : 23334.dasm (6.06 % of base)

Top file improvements (bytes):
         -55 : 6116.dasm (-2.57 % of base)
         -43 : 14752.dasm (-2.23 % of base)
         -43 : 11376.dasm (-2.23 % of base)
         -42 : 32355.dasm (-3.27 % of base)
         -35 : 6149.dasm (-0.63 % of base)
         -32 : 5036.dasm (-7.37 % of base)
         -32 : 14918.dasm (-0.58 % of base)
         -32 : 11903.dasm (-0.58 % of base)
         -30 : 32363.dasm (-3.87 % of base)
         -30 : 31937.dasm (-1.08 % of base)
         -30 : 31938.dasm (-1.67 % of base)
         -30 : 5034.dasm (-10.38 % of base)
         -26 : 30040.dasm (-7.28 % of base)
         -25 : 10004.dasm (-6.33 % of base)
         -23 : 17399.dasm (-6.39 % of base)
         -23 : 20017.dasm (-6.39 % of base)
         -23 : 22651.dasm (-6.39 % of base)
         -23 : 2313.dasm (-6.39 % of base)
         -21 : 9999.dasm (-7.69 % of base)
         -20 : 11395.dasm (-2.66 % of base)

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

Top method regressions (bytes):
         138 (1.59 % of base) : 11387.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
          76 (6.99 % of base) : 6274.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          54 (5.00 % of base) : 11965.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (FullOpts)
          38 (8.46 % of base) : 19731.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          38 (8.46 % of base) : 6434.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          38 (8.44 % of base) : 14893.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          38 (8.46 % of base) : 22367.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          38 (8.46 % of base) : 17084.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          38 (8.46 % of base) : 2056.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)
          28 (11.81 % of base) : 6493.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
          25 (4.84 % of base) : 5649.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          25 (4.84 % of base) : 17769.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          25 (4.84 % of base) : 20404.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          25 (4.84 % of base) : 23050.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          25 (4.84 % of base) : 2660.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref) (FullOpts)
          24 (10.76 % of base) : 11442.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
          24 (13.87 % of base) : 7362.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          24 (13.87 % of base) : 12457.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          22 (6.06 % of base) : 23334.dasm - PInvokeTests.Program:IsNULL(PInvokeTests.Program+SequentialStruct[]):ubyte (FullOpts)
          22 (5.77 % of base) : 23332.dasm - PInvokeTests.Program:StructTest_Array(PInvokeTests.Program+SequentialStruct[],int):ubyte (FullOpts)

Top method improvements (bytes):
         -55 (-2.57 % of base) : 6116.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -43 (-2.23 % of base) : 14752.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -43 (-2.23 % of base) : 11376.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -42 (-3.27 % of base) : 32355.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)
         -35 (-0.63 % of base) : 6149.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -32 (-0.58 % of base) : 14918.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -32 (-0.58 % of base) : 11903.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
         -32 (-7.37 % of base) : 5036.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -30 (-10.38 % of base) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -30 (-3.87 % of base) : 32363.dasm - System.Threading.WaitHandle:ObtainSafeWaitHandles(System.ReadOnlySpan`1[System.Threading.WaitHandle],System.Span`1[Microsoft.Win32.SafeHandles.SafeWaitHandle],System.Span`1[long]) (FullOpts)
         -30 (-1.67 % of base) : 31938.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
         -30 (-1.08 % of base) : 31937.dasm - WaitSubsystemTests:SemaphoreTest() (FullOpts)
         -26 (-7.28 % of base) : 30040.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
         -25 (-6.33 % of base) : 10004.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -23 (-6.39 % of base) : 17399.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 20017.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 22651.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 2313.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -21 (-7.69 % of base) : 9999.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -20 (-2.66 % of base) : 11395.dasm - System.DefaultBinder:BindToField(int,System.Reflection.FieldInfo[],System.Object,System.Globalization.CultureInfo):System.Reflection.FieldInfo:this (FullOpts)

Top method regressions (percentages):
          13 (22.81 % of base) : 22701.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          13 (22.81 % of base) : 7812.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          13 (22.81 % of base) : 2396.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          13 (22.81 % of base) : 17479.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          13 (22.81 % of base) : 20069.dasm - System.Globalization.IcuLocaleData:GetString(System.ReadOnlySpan`1[ubyte]):System.String (FullOpts)
          24 (13.87 % of base) : 7362.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          24 (13.87 % of base) : 12457.dasm - System.DateTimeFormat:IsUseGenitiveForm(System.ReadOnlySpan`1[ushort],int,int,ushort):ubyte (FullOpts)
          28 (11.81 % of base) : 6493.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
          24 (10.76 % of base) : 11442.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (FullOpts)
           6 (10.71 % of base) : 17629.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (10.71 % of base) : 22914.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (10.71 % of base) : 7238.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (10.71 % of base) : 20281.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           6 (10.71 % of base) : 2594.dasm - System.IO.PathInternal:IsEffectivelyEmpty(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           7 (10.14 % of base) : 747.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           7 (10.14 % of base) : 4583.dasm - System.Buffers.Latin1CharSearchValues:.ctor(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (8.65 % of base) : 6337.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
           9 (8.65 % of base) : 11712.dasm - Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int (FullOpts)
           9 (8.49 % of base) : 25195.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryComputeBitmap(System.ReadOnlySpan`1[ushort],ulong,byref):ubyte (FullOpts)
          38 (8.46 % of base) : 19731.dasm - System.Globalization.CultureData:NormalizeCultureName(System.String,byref):System.String (FullOpts)

Top method improvements (percentages):
         -30 (-10.38 % of base) : 5034.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -11 (-8.33 % of base) : 8186.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -11 (-8.33 % of base) : 13817.dasm - System.Globalization.DateTimeFormatInfoScanner:ArrayElementsHaveSpace(System.String[]):ubyte (FullOpts)
         -21 (-7.69 % of base) : 9999.dasm - System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:Filter(System.Func`2[System.__Canon,ubyte]):System.Reflection.Runtime.BindingFlagSupport.QueriedMemberList`1[System.__Canon]:this (FullOpts)
         -32 (-7.37 % of base) : 5036.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
         -11 (-7.28 % of base) : 753.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
         -11 (-7.28 % of base) : 21207.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
         -11 (-7.28 % of base) : 15927.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
         -11 (-7.28 % of base) : 18568.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
         -11 (-7.28 % of base) : 3811.dasm - Internal.Runtime.CompilerHelpers.StartupCodeHelpers:GetLoadedModules(Internal.Runtime.TypeManagerHandle[]):int (FullOpts)
         -26 (-7.28 % of base) : 30040.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
         -13 (-6.84 % of base) : 6112.dasm - System.DefaultBinder:FindMostDerivedNewSlotMeth(System.Reflection.MethodBase[],int):System.Reflection.MethodBase (FullOpts)
         -23 (-6.39 % of base) : 17399.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 20017.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 22651.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -23 (-6.39 % of base) : 2313.dasm - System.Collections.Generic.ArraySortHelper`2[System.__Canon,System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -25 (-6.33 % of base) : 10004.dasm - System.DefaultBinder:ExactPropertyBinding(System.Reflection.PropertyInfo[],System.Type,System.Type[]):System.Reflection.PropertyInfo (FullOpts)
          -4 (-6.25 % of base) : 23318.dasm - PInvokeTests.Program+ClosedDelegateCLass:CheckArray(int[],long):ubyte:this (FullOpts)
         -12 (-6.25 % of base) : 11783.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)
         -12 (-6.25 % of base) : 8211.dasm - System.Type:BinarySearch(System.Array,System.Object):int (FullOpts)